アプリケーション シークレットの管理

このページでは、Google Cloud Deploy を使用して GKE にデプロイするアプリケーションの Secret を管理するためのベスト プラクティスについて説明します。

アプリケーション シークレットをデプロイ アーティファクトに挿入するとセキュリティ リスクが生じるため、Google Cloud Deploy パイプライン内から Secret を管理しないでください。

この方法で使用された Secret は、Google Cloud Deploy の範囲外で生成、管理、ローテーションが行われる必要があります。

このコンテキストで Secret とは、データベース認証情報、API キー、証明書、パスワードなどの機密データを指します。

Kubernetes Secret

Kubernetes Secrets は、Pod とは別に、パスワード、OAuth トークン、SSH 認証鍵などの機密データをクラスタに格納する安全なオブジェクトです。Secret は ConfigMap に似ていますが、機密データを保持するためのものです。

Kubernetes Secrets は、デフォルトでは暗号化されていないため、このドキュメントで説明するアプローチでは使用されません。

Google Cloud Deploy で使用する Secret の管理

このセクションでは、Google Cloud Deploy を使用してデプロイするアプリケーションの Secret を管理する方法について説明します。

GKE での Secret 管理には、次の 2 つの方法があります。

Google Secret Manager

Secret Manager は、API キー、パスワード、その他の機密データを安全に保存するフルマネージドのマルチリージョン Google Cloud サービスです。

Secret Manager の Secret には、クライアント ライブラリWorkload Identity 認証を使用するか、Secrets Store CSI ドライバを使用してアクセスできます。

アプリケーションで Secret Manager を使用するには:

  1. Secret Manager を使用して Secrets Store CSI driver を作成します

  2. SDK を使用して、アプリケーション コードから Secret を参照します。

環境変数(Secret のバージョンなど)やアプリケーション環境(開発環境、ステージング環境、本番環境など)を使用して、環境の追加メタデータを指定できます。

特定の機能のデプロイ プロセスにインフラストラクチャのプロビジョニングが含まれている場合は、アプリケーションをデプロイする前に、プロビジョニング プロセスの一環として Secret Manager を使用して Secret を作成または更新します。

Secret Manager で GKE Secret を管理する方法については、他のプロダクトでの Secret Manager の使用をご覧ください。

HashiCorp Vault

Hashicorp Vault は、Secret を管理するための人気の高い、幅広く使用されているオープンソースのツールです。Google Cloud には、Vault 向けの広範な統合とサポートに加え、Terraform などの他の Hashicorp ツールが用意されています。

Kubernetes クラスタ内で Vault を構成するには、次のようにします。

  1. API を使用して Vault の Secret にアクセスし、Workload Identity を使用して認証する。

  2. Vault エージェントのコンテナを使用して、Kubernetes Pod に Secret を挿入する。

  3. Vault CSI プロバイダを使用して、これらの Secret を使用する。

次のステップ