Cómo establecer la fecha de vencimiento de un Secret regional

En esta página, se describe cómo establecer una fecha de vencimiento para un Secret nuevo o existente, cambiar la fecha de vencimiento de un Secret existente y quitar cualquier fecha de vencimiento establecida anteriormente de un Secret.

Descripción general

De forma predeterminada, los secretos almacenados en Secret Manager existen hasta que un usuario los borra. Si un secreto solo se debe almacenar por un tiempo limitado conocido, puedes adjuntarle un tiempo de vencimiento. En el momento de vencimiento configurado de un secreto, se borra de forma automática.

Si no tienes requisitos que requieran que se borre el secreto, considera usar las Condiciones de IAM o el estado de versión inhabilitada para revocar el acceso de manera segura.

Puedes ingresar una hora de vencimiento como una marca de tiempo o una duración. Cuando se recuperan metadatos de secreto, el vencimiento siempre se muestra como una marca de tiempo, sin importar cómo se proporcionó.

Se puede agregar, actualizar o quitar un vencimiento de un secreto en cualquier momento.

Limitaciones

  • El vencimiento de un secreto no puede estar a menos de 60 segundos o a más de 100 años de distancia.

Usa secretos vencidos de forma segura

Cuando un secreto vence en Secret Manager, se borra de forma irreversible. La mejor manera de detectar secretos que se vencen pronto es usar Condiciones de IAM para quitar los permisos de las cuentas que usan el secreto antes del vencimiento.

Para administrar el acceso a los secretos de manera eficaz, establece una condición basada en el tiempo en los permisos otorgados.

  • Establece una fecha de vencimiento: Los permisos deben vencer poco antes de que venza el secreto. Esto te permite identificar cualquier flujo de trabajo o proceso que aún pueda estar usando el secreto de forma inesperada.

  • Supervisa las interrupciones: Si algún flujo de trabajo deja de funcionar después de que se revoquen los permisos, puedes restablecer el acceso rápidamente para minimizar cualquier impacto.

  • Haz los ajustes necesarios: Si necesitas más tiempo, puedes extender la fecha de vencimiento del secreto o incluso quitarlo por completo si ya no lo necesitas.

Este enfoque ayuda a garantizar que el acceso a los Secrets 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 venza 60 días después de su creación. Esto proporciona un período de almacenamiento en búfer después del uso esperado. También puedes configurar una vinculación de IAM condicional para otorgar a la cuenta de servicio el rol de descriptor de acceso a secretos durante 45 días. Si la cuenta de servicio intenta acceder al secreto después de 45 días, se le denegará el permiso. Todos los flujos de trabajo que dependan de este secreto dejarán de funcionar. Un administrador puede restablecer el acceso rápidamente otorgando el rol de descriptor de acceso secreto a la cuenta de servicio. Esto le permite investigar por qué el secreto aún es necesario después del período esperado de 30 días, ya que el secreto no se borrará durante otros 15 días.

Además, es posible crear alertas basadas en advertencias de registros de secretos que vencerán pronto. Para obtener información, consulta la sección Registro de vencimiento de este documento.

Especifica marcas de tiempo y duraciones

  • Los valores de la 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 de la cantidad de segundos, incluido el sufijo s, por ejemplo, 86400s.

Establece la fecha de vencimiento de un secreto

Puedes establecer una fecha y hora de vencimiento en un secreto con la consola de Google Cloud, Google Cloud CLI o la API de Secret Manager.

Console

  1. Ve a la página de Secret Manager en la consola de Google Cloud.

    Ir a Secret Manager

  2. En la página de Secret Manager, haz clic en la pestaña Secretos regionales y, luego, en Crear secreto regional.

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

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

  5. En la lista Región, elige la ubicación en la que deseas que se almacene tu Secret regional.

  6. Ve a Vencimiento y, luego, selecciona la casilla de verificación Establecer fecha de vencimiento.

  7. Ingresa la fecha y hora de vencimiento en el formato Mes/Día/Año, Hora:Minuto a.m./p.m., por ejemplo, 7/31/20, 1:00 AM. También puedes usar el selector de fecha y hora para ingresar la fecha y hora de vencimiento.

  8. Haz clic en Crear secreto.

