Los datos de los secretos son inmutables y casi todas las operaciones se llevan a cabo en versiones de secretos. Una versión de un secreto contiene los datos del secreto propiamente dichos, junto con el estado y los metadatos del secreto. En esta página se describe cómo añadir una versión de un secreto.
Para obtener más información sobre las versiones, consulta este vídeo.
Roles obligatorios
Para obtener los permisos que necesitas para añadir una versión de un secreto, pide a tu administrador que te asigne 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 conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Los roles de gestión de identidades y accesos no se pueden conceder en una versión de un secreto.
Añadir una versión de secreto
Para añadir una versión secreta, utilice uno de los siguientes métodos:
Consola
-
En la Google Cloud consola, ve a la página Secret Manager.
-
En la página Secret Manager, busca el secreto al que quieras añadir la nueva versión.
-
Haz clic en el menú
Acciones asociado a ese secreto y, a continuación, en Añadir nueva versión. Aparecerá el cuadro de diálogo Añadir nueva versión. -
En el campo Valor secreto, introduce un valor para el secreto, como
abcd1234
. También puedes subir un archivo que contenga el valor del secreto. -
Haz clic en Añadir nueva versión.
gcloud
Añadir una versión de secreto a partir del contenido de un archivo del disco
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- SECRET_ID: el ID del secreto o el identificador completo del secreto
- FILE_PATH: la ruta completa (incluido el nombre del archivo) del 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.
Añadir una versión de secreto directamente en la línea de comandos
También puedes añadir una versión secreta directamente en la línea de comandos, pero no es recomendable porque aparece como texto sin formato en la lista de procesos y otros usuarios del sistema pueden capturarla. Ten en cuenta que el comando con el texto sin cifrar también estará en el historial de tu shell.
echo -n "SECRET_DATA" | \ gcloud secrets versions add SECRET_ID --data-file=-
Haz los cambios siguientes:
- SECRET_DATA: los datos que quieres almacenar en la versión del secreto
- SECRET_ID: el ID del secreto o el identificador completo del secreto
Opcional: Añadir una versión a partir del contenido de un archivo al crear un secreto por primera vez
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- SECRET_ID: el ID del secreto o el identificador completo del secreto
- FILE_PATH: la ruta completa (incluido el nombre del archivo) del 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 en Base64 los datos secretos y guárdalos como una variable de shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto Google Cloud
- SECRET_ID: el ID del secreto o el identificador completo 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 siguiente:
{ "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 debes configurar un entorno de desarrollo de C# e instalar el SDK de C# de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Secret Manager. En Compute Engine o GKE, debes autenticarte con el ámbito cloud-platform.
Estados de las versiones de secretos
Una versión de secreto puede tener uno de los siguientes estados en cualquier momento:
-
Habilitada: en este estado, se puede acceder a la versión del secreto y describirla. Este es el estado predeterminado de una versión de secreto 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 restaurar 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 factura tanto por las versiones de secretos habilitadas como por las inhabilitadas. No se te cobrará por las versiones de secretos que estén en estado destruido.
Siguientes pasos
- Consulta cómo acceder a una versión secreta.
- Consulta cómo asignar un alias a una versión de un secreto.
- Consulta cómo listar versiones de secretos y ver los detalles de una versión.