fbpx

Google Anthosでハイブリッドクラウド環境を守る #GKE #GCP #Anthos Config Management #AquaSecurity #DevSecOps

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2019年7月18日に公開された「Hybrid Cloud Security with Google Anthos and Aqua」の日本語翻訳です。

Google Anthosでハイブリッドクラウド環境を保護

コンテナ技術に関して大きな変化があります。コンテナ化された環境に移行するにつれて、自動化ツールの継続的な改善と変更が行われています。企業は多くの場合、一度に複数の本番用Kubernetesクラスタを利用しています。DevOpsチームと運用チームは、これらのクラスタを制御および管理しなければならず、Kubernetesを構成するのは容易ではないため、追加の負担がかかります。運用チームは、この動的インフラストラクチャを管理するための集中型アプローチが可能なツールを探しています。

ただし、これらのクラスタをサポートするために複数のツールとインフラストラクチャを重ねると、システムが膨張して複雑になり、その結果エラーが発生しやすくなります。我々には、これらのリソースを管理し、同時に安全に保つためのより簡単な方法が必要です。

Google Anthosは、Kubernetesクラスタを真のハイブリッドクラウド環境にできるソリューションです。このシナリオでは、Config Managementを使用して、複数のKubernetesクラスタの構成管理の負担を大幅に軽減できます。Config Managementは、GitOpsアプローチによる集中型の(宣言型)構成管理を可能にするGoogle Anthosソリューションのコンポーネントです。一元化されたGitリポジトリは、すべての「登録済み」クラスタの状態を管理する責任を持ちます。設定変更は全てGitにより制御します。

エンタープライズセキュリティプラットフォームとしてのAqua Securityは、Config Managementなどの集中型設定ツールを活用し、それをすべてのGKEまたはGKE On-Premに展開しながら、必要なリソースの種類に応じてきめ細かい制御を維持できます。

Config Managementを使用してAqua Securityの配備と構成を制御することで、次のことを簡単に実現できます。

1.任意のクラスタに対するCI/CDスキャン統合(永続的または一時的)

2.すべてのGKEおよびGKE On-PremノードにまたがるEnforcer(エージェント)の自動配布

  • ホストの脆弱性管理
  • イメージの脆弱性管理
  • ランタイムの制御

3.分散アクセスを使用した集中型シークレット管理

  • ポッドの再起動を必要としないリアルタイムのシークレット更新
  • HashiCorp VaultなどのKMSプロバイダとの統合

4.一元化されたダッシュボード

  • ポリシー設定
  • 監査ログ
  • クラスタ構成の可視化

5.Google Cloud Platformとの統合

  • Google Container Registryのインベントリとスキャン
  • Google Stackdriverのログ統合
  • ユーザーアカウント管理のためのGoogle SAML統合

以下が環境のイメージ図です。

Anthos Config Managementを使用したAqua Securityコンポーネントのデプロイ

:以下のコンテンツはAquaのWebコンソールからの設定方法を記載していますが、AquaCSP Ver4.0から追加されたCLIツール aquactl でも設定が可能です。aquactl はAqua環境の設定を自動化できます。

すべての管理対象クラスタにEnforcerが配置されることを保証するため、最終的にはDaemonsetがAnthos Config Managementに配置する最も重要なコンポーネントとなります。そしてこの例では、すべてのコンポーネントがAnthos Config Managementを介してデプロイされます。

Anthos Config Managementを利用してAqua Securityコンポーネントをデプロイするには、以下を確認してください。

  • 適切なAquaコンポーネントを保持するために単一のaquaネームスペースを利用
  • すべてのServer/Database/Gatewayコンポーネントは、ClusterSelectorを使用して単一のクラスタにデプロイ
  • 異なるAqua Enforcerポリシーを持つ異なるGKEクラスタをターゲットにするために、ClusterSelectorを使用して2つの別々のデーモンセット設定を作成

参考

aqua Config Managementのディレクトリは次のようになります。


