En esta página, se describe cómo acceder a una versión de un secreto. Acceder a una versión del secreto muestra el contenido del secreto y metadatos adicionales sobre la versión del secreto. Para acceder a una versión de Secret con Google Cloud CLI o la API de Secret Manager, debes especificar su ID de versión o su alias, si se asignó. También puedes acceder a la versión más reciente de un secreto si especificas latest
como el ID de versión.
Roles obligatorios
Para obtener los permisos que necesitas para acceder a una versión de secreto,
pídele a tu administrador que te otorgue el rol de IAM de Acceso a secretos del Administrador de secretos (roles/secretmanager.secretAccessor
) en un secreto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Accede a una versión del Secret
Para editar un secreto, usa uno de los siguientes métodos:
Console
-
Ve a la página de Secret Manager en la consola de Google Cloud.
-
En la página Secret Manager, haz clic en la pestaña Secretos regionales y, luego, en un secreto para acceder a sus versiones.
-
En la página de detalles del secreto, en la pestaña Versiones, selecciona la versión del secreto a la que deseas acceder.
-
Haz clic en el menú
Acciones asociado con la versión del secreto y, luego, en Ver valor del secreto. -
Aparecerá un diálogo que muestra el valor de la versión del Secret. Haz clic en Listo para salir del cuadro de diálogo.
gcloud
Accede a una versión del Secret
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- VERSION_ID: Es el nombre del recurso de la versión del secreto.
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- LOCATION: La ubicación de Google Cloud del secreto
Ejecuta el siguiente comando:
Linux, macOS o 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
Accede a una versión del secreto binario
Para escribir bytes sin procesar en un archivo, usa la marca --out-file:
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- VERSION_ID: El ID de la versión del Secret
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- LOCATION: La ubicación de Google Cloud del secreto
- PATH_TO_SECRET: Es la ruta de acceso completa (incluido el nombre del archivo) en la que deseas guardar el valor secreto recuperado.
Ejecuta el siguiente comando:
Linux, macOS o 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"
Cómo obtener los bytes sin procesar
Para obtener los bytes sin procesar, haz que el SDK de Cloud imprima la respuesta como codificada en Base64 y decodificada:
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- VERSION_ID: El ID de la versión del Secret
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- LOCATION: La ubicación de Google Cloud del secreto
Ejecuta el siguiente comando:
Linux, macOS o 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
La respuesta contiene la versión del secreto.
REST
Accede a una versión del Secret
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de Google Cloud del secreto
- PROJECT_ID: El ID del proyecto de Google Cloud
- SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
- VERSION_ID: El ID de la versión del Secret
Método HTTP y URL:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID:access
Cuerpo JSON de la solicitud:
{}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "c2VDcjN0Cg==", "dataCrc32c": "3131222104" } }
Extrae el secreto con la herramienta de jq
La respuesta payload.data
es el contenido codificado en base64 de la versión del secreto.
El siguiente comando es un ejemplo de extracción del secreto con la herramienta de 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
Para ejecutar este código, primero configura un entorno de desarrollo de Go e instala el SDK de Go para Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java e instala el SDK de Java para Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js e instala el SDK de Node.js para Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python e instala el SDK de Python para Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Coherencia del recurso
En Secret Manager, agregar una versión de un secreto y luego acceder de inmediato a ella por número de versión es una operación de coherencia sólida.
Otras operaciones dentro de Secret Manager tienen coherencia eventual. Por lo general, las operaciones de coherencia eventual convergen en minutos, pero pueden tardar algunas horas.
La propagación de los permisos de IAM tiene coherencia eventual. Esto significa que otorgar o revocar el acceso a los secretos puede no tener efecto de inmediato. Para obtener más información, consulta Propagación de cambios de acceso.
¿Qué sigue?
- Asigna un alias a una versión regional del Secret
- Inhabilita una versión regional del Secret
- Destruye una versión regional del Secret