このトピックでは、シークレット バージョンにアクセスする方法について説明します。シークレット バージョンにアクセスすると、シークレットのコンテンツとシークレット バージョンに関する追加のメタデータが返されます。シークレット バージョンにアクセスする際は、version-id または alias を指定します(割り当てられている場合)。また、"latest"
をバージョンとして指定することにより、シークレットの最新バージョンにもアクセスできます。
必要なロール
シークレット バージョンにアクセスするために必要な権限を取得するには、シークレットに対する Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
シークレット バージョンにアクセス
Console
-
Google Cloud コンソールの [Secret Manager] ページに移動します。
-
[Secret Manager] ページで、シークレットの [名前] をクリックします。
-
[シークレットの詳細] ページの [バージョン] テーブルで、アクセスするシークレット バージョンのロケーションを確認します。
-
[アクション] 列で、[
の詳細] をクリックします。 -
メニューから [シークレット値の表示] をクリックします。
-
シークレットのバージョン値を示すダイアログが表示されます。[完了] をクリックして終了します。
gcloud
Secret Manager をコマンドラインで使用するには、まず Google Cloud CLI のバージョン 378.0.0 以降をインストールまたはアップグレードします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
シークレット バージョンにアクセスします。
$ gcloud secrets versions access version-id --secret="secret-id"
バイナリ シークレット バージョンにアクセスします。
未加工のバイトデータをファイルに書き込むには、--out-file フラグを使用します。
$ gcloud secrets versions access version-id --secret="secret-id" --out-file="path/to/secret"
未加工のバイトを取得するには、Cloud SDK にレスポンスを base64 エンコードとして出力させ、デコードさせます。
$ gcloud secrets versions access version-id --secret="secret-id" --format='get(payload.data)' | tr '_-' '/+' | base64 -d
C#
このコードを実行するには、まず C# 開発環境を設定し、Secret Manager C# SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Go
このコードを実行するには、まず Go 開発環境を設定し、Secret Manager Go SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Java
このコードを実行するには、まず Java 開発環境を設定し、Secret Manager Java SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Secret Manager Node.js SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について確認して、Secret Manager PHP SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Python
このコードを実行するには、まず Python 開発環境を設定し、Secret Manager Python SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Secret Manager Ruby SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
API
次の例では、API の使用を示すために curl を使用します。gcloud auth print-access-token を使用してアクセス トークンを生成できます。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json"
レスポンス payload.data
は、シークレット バージョンの Base64 エンコードされたコンテンツです。jq
ツールを使用してシークレットを抽出する例を次に示します。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
| jq -r ".payload.data" | base64 --decode
リソースの整合性
Secret Manager では、シークレット バージョンを追加してすぐにそのバージョン番号にバージョン番号でアクセスすることは、強整合性のあるオペレーションです。
Secret Manager 内の他のオペレーションには、結果整合性があります。結果整合性のあるオペレーションは、通常は数分以内に収束しますが、数時間かかることもあります。
IAM 権限の伝播には、結果整合性があります。つまり、シークレットのアクセス権の付与または取り消しはすぐには有効にならない場合があります。詳細については、アクセス権の変更の伝播をご覧ください。
次のステップ
- シークレット バージョンにエイリアスを割り当てる方法を学習する。
- シークレット バージョンを無効にする方法を学習する。
- シークレット バージョンを破棄する方法を確認する。