En este tema, se muestra cómo establecer una fecha de vencimiento para un Secret en Secret Manager. También se describe cómo actualizar o quitar la fecha de vencimiento que se configuró 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 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 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 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 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.
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
.
Crea un secreto vencido
Crea un secreto vencido 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 vencido 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 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?
- Obtén más información para configurar programas de rotación para los secretos.
- Obtén información para habilitar las claves de encriptación administradas por el cliente (CMEK) para Secret Manager.