En esta página se describe cómo definir una fecha de vencimiento para un secreto nuevo o uno que ya tengas, cómo cambiar la fecha de vencimiento de un secreto y cómo eliminar la fecha de vencimiento de un secreto.
Información general
De forma predeterminada, los secretos almacenados en Secret Manager se conservan hasta que un usuario los elimina. Si un secreto solo debe almacenarse durante un periodo limitado conocido, puedes adjuntarle una hora de vencimiento. Cuando se alcanza el tiempo de vencimiento configurado de un secreto, se elimina automáticamente.
Si no tienes requisitos que indiquen que el secreto se debe eliminar, considera la posibilidad de usar las condiciones de gestión de identidades y accesos o el estado Inhabilitado para revocar el acceso de forma segura.
Puedes introducir una hora de vencimiento como una marca de tiempo o una duración. Cuando se recuperan los metadatos de un secreto, la fecha de vencimiento siempre se devuelve como una marca de tiempo, independientemente de cómo se haya proporcionado.
Se puede añadir, actualizar o quitar una fecha de vencimiento de un secreto en cualquier momento.
Limitaciones
-
La caducidad de un secreto no puede ser inferior a 60 segundos ni superior a 100 años.
Usar secretos que caducan de forma segura
Cuando un secreto caduca en Secret Manager, se elimina de forma irreversible. La mejor forma de detectar los secretos que van a caducar pronto es usar Condiciones de IAM para quitar los permisos de las cuentas que usan el secreto antes de que caduque.
Para gestionar el acceso a los secretos de forma eficaz, define una condición basada en el tiempo en los permisos concedidos.
-
Define una fecha de vencimiento: los permisos deben caducar poco antes de que caduque el propio secreto. De esta forma, podrás identificar los flujos de trabajo o procesos que aún puedan estar usando el secreto de forma inesperada.
-
Monitoriza las interrupciones: si algún flujo de trabajo deja de funcionar después de revocar los permisos, puedes restaurar el acceso rápidamente para minimizar el impacto.
-
Haz los ajustes que necesites: si ves que necesitas más tiempo, puedes ampliar la fecha de vencimiento del secreto o incluso eliminarlo por completo si ya no lo necesitas.
Además, es posible crear alertas basadas en registros que avisen de que los secretos van a caducar pronto. Para obtener información, consulta la sección Registro de caducidad de este documento.
Especificar marcas de tiempo y duraciones
-
Los valores de marca de tiempo deben tener el formato RFC 3339, por ejemplo,
2100-01-01T09:00:00-05:00
. -
Los valores de duración deben tener el formato del número de segundos, incluido el sufijo s. Por ejemplo,
86400s
.
Definir la fecha de vencimiento de un secreto
Puedes definir una fecha y una hora de vencimiento para un secreto mediante la consola, la CLI de Google Cloud o la API Secret Manager. Google Cloud
Consola
-
En la Google Cloud consola, ve a la página Secret Manager.
-
En la página Secret Manager, haz clic en Crear secreto.
-
En la página Crear secreto, introduce un nombre para el secreto en el campo Nombre.
-
Introduce un valor para el secreto (por ejemplo,
abcd1234
). También puedes subir un archivo de texto que contenga el valor del secreto con la opción Subir archivo. Esta acción crea automáticamente la versión del secreto. -
Ve a Vencimiento y, a continuación, marca la casilla Definir fecha de vencimiento.
-
Introduce la fecha y la hora de vencimiento en el formato Mes/Día/Año, Hora:Minuto AM/PM, por ejemplo,
7/31/20, 1:00 AM
. También puedes usar el selector de fecha y hora para introducir la fecha y la hora de vencimiento. -
Haz clic en Crear secreto.
gcloud
Crear un secreto que caduca con una marca de tiempo
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
- TIMESTAMP: la hora de vencimiento en formato RFC 3339. Por ejemplo,
2100-01-01T09:00:00-05:00
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID \ --replication-policy "automatic" \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --expire-time "TIMESTAMP"
Crear un secreto que caduque con una duración
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
- DURATION: la duración de la caducidad en segundos. Por ejemplo,
86400s
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID \ --replication-policy "automatic" \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --ttl "DURATION"
REST
Crear un secreto que caduca con una marca de tiempo
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
- TIMESTAMP: la hora de vencimiento en formato RFC 3339. Por ejemplo,
2100-01-01T09:00:00-05:00
.
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID
Cuerpo JSON de la solicitud:
{ "replication": {"automatic": {}}, "expire_time": "TIMESTAMP" }
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?secretId=$SECRET_ID"
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?secretId=$SECRET_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Crear un secreto que caduque con una duración
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
- DURATION: la duración de la caducidad en segundos. Por ejemplo,
86400s
.
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
Cuerpo JSON de la solicitud:
{ "replication": {"automatic": {}}, "ttl": "DURATION" }
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?secretId=SECRET_ID"
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?secretId=SECRET_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Actualizar la fecha de vencimiento de un secreto
Para actualizar la fecha y la hora de vencimiento del secreto, utilice uno de los siguientes métodos:
Consola
-
En la Google Cloud consola, ve a la página Secret Manager.
-
Para editar un secreto, localízalo en la lista y, a continuación, haz clic en el menú
Acciones asociado a ese secreto. En el menú Acciones, haz clic en Editar. -
Ve a la sección Vencimiento. Actualiza la fecha y la hora de vencimiento y haz clic en Actualizar secreto.
gcloud
Actualizar la fecha de vencimiento de un secreto mediante una marca de tiempo
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
- TIMESTAMP: la hora de vencimiento en formato RFC 3339. Por ejemplo,
2100-01-01T09:00:00-05:00
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --expire-time "TIMESTAMP"
Actualizar la fecha de vencimiento de un secreto mediante una duración
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
- DURATION: la duración de la caducidad en segundos. Por ejemplo,
86400s
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --ttl "DURATION"
REST
Actualizar la fecha de vencimiento de un secreto mediante una marca de tiempo
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
- TOKEN: tu propio token de acceso de OAuth 2.0
- TIMESTAMP: la hora de vencimiento en formato RFC 3339. Por ejemplo,
2100-01-01T09:00:00-05:00
.
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time
Cuerpo JSON de la solicitud:
{"expire_time": "TIMESTAMP"}
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 PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Actualizar la fecha de vencimiento de un secreto mediante una duración
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
- DURATION: la duración de la caducidad en segundos. Por ejemplo,
86400s
.
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl
Cuerpo JSON de la solicitud:
{"ttl": "DURATION"}
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 PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Quitar la fecha de vencimiento de un secreto
Para quitar la fecha y la hora de vencimiento del secreto, utilice uno de los siguientes métodos:
Consola
-
En la Google Cloud consola, ve a la página Secret Manager.
-
Para editar un secreto, localízalo en la lista y, a continuación, haz clic en el menú
Acciones asociado a ese secreto. En el menú Acciones, haz clic en Editar. -
Ve a la sección Vencimiento. Desmarca la casilla Definir fecha de vencimiento y, a continuación, haz clic en Actualizar secreto.
gcloud
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
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID \ --remove-expiration
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --remove-expiration
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --remove-expiration
REST
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
- TOKEN: tu propio token de acceso de OAuth 2.0
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time
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 PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
Registro de caducidad
Registros de auditoría de Cloud no se generan cuando un secreto caduca automáticamente. En su lugar, Secret Manager escribe registros en el recurso de secreto de Secret Manager a intervalos específicos antes de que caduque un secreto.
Registro de tiempos | Tipo de evento secreto |
---|---|
30 días antes del vencimiento | EXPIRES_IN_30_DAYS |
7 días antes del vencimiento | EXPIRES_IN_7_DAYS |
1 día antes del vencimiento | EXPIRES_IN_1_DAY |
6 horas antes de que caduque | EXPIRES_IN_6_HOURS |
1 hora antes de que caduque | EXPIRES_IN_1_HOUR |
al vencimiento | EXPIRED |
Consulta la guía de inicio rápido de registro para obtener información sobre cómo ver estos registros. Puede crear métricas basadas en registros y usarlas para crear alertas de vencimiento.
Siguientes pasos
- Consulta cómo configurar las rotaciones de secretos.
- Consulta cómo habilitar las claves de encriptado gestionadas por el cliente (CMEK) en Secret Manager.