コンテナ セキュリティ

GCP、GKE、Anthos でコンテナ環境を保護しましょう。

概要

コンテナ化により、開発チームは開発をスピードアップし、ソフトウェアを効率的にデプロイし、運営規模をこれまでにないほど拡大できます。コンテナ化ワークロードが増えると、構築とデプロイのライフサイクルの各ステージでセキュリティの統合が必要になります。ここでは、3 つの重要な分野で GCP のコンテナ環境を保護する方法(Google Kubernetes Engine または Anthos)を説明します。

インフラストラクチャのセキュリティ

インフラストラクチャのセキュリティとは、コンテナ管理プラットフォームが適切なセキュリティ機能を提供することです。Kubernetes には ID、シークレット、ネットワークを保護するためのセキュリティ機能が含まれています。また、Kubernetes Engine は Cloud IAM、Cloud Audit Logging、Virtual Private Cloud などの GCP のネイティブ機能と、アプリケーション レイヤでのシークレットの暗号化Workload Identity などの GKE 固有の機能を使用し、Google セキュリティの長所をワークロードにもたらします。

ソフトウェアのサプライ チェーン

ソフトウェアのサプライ チェーンの保護とは、コンテナ イメージのデプロイが安全であることを意味します。これはコンテナ イメージに脆弱性がないことと、構築するイメージがデプロイ前に変更されていないことを確保する方法です。

ランタイム セキュリティ

ランタイム セキュリティを使用すると、本番環境で悪意のある動作をするコンテナを特定し、ワークロードの保護に向けて対処できます。

コンテナを実行すると、根本的に異なるセキュリティ モデルを採用できる

簡単なパッチ管理と不変性

簡単なパッチ管理と不変性

コンテナは不変であるため、変更するには新しいイメージをデプロイします。イメージを定期的に再構築することでパッチ管理が簡単にでき、コンテナが次回デプロイされたときにパッチが取得されます。イメージのセキュリティ審査を定期的に行い、環境の全体像を理解できます。

攻撃可能な箇所の削減

攻撃可能な箇所の削減

コンテナはアプリケーションに直接パッケージ化されることが多いため、VM よりもはるかに小さいホスト OS で動作するようになっています。このような最小限のホスト OS により、ワークロードの攻撃可能な箇所が削減されます。

リソースやワークロードの分離

リソースやワークロードの分離

コンテナでは、cgroup と名前空間を使用してストレージ ボリュームなどのリソースを特定のプロセスに簡単に分離できます。GKE Sandbox などのテクノロジーにより、他のアプリケーションとは別に、サブ VM サンドボックスのワークロードを論理的に分離できます。

インフラストラクチャのセキュリティ

コンテナ インフラストラクチャのセキュリティとは、コンテナ化されたサービスを安全に構築するために必要なツールをデベロッパーに提供することです。このような機能は通常、Kubernetes などのコンテナ オーケストレーターに組み込まれています。Google Kubernetes Engine を使用した場合、この機能は Google Cloud の他の機能に加えてネイティブに表示されます。

ID と承認

Google Kubernetes Engine では、Cloud IAM を使用してプロジェクトへのアクセスを管理し、役割ベースのアクセス制御(RBAC)を使用してクラスタと名前空間へのアクセスを管理できます。

監査ロギング

Kubernetes では API 監査ログが自動的に収集されます。Google Kubernetes Engine では Cloud Audit Logging によって API 監査ログが自動的に記録されます。

ネットワーキング

Google Kubernetes Engine で、クラスタ内のポッド間通信を管理するネットワーク ポリシーを作成します。プライベート IP には限定公開クラスタを使用し、Google Kubernetes Engine リソースは共有 VPC に含めます。

コンプライアンス

Google Kubernetes Engine は ISO 27001、ISO 27017、ISO 27108、HIPAA、PCI-DSS などのコンプライアンス認証を多数取得しています。

最小限のホスト OS

Google Kubernetes Engine は、コンテナを実行するために最適化された専用 OS である Container-Optimized OS(COS)をデフォルトで使用します。COS は Google がオープンソースで維持しています。

コンポーネントの自動アップグレード

GKE では、マスターは自動的にパッチが適用されて最新バージョンの Kubernetes にアップグレードされます。また、ノードの自動アップグレードを使用してノードに最新のパッチを自動的に適用することで、セキュリティを最新の状態に保つことができます。

顧客管理の暗号鍵

規制の多い業界では、GKE に保存されているデータの暗号化に使用する鍵をユーザーが制御できる必要があります。顧客管理の暗号鍵を使用している場合、Cloud KMS から鍵を選択して GKE の永続ディスクを保護できます。

