このページでは、シークレット バージョンにアクセスする方法について説明します。シークレット バージョンにアクセスすると、シークレットのコンテンツとシークレット バージョンに関する追加のメタデータが返されます。Google Cloud CLI または Secret Manager API を使用してシークレット バージョンにアクセスするには、バージョン ID またはエイリアス(割り当てられている場合)を指定する必要があります。シークレットの最新バージョンにアクセスするには、バージョン ID として latest
を指定します。
必要なロール
シークレット バージョンにアクセスするために必要な権限を取得するには、シークレットに対する Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
シークレット バージョンにアクセス
シークレットを編集するには、次のいずれかの方法を使用します。
Console
-
Google Cloud コンソールの [Secret Manager] ページに移動します。
-
[Secret Manager] ページで、[リージョン シークレット] タブをクリックし、シークレットをクリックしてバージョンにアクセスします。
-
[シークレットの詳細] ページの [バージョン] タブで、アクセスするシークレット バージョンを選択します。
-
シークレット バージョンに関連付けられている
[アクション] メニューをクリックし、[シークレット値を表示] をクリックします。 -
シークレット バージョンの値を示すダイアログが表示されます。[完了] をクリックしてダイアログを閉じます。
gcloud
シークレット バージョンにアクセス
後述のコマンドデータを使用する前に、次のように置き換えます。
- VERSION_ID: シークレット バージョンのリソース名
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
- LOCATION: シークレットの Google Cloud ロケーション
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
Windows(PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
Windows(cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION
バイナリ シークレット バージョンにアクセスする
未加工バイトをファイルに書き込むには、--out-file フラグを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- VERSION_ID: シークレットのバージョンの ID
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
- LOCATION: シークレットの Google Cloud ロケーション
- PATH_TO_SECRET: 取得したシークレット値を保存する完全パス(ファイル名を含む)
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
Windows(PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
Windows(cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --out-file="PATH_TO_SECRET"
未加工のバイトを取得する
未加工のバイトを取得するには、Cloud SDK にレスポンスを base64 エンコードとして出力させ、デコードさせます。
後述のコマンドデータを使用する前に、次のように置き換えます。
- VERSION_ID: シークレットのバージョンの ID
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
- LOCATION: シークレットの Google Cloud ロケーション
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows(PowerShell)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
Windows(cmd.exe)
gcloud secrets versions access VERSION_ID --secret=SECRET_ID --location=LOCATION --format='get(payload.data)' | tr '_-' '/+' | base64 -d
レスポンスにはシークレット バージョンが含まれます。
REST
シークレット バージョンにアクセス
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: シークレットの Google Cloud ロケーション
- PROJECT_ID: Google Cloud プロジェクト ID
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
- VERSION_ID: シークレットのバージョンの ID
HTTP メソッドと URL:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access
リクエストの本文(JSON):
{}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "c2VDcjN0Cg==", "dataCrc32c": "3131222104" } }
jq
ツールを使用してシークレットを抽出する
レスポンス payload.data
は、シークレット バージョンの Base64 エンコードされたコンテンツです。
次のコマンドは、jq
ツールを使用してシークレットを抽出する例です。
$ curl "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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
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 スコープを使用して認証する必要があります。
Python
このコードを実行するには、まず Python 開発環境を設定し、Secret Manager Python SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
リソースの整合性
Secret Manager では、シークレット バージョンを追加してすぐにそのバージョン番号にバージョン番号でアクセスすることは、強整合性のあるオペレーションです。
を使用してシークレット バージョンにアクセスする場合には適用されません。Secret Manager 内の他のオペレーションには、結果整合性があります。結果整合性のあるオペレーションは、通常は数分以内に収束しますが、数時間かかることもあります。
IAM 権限の伝播には、結果整合性があります。つまり、シークレットのアクセス権の付与または取り消しはすぐには有効にならない場合があります。詳細については、アクセス権の変更の伝播をご覧ください。