│ ├── namespaces
│ │ ├── aqua
│ │ │ ├── csp-registry-secret.yml
│ │ │ ├── db-deployment.yaml
│ │ │ ├── db-password-secret.yaml
│ │ │ ├── db-pvc.yaml
│ │ │ ├── db-service.yaml
│ │ │ ├── enforcer-daemonset-ephemeral-cluster.yml
│ │ │ ├── enforcer-daemonset-gke-op-cluster.yml
│ │ │ ├── gate-deployment.yaml
│ │ │ ├── gate-service.yaml
│ │ │ ├── namespace.yml
│ │ │ ├── serviceaccount.yaml
│ │ │ ├── web-deployment.yaml
│ │ │ └── web-service.yaml

Server/Database/Gatewayコンポーネントには、env:coreというラベルの付いたGKEクラスタ用の適切なClusterSelectorのannotationが付けられています(ラベル付けは運用チームによって任意で利用)。

正しいクラスタを選択するためのmetadata:annotation.


metadata:
annotations:
configmanagement.gke.io/cluster-selector: selector-env-core

異なるEnforcerグループと連携するようにDaemonsetを分離します。Ephemeralクラスタは次のように選択します。


metadata:
annotations:
configmanagement.gke.io/cluster-selector: selector-env-ephemeral

長期利用するクラスタは、次のように選択します。


metadata:
annotations:
configmanagement.gke.io/cluster-selector: selector-gke-op
configmanagement.gke.io/cluster-selector: selector-env-core

Aqua Serverの基本設定が完了したら、適切なDaemonsetマニフェストを生成する2つの別々のEnforcerグループを作成します。

これが2つの別々のEnforcerグループです。

AquaとGoogle Container Registryの統合

Aqua Securityは、Google Container Registryを含む、一般的なすべてのコンテナレジストリをサポートしています。利点は、Aquaスキャナがレジストリ内のすべてのイメージをスキャンし視覚化していることです。CIパイプラインを介してスキャンされるイメージ、またはワーカーノードにpullされるイメージだけに限定されず、イメージのセキュリティの状態に対する継続的な可視性を維持します。AquaへGoogle Container Registryを統合するには、サービスアカウントJSONキー、アクセストークンのいずれかがアクセス用に必要です。

System > Integrations > Image Registries

すべてのイメージがスキャンされると、スキャン結果と脆弱性の情報がこのAquaのダッシュボードに表示されます。

CI/CDパイプラインとの統合

Aquaの機能にはCI/CDパイプラインのスキャンが含まれます。これは多くの統合オプションを備えた強力な機能です。このデモ環境のように、Jenkins用のAqua Security Scanner Pluginを活用することが理想であり、このOpenShift Containerセキュリティブログで概説されているように、開発者はCIパイプラインの任意の段階で脆弱性のフィードバックを受け取ることができます。Aqua MicroScannerもまた、イメージをローカルでビルドする際に、スキャンを実行することができる便利なツールです。ここに掲載されているMicroScannerのブログが大変参考になります。

このデモ環境では、一時的にGKEクラスタを作成し、アプリケーションがビルドおよびデプロイされ、その後にスキャンされています。EnforcerはAuditモードで利用しています。(EnforcerはAudit/Enforcerモードの2つから利用が可能です。前者はポリシーに引っかかるものについて検知するのみ、後者は実際にAquaによって制御されます。)

シークレットの利用

すべてのGKEおよびGKE On-PremクラスタでAqua Enforcerを実行することのもう1つの利点は、EnforcerがAqua Securityによって管理されるシークレットにアクセスできることです。Enforcerが存在する限り、Aquaは、クラスタあるいは他の環境に関係なく、環境変数として、または目的のポッド内のtmpfsファイルとして、あらゆるシークレットを提供できます。この機能は、開発者が展開する新しい各クラスタにシークレットを作成または同期する必要がないことを意味します。さらに、vault-agentをサイドカーとして配置したり、直接APIコールをアプリケーションに書き込んだりするのではなく、HashiCorpのVaultなどのソリューションからシークレットのアクセスをした方が簡単です。

その先の統合へむけて

Google Anthosソリューションにより、Kubernetesクラスタを真のハイブリッドクラウド環境にできる可能性について示しました。Aquaは一元化された設定ツールを活用し、Config Managementを使用してKubernetesクラスタの配置と設定を制御できます。

次回のブログでは、シークレットの配布方法の詳細と、ロギングおよびGoogle SCCとAquaの統合について詳しく説明します。

Shea Stewartによるこのゲスト投稿は、Arctiqブログで最初に公開されました。

New call-to-action
新規CTA