gcloud

Crea un secreto vencido con una marca de tiempo

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
  • LOCATION: La ubicación de Google Cloud 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 --location=LOCATION \
    --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
    --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
    --expire-time "TIMESTAMP"

Crea un secreto vencido con una duración

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
  • LOCATION: La ubicación de Google Cloud del secreto
  • DURATION: Es la duración del vencimiento en segundos, por ejemplo, 86400s.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --ttl "DURATION"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --ttl "DURATION"

REST

Crea un secreto vencido con una marca de tiempo

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
  • 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.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID

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 POST \
-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?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.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID" | 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",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Crea un secreto vencido con una duración

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
  • DURATION: Es la duración del vencimiento en segundos, por ejemplo, 86400s.

Método HTTP y URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

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 POST \
-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?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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | 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",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Actualiza la fecha de vencimiento de un secreto

Para actualizar la fecha y hora de vencimiento del secreto, usa uno de los siguientes métodos:

Console

  1. Ve a la página de Secret Manager en la consola de Google Cloud.

    Ir a Secret Manager

  2. En la página de Secret Manager, haz clic en la pestaña Secretos regionales.

  3. Para editar un Secret, búscalo en la lista y, luego, haz clic en el menú Acciones asociado con ese Secret. En el menú Acciones, haz clic en Editar.

  4. Ve a la sección Vencimiento. Actualiza la fecha y hora de vencimiento, y haz clic en Actualizar secreto.

gcloud

Actualiza el vencimiento de un secreto con una marca de tiempo

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
  • LOCATION: La región de Google Cloud en la que almacenaste los datos secretos
  • 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 --location=LOCATION \
  --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --expire-time "TIMESTAMP"

Actualiza el vencimiento de un secreto con una duración

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • SECRET_ID: El ID del Secret o el identificador completamente calificado del Secret
  • LOCATION: La ubicación de Google Cloud del secreto
  • DURATION: Es la duración del vencimiento en segundos, por ejemplo, 86400s.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --ttl "DURATION"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --ttl "DURATION"

REST

Actualiza el vencimiento de un secreto con una marca de tiempo

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
  • TOKEN: Tu propio token de acceso de Oauth2.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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time" | 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",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Actualiza el vencimiento de un secreto con una duración

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
  • DURATION: Es la duración del vencimiento en segundos, por ejemplo, 86400s.

Método HTTP y URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl" | 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",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Quita la fecha de vencimiento de un secreto

Para quitar la fecha y hora de vencimiento del secreto, usa uno de los siguientes métodos:

Console

  1. Ve a la página de Secret Manager en la consola de Google Cloud.

    Ir a Secret Manager

  2. En la página de Secret Manager, haz clic en la pestaña Secretos regionales.

  3. Para editar un Secret, búscalo en la lista y, luego, haz clic en el menú Acciones asociado con ese Secret. En el menú Acciones, haz clic en Editar.

  4. Ve a la sección Vencimiento. Desmarca la casilla de verificación Establecer fecha de vencimiento y, luego, haz clic en Actualizar Secret.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • 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 update SECRET_ID --location=LOCATION \
  --remove-expiration

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --remove-expiration

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --remove-expiration

REST

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
  • TOKEN: Tu propio token de acceso de Oauth2.0

Método HTTP y URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl

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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl" | 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",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "etag": "\"162143305d282d\""
}

Registro de vencimiento

Los registros de auditoría de Cloud no se producen cuando un secreto vence automáticamente. En cambio, Secret Manager escribe registros en el recurso Secret de Secret Manager en intervalos específicos hasta llegar al vencimiento de un secreto.

Tiempo de registro 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 del vencimiento EXPIRES_IN_6_HOURS
1 hora antes del vencimiento EXPIRES_IN_1_HOUR
a su vencimiento EXPIRED

Consulta la guía de inicio rápido de Logging para obtener información para ver estos registros. Puedes crear métricas basadas en registros y usarlas para crear alertas de próximos vencimientos.

¿Qué sigue?