Secret Manager es compatible con los programas de rotación para los secretos. Secret Manager envía mensajes a temas de Pub/Sub configurados en el secreto según la y el tiempo de rotación. En este tema, se muestra cómo configurar una única vez o programaciones periódicas en tus secretos para recibir notificaciones cuando debas rotar el secreto.
Rotar los secretos periódicamente ayuda a:
- Limitar la cantidad de tiempo en que un secreto filtrado es válido y expone una vulnerabilidad
- Ejecutar de forma continua el flujo de rotación para garantizar la confiabilidad del proceso
¿Cómo funciona?
Secret Manager envía un mensaje SECRET_ROTATE
a los temas de Pub/Sub
que está configurada en el Secret, en su next_rotation_time
. La marca de tiempo es
se puede establecer de una de estas dos maneras:
Lo proporciona el usuario cuando crea o actualiza el secreto.
Si se proporciona un
rotation_period
, Secret Manager enviará unSECRET_ROTATE
mensaje después delrotation_period
transcurrido. Se actualizaránext_rotation_time
a para reflejar la nueva fecha y hora de rotación.
Debes configurar un suscriptor de Pub/Sub para recibir mensajes de SECRET_ROTATE
y tomar medidas al respecto.
de Google Cloud. Si es necesario, implementa flujos de trabajo adicionales, como agregar una nueva versión del secreto
y activar implementaciones de la aplicación.
Notas
La administración de las políticas de rotación solo está disponible en Secret Manager API de
v1
y Google Cloud CLI.Los temas de Pub/Sub se deben configurar en el secreto. Para aprender a hacer lo siguiente: crear un tema y una suscripción a Pub/Sub, consulta la Guía de inicio rápido de Pub/Sub. Para aprender a configurar temas en un Secret, consulta Notificaciones de eventos de Secret Manager.
Se debe establecer
next_rotation_time
si se especificarotation_period
.next_rotation_time
no se puede establecer para menos de cinco minutos en el futuro. Elrotation_period
no puede tener una duración inferior a una hora. Para guiar el formato de la marca de tiempo, consulta la referencia de fecha y hora de gcloud.Errores de entrega: Secret Manager volverá a intentar automáticamente los intentos fallidos para enviar un mensaje. Secret Manager no garantiza la entrega en caso de que haya una configuración incorrecta con respecto a la configuración del Secret o del tema, los permisos o las cuotas.
Las rotaciones en tránsito deben completarse antes de que se pueda iniciar otra rotación en orden para evitar que las rotaciones simultáneas generen un comportamiento inesperado. Las notificaciones son se considera en tránsito mientras Secret Manager intenta enviar el mensaje a Pub/Sub Las rotaciones programadas se omiten si hay una rotación en tránsito. Secret Manager reintentará automáticamente los intentos fallidos de enviar un mensaje a de hasta siete días. Después de ese período, se anula la rotación.
Ejemplos
Configura la rotación de un Secret
Crea un secreto con un next_rotation_time
que rota cada 30 días a partir del 1 de junio de 2021:
gcloud
gcloud secrets create secret-id \ --replication-policy "automatic" \ --next-rotation-time="2021-06-01T09:00:00Z" \ --rotation-period="2592000s" \ --topics="full-topic-name"
API
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_ID}" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{}
},
"topics": {"name" : "projects/${PROJECT_ID}/topics/${TOPIC_NAME}"},
"rotation":
{
"next_rotation_time": "2021-06-01T09:00:00Z",
"rotation_period" : '2592000s'
},
}
EOF
Actualiza la configuración de rotación de un secreto
Las rutas de updateMask válidas para la rotación incluyen: rotation
, rotation.next_rotation_time
y rotation.rotation_period
.
Actualiza el next_rotation_time
de un secreto:
gcloud
gcloud secrets update secret-id \ --next-rotation-time "2022-06-01T09:00:00Z"
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"rotation": {"next_rotation_time": "2040-06-01T09:00:00Z"}
}
EOF
Inhabilitar la rotación de un Secret
Quita el next_rotation_time
de un secreto:
gcloud
gcloud secrets update secret-id \ --remove-next-rotation-time
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Quitar el programa de rotación de un secreto. Esto quita los elementos next_rotation_time
y rotation_period
.
gcloud
gcloud secrets update secret-id \ --remove-rotation-schedule
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
¿Qué sigue?
Obtén información para habilitar las claves de encriptación administradas por el cliente (CMEK) para Secret Manager.
Obtén más información sobre cómo usar ETags para el control de simultaneidad optimista.