🚀

Cloud RunでSecret Managerの認証情報を取得する方法

2024/01/29に公開

ステップ 1: 秘密をSecret Managerに保存

  1. Google Cloud Console、gcloud CLI、またはSecret Manager APIを使用して、必要な認証情報をSecret Managerに保存します。
  2. 秘密に名前を付け、適切な値(例えば、データベースの接続文字列)を設定します。

ステップ 2: Cloud Runサービスのサービスアカウントに権限を付与

  1. Cloud Runサービスが使用するサービスアカウントにSecret Manager Secret Accessorロールを付与します。これにより、そのサービスアカウントはSecret Managerに保存されている秘密を読み取ることができるようになります。

ステップ 3: Secret Managerクライアントライブラリのインストール

  1. PythonのSecret Managerクライアントライブラリをインストールするために、requirements.txtファイルにgoogle-cloud-secret-managerを追加します。

    google-cloud-secret-manager
    
  2. この依存関係を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_idsecret_idversion_idを適切な値に置き換えて使用してください。

ステップ 5: Cloud Runにデプロイ

アプリケーションをCloud Runにデプロイします。デプロイメントプロセス中に、アプリケーションが使用するサービスアカウントがSecret Manager Secret Accessorロールを持っていることを確認してください。

これらのステップに従って、Cloud Run上のPythonアプリケーションからSecret Managerの認証情報を安全に取得できます。

Discussion