0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonからGCP Secret Managerに格納した認証情報を取得する方法

0
Last updated at Posted at 2026-03-15

生成AIのAPIを利用したpythonプログラムを作成するとき、問題になるのはそのAPIの認証情報をどこに格納するかです。

プログラムや設定ファイルにこれらの認証情報を直接記述すると漏洩リスクがあります。さらに最近はGithubなどの外部リポジトリを利用するケースも多くあり、これらのサービスへファイルアップロードするとさらに漏洩リスクが高まります。

そこでこういった認証情報をGCP Secret Managerに格納して実行時に参照させる方式とすることで、プログラムや設定ファイルに認証情報を格納しない方法を紹介します。
(もちろん、GCPへの認証情報も保持しないことを考慮済です)

1. 準備

(1) GCPポータルからSecret Managerの値を登録

GCPポータルのメニューパス:セキュリティ > Secret Managerで値を登録します。
メイン画面に「+ シークレットを作成」リンクがあり、それをクリックすると下記の登録画面が表示されます。

image.png

Secretの名前はプログラムから呼び出すときに使う名前、Secretの値はAPIキーなどの認証情報を入力します。
それ以外の項目はデフォルトのままで利用可能です。

(2) Secret Managerを取得するpythonのライブラリをインストール

pip install google-cloud-secret-manager

2. Pythonプログラムへの実装

pythonのプログラムに次のコードを記述することでGCP Secret Managerの値を取得できるようになります。

ライブラリの呼び出し

import google.auth
from google.cloud import secretmanager

Secret Managerに格納された値を取得するサブ関数(access_secret_version)

このコードでは、pythonプログラムを実行する前にgcloudコマンドで環境設定したGCPのproject_idを使用するようにしています。それによりpythonプログラムへの記述が不要となります。

# デフォルトの認証情報からGCP接続情報およびプロジェクトIDを自動取得
credentials, project_id = google.auth.default()

def access_secret_version(secret_id: str, version_id: str = "latest") -> str:
    client = secretmanager.SecretManagerServiceClient(credentials=credentials)
    name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
    
    response = client.access_secret_version(request={"name": name})
    return response.payload.data.decode("UTF-8")

サブ関数を呼び出してSecret Managerの値を取得する

作成したサブ関数(access_secret_version)を呼び出してSecret Managerの値を取得します。
引数に渡すSECRET_IDは、Secret Managerで登録したキー名です。取得した結果はこのプログラムの変数 secret_valueに格納されます。

    SECRET_ID = "your-secret-name"
    
    try:
        secret_value = access_secret_version(SECRET_ID)
        print(f"取得した値: {secret_value}")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

3. プログラムの実行方法

pythonプログラムを実行する前に、gcloudコマンドを実行して認証およびproject-idを設定します。

step1. gcloudでログイン、対象プロジェクトを割り当て

次のコマンドでGCPへログインおよびproject-idを設定します。

gcloud auth application-default login
gcloud config set project <project-id>

いま割り当てられているプロジェクトは次のコマンドでチェックします

gcloud config get-value project

利用可能なproject-id一覧は次のコマンドでチェックします

gcloud projects list

step2. pythonプログラムを実行

GCP Secret Managerの値を利用して処理するpythonプログラムを実行します

python <プログラム名>

最後に

最近はGithubなどの外部リポジトリサービスを利用する機会が増えたこともあり、プログラムや設定ファイルから認証情報が漏洩するケースが多発しています。
そのようなトラブルを防止するため、ぜひGCP Secret Managerの活用を検討されてみてはいかがでしょうか?

また、私のXアカウントでもAI関連情報を発信しているので、よろしければフォローしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?