アプリケーション開発において、データベースのパスワード、APIキー、認証トークンなどの「機密情報」をどう扱うかは頭を悩ませる問題です。
コードに直接書き込むのは危険、環境変数でもセキュリティリスクがある、といった課題があります。
このような機密情報を安全に、かつ効率的に管理するためにGoogle Cloudが提供するのが「Secret Manager(シークレットマネージャー)」です。

Secret Managerは、機密情報の保存、アクセス制御、バージョン管理、監査ログをまとめて提供するフルマネージドサービスです。
今回は、Secret Managerの基本的な使い方から、Cloud RunなどのGCPサービスとの連携方法まで、詳しく解説していきます。
Secret Managerとは?
Secret Managerは、APIキー、パスワード、証明書などの機密情報を安全に保存し、プログラムからアクセスできるようにするフルマネージドのサービスです。
- 集中管理: すべてのシークレットを一元的に管理できます。
- 強力な暗号化: 保存されているシークレットは、Googleが管理する暗号鍵、またはCloud KMSで管理する鍵で自動的に暗号化されます。
- バージョン管理: シークレットの変更履歴を自動的に管理し、以前のバージョンに簡単にロールバックできます。
- アクセス制御: IAM (Identity and Access Management) を使用して、誰がどのシークレットにアクセスできるかを厳密に制御できます。
- 監査ログ: シークレットへのアクセスや変更に関するアクティビティログが自動的に記録されます。
- 自動ローテーション: シークレットを定期的に更新するために活用できる機能も提供されています。
なぜSecret Managerを使う必要性とは?
Secret Managerの基本的な使い方
Secret Managerの使い方は非常にシンプルです。大きく以下のステップで進めます。
- シークレットの作成
- IAMによるアクセス制御
- GCPサービスからのアクセス
1. シークレットの作成
Google Cloud Consoleを使ってシークレットを作成する手順です。
1.Google Cloud Consoleにアクセス: https://console.cloud.google.com/
2.Secret Managerのページへ移動: 左側のナビゲーションメニューから「セキュリティ」>「Secret Manager」を選択します。

3.「シークレットを作成」をクリック: 画面上部の「+ シークレットを作成」ボタンをクリックします。

4.シークレットの詳細を入力:
| 名前 | シークレットの一意な名前を指定します(例: my-database-password) |
| シークレットの値 | 実際に保存したい機密情報(パスワード、APIキーなど)を入力します |
| レプリケーション ポリシー | 作成するシークレットのデータが、Google Cloudのどのリージョンに物理的にコピー(レプリケーション)されるか 主にデータレジデンシー(データの物理的な所在地)に関する厳格なコンプライアンス要件を満たすために使用される設定 |
| 暗号化 | デフォルトではGoogle管理の暗号鍵で暗号化されます。必要に応じてCMEK(顧客管理の暗号鍵)も選択できます |
| ローテーション/通知 | ローテーション期間を設定できます。 設定された期間が経過し、次回のローテーション通知日になると、Secret Manager は指定された Pub/Sub トピックに「このシークレットはローテーションが必要です」というメッセージを送信します |
| 有効期限 | 設定した期限が経過するとシークレットを削除します |
| シークレット バージョンの破棄の遅延 | 設定すると、シークレットバージョンを破棄するリクエストがあったときに、破棄するまでに猶予期間を設けることができ、悪意のある操作や誤操作などに対応できます |
| ラベル | シークレットをカテゴリ分けし、検索やフィルタリング、レポート作成に活用するための「整理整頓のタグ」 |
| アノテーション | シークレットに関するより詳細な情報や、人間や特定のツールが利用するための「メモ書き」のような活用 |
5.「シークレットを作成」をクリック: これで、新しいシークレットが作成され、最初のバージョンが保存されます。
2. IAMによるアクセス制御
誰がどのシークレットにアクセスできるかをIAMで制御します。
1.作成したシークレットのページを開きます

2.シークレットのページで権限タブへ移動: 作成したシークレットの詳細ページを開き、「権限」タブ→『GRANT ACCESS』を選択します

3.アクセスを許可する「プリンシパル」、「ロール」を選択を選択:

4.「保存」をクリック: これで、指定したプリンシパルがシークレットにアクセスできるようになります
まとめ
Google Cloud Secret Managerは、アプリケーションの機密情報を安全かつ効率的に管理するためのツールです。
セキュリティを重視する現代のアプリケーション開発において、Secret Managerは必須のサービスと言えるでしょう。ぜひ活用して、よりセキュアなアプリケーション運用を実現してください。


コメント