Definir una fecha de vencimiento para un secreto

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.

Este enfoque ayuda a asegurar que el acceso a los secretos esté estrictamente controlado y solo esté disponible durante el tiempo necesario, lo que reduce el riesgo de acceso no autorizado o uso inadecuado.

Por ejemplo, imagina una situación en la que una cuenta de servicio necesita acceder a un secreto todos los días durante 30 días. Puedes configurar el secreto para que caduque 60 días después de su creación. De esta forma, se dispone de un periodo de margen después del uso previsto. También puedes configurar un enlace de gestión de identidades y accesos condicional para conceder a la cuenta de servicio el rol Accesor de secretos durante 45 días. Si la cuenta de servicio intenta acceder al secreto después de 45 días, se le deniega el permiso. Los flujos de trabajo que dependan de este secreto dejarán de funcionar. Un administrador puede restaurar el acceso rápidamente concediendo de nuevo el rol Accesor de secretos a la cuenta de servicio. De esta forma, tendrán tiempo para investigar por qué sigue siendo necesaria la clave secreta después del periodo de 30 días previsto, ya que la clave secreta no se eliminará hasta dentro de 15 días.

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

  1. En la Google Cloud consola, ve a la página Secret Manager.

    Ir a Secret Manager

  2. En la página Secret Manager, haz clic en Crear secreto.

  3. En la página Crear secreto, introduce un nombre para el secreto en el campo Nombre.

  4. 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.

  5. Ve a Vencimiento y, a continuación, marca la casilla Definir fecha de vencimiento.

  6. 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.

  7. 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

  1. En la Google Cloud consola, ve a la página Secret Manager.

    Ir a Secret Manager

  2. 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.

  3. 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

  1. En la Google Cloud consola, ve a la página Secret Manager.

    Ir a Secret Manager

  2. 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.

  3. 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