gcp secret managerの使い方
概要
- gcp上にシークレットを補完するもの
- クレデンシャルを共有せずに済むので便利
- シークレットという粒度の中に、バージョンが有り、バージョンに秘密の文章が記されている
- 使用するには事前に
secret manager
のAPIが有効化されている必要がある
インストール
$ python3 -m pip install google-cloud-secret-manager
具体例
シークレットを作成する
$ gcloud secrets create <secret-id> --replication-policy="automatic"
シークレットにバージョンを追加する
ファイルから
$ gcloud secrets versions add <secret-id> --data-file="/path/to/file.txt"
標準入力から
$ echo -n "this is my super secret data" | gcloud secrets versions add <secret-id> --data-file=-
CUIでシークレットのバージョンにアクセスする
cui
$ gcloud secrets versions access <version-id> --secret=<secret-id>
python
from google.cloud import secretmanager
project_id = "starry-lattice-256603"
secret_id = "test-secret-id"
version_id = "latest"
client = secretmanager.SecretManagerServiceClient()
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
response = client.access_secret_version(request={"name": name})
payload = response.payload.data.decode("UTF-8")
print(payload)
"""
this is my super secret data
"""
notebookからシークレットのバージョンにアクセスする
from typing import Dict, List
from google.cloud import secretmanager
from google.colab import auth
auth.authenticate_user()
def get_secret(
secret_name: str,
project_id: str = "starry-lattice-256603",
version: str = "latest",
) -> str:
client = secretmanager.SecretManagerServiceClient()
name = client.secret_version_path(project_id, secret_name, version)
response = client.access_secret_version(request={"name": name})
payload = response.payload.data.decode("UTF-8")
return payload
print(get_secret("test-secret-id"))
"""
this is my super secret data
"""