🐕

【Google Cloud】手を動かして学ぶSecret Manager

2025/02/26に公開

この記事で伝えたいこと(ポイント)

  • Secret Managerについて説明しているよ
  • Secret Managerについてハンズオンしているよ

はじめに

この記事ではGoogle Cloudが提供するSecret Managerを学習していく内容となっています。
主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば修正していく想定です。

Secret Managerとは

ではさっそく、Secret Managerについて見ていきましょう。
公式ドキュメントでは以下のように説明されています。

Secret Manager は、API キー、パスワード、証明書、その他のセンシティブ データを保存するための安全で便利なストレージシステムです。

Secret Manager | Google Cloud

要するにSecret Managerは機密データを保存するためのサービスです。
機密とされる情報を安全に保存することが可能であり、さまざまなサービスと統合して利用できます。
Cloud IAMと連携してアクセスを管理し、シークレットは更新されるたびにバージョンが作成されます。

では、どういったケースでSecret Managerを利用するのかを見ていきましょう。

シークレットを管理するサービスとは

Secret Managerは以下のようなケースで利用されます。

  • APIキー
  • パスワード
  • 証明書
  • その他のセンシティブデータ

これらの情報は、アプリケーションの設定ファイルに直接書き込むことはセキュリティ上のリスクが高いため、Secret Managerを利用して安全に管理できます。また、セキュアにコーディングする目的でアプリケーションのソースコードにシークレットを直接埋め込むことも避けるべきです。

そこで、Secret Managerを利用することでアプリケーションから安全にアクセスできます。
Secret Managerはサービスと連携しており例えば、Cloud Runの環境変数としてシークレットを設定できます。

ハンズオン

それでは、実際にSecret Managerを使ってみましょう。
今回は、以下の手順で進めていきます。

1.APIの有効化とセットアップ
2.シークレットを作成する
3.シークレットをセットして取得する
4.シークレットを削除する

1.APIを有効化する

まずはGoogle Cloud Consoleにアクセスします。

Google Cloud console

CloudShellを起動します。

cloudshell

Secret Manager APIを有効化します。

gcloud services enable secretmanager.googleapis.com

リポジトリをクローンします。

git clone https://github.com/ymd65536/SecretManager.git
cd SecretManager/sample/python/

pipを使って必要なライブラリをインストールします。

pip install google-cloud-secret-manager google_crc32c

プロジェクトIDを取得します。

export PROJECT_ID=`gcloud config list --format 'value(core.project)'` && echo $PROJECT_ID

2.シークレットを作成する

まずはシークレットを格納するためのリソースを作成します。

python sample_create_secret.py

実行結果

Created secret: projects/XXXX/secrets/your-secret-id

3.シークレットをセットして取得する

作成したシークレットにデータをセットします。

python sample_set_secret.py
Added secret version: projects/XXXX/secrets/your-secret-id/versions/1
projects/XXXX/secrets/your-secret-id/versions/1

次に、シークレットを取得します。

python sample_get_secret_value.py

実行結果

sample

4.シークレットを削除する

作成したシークレットを削除します。

python sample_delete_secret.py

実行結果

Deleted secret: None

Cloud Runとの連携

Secret ManagerはCloud Runと連携できます。Cloud Runの環境変数として以下のように設定できます。

CloudRunSecretManager

環境変数に設定したシークレットは、Cloud Runの環境変数としてアクセスできますが、Cloud IAMの権限が必要です。
Cloud Runの場合はサービスアカウントにroles/secretmanager.secretAccessorの権限が必要です。

まとめ

Secret Managerは機密データを保存するためのサービスです。
機密とされる情報を安全に保存することが可能であり、さまざまなサービスと統合して利用できます。
Cloud IAMと連携してアクセスを管理し、シークレットは更新されるたびにバージョンが作成されます。

Discussion