🚀
Cloud RunでSecret Managerの認証情報を取得する方法
ステップ 1: 秘密をSecret Managerに保存
- Google Cloud Console、gcloud CLI、またはSecret Manager APIを使用して、必要な認証情報をSecret Managerに保存します。
- 秘密に名前を付け、適切な値(例えば、データベースの接続文字列)を設定します。
ステップ 2: Cloud Runサービスのサービスアカウントに権限を付与
- Cloud Runサービスが使用するサービスアカウントに
Secret Manager Secret Accessor
ロールを付与します。これにより、そのサービスアカウントはSecret Managerに保存されている秘密を読み取ることができるようになります。
ステップ 3: Secret Managerクライアントライブラリのインストール
-
PythonのSecret Managerクライアントライブラリをインストールするために、
requirements.txt
ファイルにgoogle-cloud-secret-manager
を追加します。google-cloud-secret-manager
-
この依存関係を
requirements.txt
に追加した後、pip install -r requirements.txt
を実行してライブラリをインストールします。
ステップ 4: Pythonアプリケーションで秘密を取得
PythonアプリケーションでSecret Managerから秘密を取得する例:
from google.cloud import secretmanager
def access_secret_version(project_id, secret_id, version_id):
"""
Secret Managerから秘密の値を取得します。
Args:
project_id: Google CloudプロジェクトのID。
secret_id: 取得する秘密のID。
version_id: 秘密のバージョン(通常は"latest"を使用)。
Returns:
秘密の値を文字列で返します。
"""
# Secret Managerクライアントを初期化
client = secretmanager.SecretManagerServiceClient()
# 秘密のリソース名を構築
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
# 秘密の値を取得
response = client.access_secret_version(name=name)
secret_string = response.payload.data.decode("UTF-8")
return secret_string
# 例: 秘密を取得するための関数を呼び出す
project_id = "your-google-cloud-project-id"
secret_id = "your-secret-id"
version_id = "latest" # または特定のバージョン番号
secret_value = access_secret_version(project_id, secret_id, version_id)
# 秘密の値を使用(例: 出力)
print("Secret Value:", secret_value)
このコードスニペットは、特定のプロジェクトのSecret Managerから指定された秘密の値を取得し、それをデコードして返します。project_id
、secret_id
、version_id
を適切な値に置き換えて使用してください。
ステップ 5: Cloud Runにデプロイ
アプリケーションをCloud Runにデプロイします。デプロイメントプロセス中に、アプリケーションが使用するサービスアカウントがSecret Manager Secret Accessor
ロールを持っていることを確認してください。
これらのステップに従って、Cloud Run上のPythonアプリケーションからSecret Managerの認証情報を安全に取得できます。
Discussion