Google Colab上で秘匿情報を安全に使うために、Google Cloud Secret Managerを使う

1 min read読了の目安(約1600字

やりたいこと

  • kaggleなどのコンペ参加時にColabで計算して、wandbなどの実験管理ツールを使いたい。
  • 現状wandbなどのAPI keyが生のままColabに貼っているので、そのままgithubにpushできない。
  • driveにtxtやyamlファイルを置いて管理すると、自分の性格上散らかすと分かっているので、GCPのサービスを使ってバージョンを含めて一括管理したい。

やったこと

  • GCPのSecret Managerを使ってAPI keyを秘匿化して、Colabで呼び出した。

やりかた

GCP上の設定

自分のGCPのコンソールを立ち上げて、Secret Manager APIを有効化する。
API有効化

そのままUI上で作成する。
秘匿キー作成

有効化されているのを確認する。
有効化状態

これで設定は終わり。

Colab上の設定

参考googleの公式レポジトリ

! 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に戻すことも簡単だし、どこを見に行けばいいのか分かっているので安心して使えるだろう。