Configura una fecha de vencimiento para un Secret

En este tema, se muestra cómo configurar una fecha de vencimiento para un secreto en Secret Manager. En el tema, también se describe cómo actualizar o quitar la fecha de vencimiento establecida para 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 fecha de vencimiento como una marca de tiempo o una duración. Cuando se recuperan los metadatos del 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 del secreto solo está disponible en la API de v1 de Secret Manager y en la herramienta de línea de comandos de gcloud.

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

Usa de forma segura los secretos que venzan

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 ello, cuando otorgues permisos en un secreto, adjunta una condición basada en el tiempo a la vinculación. La vinculación debería vencer después de que se espera que el secreto ya no se use, pero con la suficiente anticipación para que los permisos que se quitaron se notarán antes de que venza el secreto. Si se pensaba que los flujos de trabajo ya no usan la pausa secreta después de revocar los permisos, estos se pueden volver a agregar a fin de mitigar con rapidez. Si se requiere más tiempo, el vencimiento del secreto se puede actualizar o incluso quitar.

Por ejemplo, supongamos que se espera que una cuenta de servicio acceda a un secreto a diario durante un período de 30 días. El vencimiento del secreto podría configurarse en 60 días desde la creación, y se podría usar una vinculación de IAM condicional para otorgar a la cuenta de servicio la función de descriptor de acceso secreto durante 45 días. Si la cuenta de servicio intenta acceder al secreto después de 45 días, se mostrará un error de permiso denegado y los flujos de trabajo que requieran el secreto se romperán. Luego, un administrador puede otorgar la función de descriptor de acceso secreto a la cuenta de servicio para mitigar con rapidez la investigación, ya que el secreto no se borrará durante 15 días más.

Además, es posible crear alertas basadas en advertencias de registros de secretos que vencerán pronto. Consulta Registro de vencimiento para obtener más información.

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.

Crea un secreto que vencerá pronto

Crea un secreto que vence con una marca de tiempo:

gcloud

Para usar Secret Manager en la línea de comandos, primero instala o actualiza a la versión 378.0.0 o posterior de Google Cloud CLI. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

API

En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}
EOF

Crea un secreto con vencimiento con una duración:

gcloud

Para usar Secret Manager en la línea de comandos, primero instala o actualiza a la versión 378.0.0 o posterior de Google Cloud CLI. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --ttl "DURATION"

API

En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}
EOF

Actualiza el vencimiento de un secreto

Se puede aplicar un vencimiento nuevo a cualquier secreto, sin importar si ya tiene uno. Cada secreto solo puede tener un vencimiento configurado a la vez. Si actualizas el vencimiento de un secreto que ya tiene uno, se reemplazará el vencimiento existente.

Actualiza el vencimiento de un secreto con una marca de tiempo:

gcloud

Para usar Secret Manager en la línea de comandos, primero instala o actualiza a la versión 378.0.0 o posterior de Google Cloud CLI. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

gcloud secrets update "SECRET_ID" \
    --expire-time "TIMESTAMP"

API

En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "expire_time": "TIMESTAMP"
}
EOF

Actualiza el vencimiento de un secreto con una duración:

gcloud

Para usar Secret Manager en la línea de comandos, primero instala o actualiza a la versión 378.0.0 o posterior de Google Cloud CLI. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

gcloud secrets update "SECRET_ID" \
    --ttl "DURATION"

API

En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "ttl": "DURATION"
}
EOF

Quita el vencimiento de un secreto

gcloud

Para usar Secret Manager en la línea de comandos, primero instala o actualiza a la versión 378.0.0 o posterior de Google Cloud CLI. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

gcloud secrets update "SECRET_ID" \
    --remove-expiration

API

En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.

Si incluyes expire_time o ttl en el updateMask y proporcionas valores para ninguno, se quitará el vencimiento.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary '{}'

Registro de vencimiento

Los registros de auditoría de Cloud no se producen cuando un secreto vence automáticamente. En su lugar, Secret Manager escribe registros en el recurso Secret de Secret Manager en intervalos específicos hasta el 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?