アプリケーション レイヤでのシークレットの暗号化

デフォルトでは、Kubernetes のシークレットは平文で保存されます。GKE はこのようなシークレットをディスク上で暗号化し、内部からのアクセスに対してデータをモニタリングします。ただし、環境内の悪意あるアプリケーションからシークレットを保護するためには、それだけでは不十分です。そのため、Cloud KMS で管理する鍵を使用したエンベロープ暗号化により、アプリケーション レイヤでシークレットを暗号化して保護します。

Workload Identity

コンテナ化されたアプリケーションは、それぞれが受け持つ処理を実行するために、データベースなど、他のサービスへの接続が必要になる場合があります。そのためには、アプリケーションはまず、そのようなサービスに対して認証を行う必要があります。Workload Identity は、Google が管理するサービス アカウントを使用して認証情報を共有し、アプリケーション認証に対する最小限の権限の原則に従って認証を行います。

マネージド SSL 証明書

GKE では、HTTPS ロードバランサを SSL 証明書に関連付ける必要があります。このような証明書は、自身で取得、管理、更新することもできますが、Google が自動的に取得、管理、更新するように構成することで、自身で更新する手間を省く(更新忘れを防ぐ)ことができます。

ソフトウェアのサプライ チェーン

ソフトウェアのサプライ チェーンでは、環境内にデプロイされているものを正確に把握します。つまり、コーディング、イメージの作成、デプロイなどのアプリケーションの管理をします。こうした機能は通常、CI / CD パイプラインやコンテナ レジストリ(Google Container Registry など)に、コンテナを本番環境にデプロイする前のアドミッション チェックとして組み込まれています。

安全なマネージド ベースイメージ

Google Container Registry には DebianUbuntu のベースイメージが用意されています。これらのイメージは、Google が定期的にパッチの適用とテストを実施して維持管理しています。このような Google が管理するイメージには、上流のシステムから入手可能な最新のパッチが適用されているため、不明なリポジトリから pull したり、自身でイメージを管理したりしなくても、イメージを容易に最新の状態に保つことができます。

脆弱性スキャン

Google Container Registry には、イメージとパッケージをスキャンして CVE データベースに登録されている既知の脆弱性がないかどうかを調べる、脆弱性スキャン機能があります。

デプロイ ポリシー

Google Kubernetes Engine では、Binary Authorization を使用し、イメージの証明書に基づいて環境にデプロイする内容を制限します。イメージに対しては、証明書または署名の形式で定義した要件を、デプロイの前に要求することができます。定義できる要件は、脆弱性に対するイメージのスキャンや、QA チームによる検証などです。

定期的な構築

コンテナの再構築と再デプロイは定期的に行えるので、ご利用の環境に段階的に提供される最新のパッチを活用できます。

ランタイム セキュリティ

コンテナのランタイム セキュリティとは、ご利用の環境で実行されているコンテナへのセキュリティ脅威をセキュリティ対応チームが検出して対処することです。このような機能は通常、セキュリティ運用ツールに組み込まれています。

モニタリング

Google Kubernetes Engine は Stackdriver と統合されており、ログ解析が簡単にできます。また、Cloud Security Command Center(Cloud SCC)にセキュリティ イベントを書き込むこともできます。

異常なアクティビティの検出

Google パートナー(Aqua SecurityCapsule8StackRoxSysdig SecureTwistlock など)のセキュリティ ソリューションを利用し、Cloud SCC で攻撃を監視して結果を表示できます。

セキュリティ ポリシーの適用

PodSecurityPolicy はオープンソース Kubernetes の機能であり、ポッドの実行方法に対する制約(AppArmor や seccomp といった制約の適用など)を設定することで、セキュリティ ガードレールの作成を支援します。

分離

悪意のあるコンテナが他のコンテナに影響するのを防ぎます。GKE Sandbox はユーザー空間カーネルを使用してシステムコールをインターセプトし、処理することで、デベロッパーがアプリケーションを操作する方法に変更を加えることなく、コンテナに多層防御を追加します。GKE Sandbox は、Google で作成されたオープンソースのプロジェクトである gVisor に基づいています。

リソース

コンテナ セキュリティに固有の詳細情報については、以下をご覧ください。

Google Cloud

使ってみる

無料で体験

GCP を初めてご利用の場合、あらゆる GCP プロダクトを $300 相当の無料クレジットでお試しいただけます。

さらにサポートが必要な場合

Google のエキスパートが、適切なソリューションの構築やお客様のニーズに合ったパートナーの選定をお手伝いいたします。