検索
ニュース

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

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

Share
Tweet
LINE
Hatena

 クラウド/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ユーザーを使わない

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る