Los datos del Secret son inmutables y la mayoría de las operaciones se llevan a cabo en las versiones del Secret. Una versión del secreto contiene los datos reales del secreto, junto con el estado y los metadatos sobre el secreto. En esta página, se describe cómo agregar una versión de un secreto.
Para obtener más información sobre el control de versiones, mira este video.
Roles obligatorios
Para obtener los permisos que necesitas para agregar una versión secreta, pídele a tu administrador que te otorgue los siguientes roles de IAM en un secreto:
-
Agregador de versiones de secretos de Secret Manager (
roles/secretmanager.secretVersionAdder
) -
Administrador de versiones de secretos de Secret Manager (
roles/secretmanager.secretVersionManager
)
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.
No se pueden otorgar roles de IAM en una versión del secreto.
Agrega una versión del Secret
Para agregar una versión secreta, usa uno de los siguientes métodos:
Console
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página Secret Manager, busca el secreto al que deseas agregar la versión nueva.
-
Haz clic en el menú
Acciones asociado a ese secreto y, luego, en Agregar versión nueva. Aparecerá el cuadro de diálogo Agregar versión nueva. -
En el campo Valor del secreto, ingresa un valor para el secreto, como
abcd1234
. Como alternativa, puedes subir un archivo que contenga el valor del secreto. -
Haz clic en Agregar versión nueva.
gcloud
Agrega una versión del secreto a partir del contenido de un archivo en el disco
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- FILE_PATH: Es la ruta de acceso completa (incluido el nombre del archivo) al archivo que contiene los detalles de la versión.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
La respuesta contiene la versión del secreto recién creada.
Agrega una versión del secreto directamente en la línea de comandos
También puedes agregar una versión del secreto directamente en la línea de comandos, pero no es recomendable porque aparece como texto simple en la lista de procesos y otros usuarios del sistema pueden capturarla. Ten en cuenta que el comando con el texto sin formato también estará en el historial de tu shell.
echo -n "SECRET_DATA" | \ gcloud secrets versions add SECRET_ID --data-file=-
Reemplaza lo siguiente:
- SECRET_DATA: Son los datos que deseas almacenar en la versión del secreto.
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
Opcional: Agrega una versión del contenido de un archivo cuando creas un secreto por primera vez
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- FILE_PATH: Es la ruta de acceso completa (incluido el nombre del archivo) al archivo que contiene los detalles de la versión.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
La respuesta contiene la versión del secreto recién creada.
REST
Codifica los datos secretos en Base64 y guárdalos como una variable de shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion
Cuerpo JSON de la solicitud:
{"payload": {"data": "${SECRET_DATA}"}}
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 POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion"
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 POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion" | 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/1", "createTime": "2024-03-25T08:24:13.153705Z", "state": "ENABLED", "etag": "\"161477e6071da9\"" }
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
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.
PHP
Para ejecutar este código, primero obtén información a fin de usar PHP en Google Cloud e instala el SDK de PHP 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.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby e instala el SDK de Ruby de Secret Manager. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Estados de la versión del Secret
En cualquier momento, una versión del secreto puede tener uno de los siguientes estados:
-
Habilitada: En este estado, se puede acceder a la versión del secreto y describirla. Este es el estado predeterminado de una versión secreta nueva.
-
Inhabilitada: En este estado, no se puede acceder a la versión del secreto, pero el contenido del secreto sigue existiendo. La versión del secreto se puede volver a habilitar para restablecer el acceso.
-
Destruida: En este estado, se descarta el contenido de la versión del secreto. La versión del secreto no se puede cambiar a otro estado.
Se te facturan las versiones de secretos habilitadas y las inhabilitadas. No se te facturarán las versiones de secretos que estén en estado destruido.
¿Qué sigue?
- Obtén más información para acceder a una versión del Secret.
- Obtén más información para asignar un alias a una versión del Secret.
- Obtén información para listar versiones de secretos y ver detalles de versiones.