🦁
Google Colab上で秘匿情報を安全に使うために、Google Cloud Secret Managerを使う
やりたいこと
- kaggleなどのコンペ参加時にColabで計算して、wandbなどの実験管理ツールを使いたい。
- 現状wandbなどのAPI keyが生のままColabに貼っているので、そのままgithubにpushできない。
- driveにtxtやyamlファイルを置いて管理すると、自分の性格上散らかすと分かっているので、GCPのサービスを使ってバージョンを含めて一括管理したい。
やったこと
- GCPのSecret Managerを使ってAPI keyを秘匿化して、Colabで呼び出した。
やりかた
GCP上の設定
自分のGCPのコンソールを立ち上げて、Secret Manager APIを有効化する。
そのままUI上で作成する。
有効化されているのを確認する。
これで設定は終わり。
Colab上の設定
! pip install google-cloud-secret-manager
でsecret managerのパッケージをインストールして、再起動する。
次に自分のgoogleアカウントを認証する。
from google.colab import auth
auth.authenticate_user()
あとは呼び出すだけ。
from google.cloud import secretmanager
def access_secret(project_id, secret_name, version='latest'):
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
PROJECT_ID = (内緒)
SECRET_NAME = "test"
my_secret = access_secret(PROJECT_ID, SECRET_NAME)
結果
より、無事にAPI keyを呼び出す確認ができた。Secret Managerであれば、バージョンの管理もできるので、以前のAPI keyに戻すことも簡単だし、どこを見に行けばいいのか分かっているので安心して使えるだろう。
Discussion