【Google Cloud】手を動かして学ぶSecret Manager
この記事で伝えたいこと(ポイント)
- Secret Managerについて説明しているよ
- Secret Managerについてハンズオンしているよ
はじめに
この記事ではGoogle Cloudが提供するSecret Managerを学習していく内容となっています。
主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば修正していく想定です。
Secret Managerとは
ではさっそく、Secret Managerについて見ていきましょう。
公式ドキュメントでは以下のように説明されています。
Secret Manager は、API キー、パスワード、証明書、その他のセンシティブ データを保存するための安全で便利なストレージシステムです。
要するに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にアクセスします。
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の環境変数として以下のように設定できます。
環境変数に設定したシークレットは、Cloud Runの環境変数としてアクセスできますが、Cloud IAMの権限が必要です。
Cloud Runの場合はサービスアカウントにroles/secretmanager.secretAccessor
の権限が必要です。
まとめ
Secret Managerは機密データを保存するためのサービスです。
機密とされる情報を安全に保存することが可能であり、さまざまなサービスと統合して利用できます。
Cloud IAMと連携してアクセスを管理し、シークレットは更新されるたびにバージョンが作成されます。
Discussion