Establece una fecha de vencimiento para un Secret

En este tema, se muestra cómo configurar una fecha de vencimiento para un Secret en Secret Manager. En el tema, también se describe cómo actualizar o quitar la fecha de vencimiento establecida. en busca 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 fecha y hora de vencimiento como una marca de tiempo y el tiempo de actividad. Cuando se recuperan los metadatos del Secret, el vencimiento es 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 Secrets que vencen

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 venza

Crea un secreto que vencerá 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 que venza 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 Secret Manager Secret recurso en intervalos específicos que conducen 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 conjuntos de datos basados en registros métricas y usarlas para crear alertas con vencimientos próximos.

¿Qué sigue?