Cómo establecer una fecha de vencimiento para un Secret

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

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 para 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 revocan los permisos, puedes restablecer el acceso rápidamente para minimizar el 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 es necesario.

Este enfoque ayuda a garantizar 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 venza 60 días después de su creación. Esto proporciona un período de amortiguación 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 Secret Accessor durante 45 días. Si la cuenta de servicio intenta acceder al secreto después de 45 días, se le denegará el permiso. Dejarán de funcionar los flujos de trabajo que dependan de este secreto. Un administrador puede restablecer el acceso rápidamente otorgando la función de descriptor de acceso a secretos a la cuenta de servicio. Esto les permite investigar por qué el secreto sigue siendo 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 más información, consulta la sección Registro de vencimiento de este documento.

Cómo especificar 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.

Cómo establecer la fecha de vencimiento de un secreto

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

Console

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

    Ir a Secret Manager

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

  3. En la página Crear secreto, 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 secreto.

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

  6. Ingresa la fecha y 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 ingresar la fecha y hora de vencimiento.

  7. 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: ID del secreto o identificador completamente calificado del secreto
  • TIMESTAMP: Es 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"

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: ID del secreto o identificador completamente calificado 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 \
  --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

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:

  • PROJECT_ID: El Google Cloud ID del proyecto
  • SECRET_ID: ID del secreto o identificador completamente calificado del secreto
  • TIMESTAMP: Es 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 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:

  • PROJECT_ID: El Google Cloud ID del proyecto
  • SECRET_ID: ID del secreto o identificador completamente calificado del secreto
  • DURATION: Es la duración del vencimiento 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 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. En la consola de Google Cloud , ve a la página Secret Manager.

    Ir a Secret Manager

  2. Para editar un secreto, ubícalo en la lista y, luego, 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 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: ID del secreto o identificador completamente calificado del secreto
  • TIMESTAMP: Es 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"

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: ID del secreto o identificador completamente calificado 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 \
    --ttl "DURATION"

Windows (PowerShell)

gcloud secrets update SECRET_ID `
    --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
    --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:

  • PROJECT_ID: El Google Cloud ID del proyecto
  • SECRET_ID: ID del secreto o identificador completamente calificado del secreto
  • TOKEN: Tu propio token de acceso de OAuth 2.0
  • TIMESTAMP: Es 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 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:

  • PROJECT_ID: El Google Cloud ID del proyecto
  • SECRET_ID: ID del secreto o identificador completamente calificado del secreto
  • DURATION: Es la duración del vencimiento 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 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\""
}

Cómo quitar 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. En la consola de Google Cloud , ve a la página Secret Manager.

    Ir a Secret Manager

  2. Para editar un secreto, ubícalo en la lista y, luego, 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 de verificación Establecer fecha de vencimiento y, luego, haz clic en Actualizar secreto.

gcloud

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

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 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
  • 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 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 sobre cómo ver estos registros. Puedes crear métricas basadas en registros y usarlas para crear alertas de próximos vencimientos.

¿Qué sigue?