Member-only story
GKEでのGoogle Secret Managerのシークレットの消費
Google Secret Manager (GSM)は、シークレットの保存、ローテーション、取得のためのGCPの主要なサービスです。GSMのシークレットは、パスワード、トークン、キー、あるいはアプリケーションがエンドポイント、データベース、APIを認証するために必要な任意のランダムな文字列です。
Google Secret Managerは、IAMによる認証ときめ細かいアクセス制御をサポートするグローバルなAPIです。また、監査ログ(誰がどのシークレットにアクセスしたか)、独自のキーを使った暗号化のためのCloud KMSとのインテグレーション、その他多くの機能が利用できます。
Google Kubernetes Engine(GKE)は、GCPが提供するマネージドKubernetesサービスです。GKEについてこれ以上説明する必要はないでしょう!
GKEでGoogle Secret Managerからシークレットを消費(または取得)するには、APIを直接呼び出すか、いくつかのKubernetesネイティブツールやサードパーティのオープンソースソフトウェアを使用するさまざまな方法が使えます。この記事では、GKEとGSMを統合するための5つのオプションを挙げ、それぞれのオプションについて、長所と短所、コードサンプルへのリンクをリストアップしました。
選択肢は、優先順位や複雑さの順に記載されているわけではありません。このドキュメントでは、あなたの会社のセキュリティや運用に関する要件は考慮されていません。これは、各チーム/組織が自分たちのアプリケーション要件とチームの能力に対して評価しなければならないオプションのリストに過ぎません。また長所と短所は私個人の意見であり、Google Cloud の意見ではありません。
オプション#1 APIを使用してGSMからの直接シークレットを取得する
これは最も安全なオプションです。シークレットはポッドのメモリに保存され、ファイルシステムには書き込まれません。このオプションは、ワークロードが必要なシークレットにのみアクセスできるように、Workload Identityを活用することができます。
Googleは主要なプログラミング言語向けにGSM用ライブラリを提供しています。以下のコードサンプルはGolangを使用しています。
長所
- 最も安全なオプションで、シークレットがメモリ内に残る。GSM APIへの呼び出しはHTTPSで保護されている。
- Workload Identityによるきめ細かいアクセスや監査ログに対応する。
短所