Google Cloud Secret Manager の使い方を解説! 機密情報を安全に、簡単に管理する

アプリケーション開発において、データベースのパスワード、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を使う必要性とは?

  • セキュリティの向上: 機密情報をコードやバージョン管理システム(Gitなど)から分離し、安全に保存できます。
  • コンプライアンスの遵守: 多くのセキュリティ基準や規制(GDPR、HIPAAなど)では、機密情報の適切な管理が求められます。Secret Managerはその要件を満たす助けとなります。
  • 運用の簡素化: シークレットの変更やローテーションが容易になり、手動での介入やアプリケーションの再デプロイなしで更新が可能です。
  • 開発体験の向上: 開発者は機密情報の管理方法を心配することなく、アプリケーションのビジネスロジックに集中できます。

Secret Managerの基本的な使い方

Secret Managerの使い方は非常にシンプルです。大きく以下のステップで進めます。

  1. シークレットの作成
  2. IAMによるアクセス制御
  3. 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.「保存」をクリック: これで、指定したプリンシパルがシークレットにアクセスできるようになります

プリンシパル
  • Cloud Runサービスアカウント: Cloud Runサービスがこのシークレットにアクセスする必要がある場合、そのCloud Runサービスに割り当てられているサービスアカウント(例: my-cloud-run-service-account@my-project-id.iam.gserviceaccount.com)を入力します。
  • 開発者アカウント: 特定の開発者がテスト目的でシークレットにアクセスする必要がある場合、その開発者のメールアドレスを入力します。
ロール
  • Secret Manager のシークレット アクセサー(Secret Manager Secret Accessor): これが、シークレットの値にアクセスして読み取るための最小限のロールです。
  • 他にもSecret Manager Admin(シークレットの管理全般)、Secret Manager Secret Version Manager(バージョンの管理)などがありますが、読み取り専用で十分な場合は「シークレット アクセサー」を選択します。

まとめ

Google Cloud Secret Managerは、アプリケーションの機密情報を安全かつ効率的に管理するためのツールです。

  • コードからの分離: 機密情報をコードに直接書き込むリスクを排除します。
  • 厳密なアクセス制御: IAMによって、誰がどの機密情報にアクセスできるかを細かく設定できます。
  • 簡単な連携: Cloud RunなどのGCPサービスと容易に連携し、環境変数としてシークレットをアプリケーションに注入できます。

セキュリティを重視する現代のアプリケーション開発において、Secret Managerは必須のサービスと言えるでしょう。ぜひ活用して、よりセキュアなアプリケーション運用を実現してください。

コメント

タイトルとURLをコピーしました