コンテナを保護するための10のベストプラクティス、InfraCloudが解説コンテナ化されたワークロードのセキュリティリスクを軽減

InfraCloudが、アプリケーションコンテナのセキュリティを確保するための10のベストプラクティスを解説した。

» 2020年08月13日 11時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 クラウド/DevOpsソフトウェアやサービスを手掛けるInfraCloudは2020年7月30日(米国時間)、アプリケーションコンテナのセキュリティを確保し、コンテナ化されたワークロードのセキュリティリスクを軽減するための10のベストプラクティスを公式ブログで解説した。

 概要は以下の通り。

1. 信頼できるリポジトリから入手したベースイメージを使用する

 コンテナイメージを作成する際は、多くの場合、よく知られているプライベートまたはパブリックレジストリから入手したイメージを、ベースイメージとして使用する。だが、そうしたイメージが作られる過程で何者かがバックドアを仕込む可能性がある。このため、以下の点に留意する必要がある。

  • コンテナイメージの作成時には、知名度が高く、信頼できるパブリッシャーの堅固なレジストリからベースイメージを入手する
  • 最新のセキュリティ修正プログラムやパッチを組み込んで頻繁に公開されるイメージを選ぶ
  • 署名やラベルが付けられた(「Notary」や類似のツールによって)イメージを使い、プルの過程でイメージの正当性を確認し、中間者攻撃を阻止する

2. 検証されたパッケージをインストールする

 ベースイメージにインストールされるパッケージも、ベースイメージの場合と同じ理由から、検証された信頼できるソースから入手する必要がある。

3. イメージの攻撃対象領域を最小化する

 攻撃対象領域の大きさは、イメージにインストールされるパッケージとライブラリの数として捉えることができる。これらの数が少ないほど、脆弱(ぜいじゃく)性が存在する可能性も小さくなる。このため、イメージは、アプリケーションのランタイム要件を満たす最小サイズに抑える。1つのアプリケーションコンテナでアプリケーションが1つだけ動作するのが望ましい。

  • 不要なツールやソフトウェアを削除する。その中にはパッケージマネージャ(yum、aptなど)、ネットワークツールおよびクライアント、イメージのシェル、netcat(リバースシェルの作成に使える)などが含まれる
  • マルチステージDockerfileを使い、本番イメージからソフトウェアビルドコンポーネントをなくす
  • コンテナでは、不要なネットワークポートやソケットを開放したり、不要なサービス(SSHデーモンなど)を実行したりしない
  • ベースイメージにはフル機能のOSイメージではなく、アルパインイメージやスクラッチイメージ、コンテナ最適化OSを選ぶ

4. シークレットをイメージに組み込まない

 シークレットはイメージやDockerfileから全て排除する。シークレットには、SSL証明書、パスワード、トークン、APIキーなどがある。これらは外部に置き、コンテナオーケストレーションエンジンや外部のシークレットマネージャによって、安全にマウントされなければならない。シークレットの保護を支援するツールやサービスとして、「Hashicorp Vault」「AWS Secrets Manager」「Kubernetes Secrets」「Docker Secrets Management」「CyberArk」などがある。

5. 安全なプライベートまたはパブリックレジストリを使う

 企業は多くの場合、プロプライエタリなソフトウェアやライブラリを含む独自のベースイメージを使っており、これらを公開しようとしない。こうしたイメージは、安全な信頼できるレジストリでホストし、不正アクセスを防止する。また、TLS証明書と信頼できるルートCAを使用し、強力な認証を実装して、中間者攻撃を防ぐ。

6. コンテナでアプリケーションを実行するのに特権またはrootユーザーを使わない

 特権またはrootユーザーの使用は、コンテナ化されたワークロードで最も一般的な構成ミスだ。最小権限の原則に従って、アプリケーションのユーザーを作成し、これを使ってコンテナ内でアプリケーションプロセスを実行する必要がある。コンテナ内で実行されるプロセスは、コンテナの一部であることを特定するメタデータを持つ以外は、ホストOSで実行されるプロセスと同様だからだ。

注:DockerfileでUSERを定義しないと、一般的に、コンテナはrootユーザーで実行される。

7. CI/CDでイメージの脆弱性スキャンを行う

 コンテナのビルドとデリバリーのCI/CD(継続的インテグレーション/継続的デリバリー)を設計する際に、脆弱性(CVE)を検出するイメージスキャニングソリューションを取り入れ、悪用される恐れがあるイメージは、修正なしでデプロイしないようにする。利用できるツールとして、「Clair」「Synk」「Anchore」「AquaSec」「Twistlock」などがある。「AWS ECR」「Quay.io」など一部のコンテナレジストリは、スキャニングソリューションを備えている。

8. AppArmorのようなカーネルセキュリティプロファイルを有効にする

 「AppArmor」は、OSとアプリケーションをセキュリティの脅威から保護するLinuxのセキュリティモジュールだ。Dockerが提供するAppArmorのデフォルトプロファイルを使って、プログラムにネットワークアクセス、カーネル機能、ファイル権限などの限られたリソースセットを利用させることができる。AppArmorは攻撃対象領域を縮小し、強力な防御を提供する。

9. 中央システムへのリモートロギングを保護する

 コンテナは通常、STDOUTへの全ての出力を保存し、これらのログは、コンテナを終了すると失われる。監査や将来のフォレンジックのために、こうしたログのストリームを中央システムに送ることが重要だ。このロギングシステムを保護し、ログからデータが漏れないようにする必要もある。

10. ランタイムセキュリティのモニタリングシステムをデプロイする

 リポジトリデータを基に脆弱性スキャニングソリューションをデプロイし、必要なあらゆる対策を講じても、被害に遭う可能性は依然としてある。アプリケーションの挙動を継続的にモニタリングし、ログを記録して、悪意あるアクティビティーの防止と検知を図ることが重要だ。

ツール

 InfraCloudは、企業がセキュリティ対策を容易に導入できるように、現状を把握し、参考情報を得るために利用できるオープンソースおよび商用のツールとして、以下を挙げている。

  • docker-bench-security
  • Hadolint Linter for Dockerfile
  • Clair
  • OWASP Cheatsheet
  • OpenSCAP for Container
  • Sysdig Falco
  • AquaSec、Twistlock、Sysdig、Synk、Qualysなどの商用製品

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。