This page describes how to access a secret version. Accessing a secret version returns the secret
contents and additional metadata about the secret version. To access a secret version using the
Google Cloud CLI or the Secret Manager API, you must specify either its version ID
or
its alias
, if assigned. You can also access the latest version of a secret by specifying latest
as the version id.
Required roles
To get the permissions that
you need to access a secret version,
ask your administrator to grant you the Secret Manager Secret Accessor
( roles/secretmanager.secretAccessor
)
IAM role on a secret.
For more information about granting roles, see Manage access to projects, folders, and organizations
.
You might also be able to get the required permissions through custom roles or other predefined roles .
Access a secret version
To access a secret, use one of the following methods:
Console
-
In the Google Cloud console, go to the Secret Manager page.
-
On the Secret Manager page, click the Regional secrets tab, and then click a secret to access its versions.
-
On the secret details page, in the Versions tab, select the secret version that you want to access.
-
Click the Actions menu associated with the secret version, and then click View secret value .
-
A dialog appears displaying the value of the secret version. Click Done to exit the dialog.
gcloud
Access a secret version
Before using any of the command data below, make the following replacements:
- VERSION_ID : the resource name of the secret version
- SECRET_ID : the ID of the secret
- LOCATION : the Google Cloud location of the secret
Execute the following command:
Linux, macOS, or 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
Access a binary secret version
To write raw bytes to a file use --out-file flag:
Before using any of the command data below, make the following replacements:
- VERSION_ID : the ID of the secret version
- SECRET_ID : the ID of the secret
- LOCATION : the Google Cloud location of the secret
- PATH_TO_SECRET : the full path (including file name) where you want to save the retrieved secret value
Execute the following command:
Linux, macOS, or 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 "
Get the raw bytes
To get the raw bytes, have Cloud SDK print the response as base64-encoded and decode:
Before using any of the command data below, make the following replacements:
- VERSION_ID : the ID of the secret version
- SECRET_ID : the ID of the secret
- LOCATION : the Google Cloud location of the secret
Execute the following command:
Linux, macOS, or 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
The response contains the secret version.
REST
Access a secret version
Before using any of the request data, make the following replacements:
- LOCATION : the Google Cloud location of the secret
- PROJECT_ID : the Google Cloud project ID
- SECRET_ID : the ID of the secret
- VERSION_ID : the ID of the secret version
HTTP method and URL:
GET https://secretmanager. LOCATION .rep.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /secrets/ SECRET_ID /versions/ VERSION_ID :access
Request JSON body:
{}
To send your request, choose one of these options:
curl
Save the request body in a file named request.json
,
and execute the following command:
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
Save the request body in a file named request.json
,
and execute the following command:
$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
You should receive a JSON response similar to the following:
{ "name": "projects/ PROJECT_ID /locations/ LOCATION /secrets/ SECRET_ID /versions/ VERSION_ID ", "payload": { "data": "c2VDcjN0Cg==", "dataCrc32c": "3131222104" } }
Extract the secret using the jq
tool
The response payload.data
is the base64-encoded contents of the secret version.
The following command is an example of extracting the secret using the jq
tool.
$ 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
To run this code, first set up a Go development environment and install the Secret Manager Go SDK . On Compute Engine or GKE, you must authenticate with the cloud-platform scope .
Java
To run this code, first set up a Java development environment and install the Secret Manager Java SDK . On Compute Engine or GKE, you must authenticate with the cloud-platform scope .
Node.js
To run this code, first set up a Node.js development environment and install the Secret Manager Node.js SDK . On Compute Engine or GKE, you must authenticate with the cloud-platform scope .
Python
To run this code, first set up a Python development environment and install the Secret Manager Python SDK . On Compute Engine or GKE, you must authenticate with the cloud-platform scope .
Resource consistency
In Secret Manager, adding a secret version and then immediately accessing that secret version by version number is a strongly consistent operation.
Other operations within Secret Manager are eventually consistent. Eventually consistent operations typically converge within minutes, but may take a few hours.
Propagating IAM permissions is eventually consistent. This means granting or revoking access to secrets may not take effect immediately. For more information, see Access change propagation .