O Secret Manager dá suporte a programações de rotação de secrets. Ele envia mensagens para tópicos do Pub/Sub configurados no secret com base na frequência de rotação e no tempo de rotação. Neste tópico, mostramos como configurar programações únicas ou periódicas nos secrets para receber notificações quando for o momento de fazer a rotação.
A rotação periódica de secrets ajuda a
- Limitar o período em que um secret vazado permanece válido e expõe uma vulnerabilidade.
- Exercite o fluxo de rotação continuamente para garantir a confiabilidade do processo.
Como funciona?
Secret Manager envia uma mensagem SECRET_ROTATE
para os tópicos do Pub/Sub configurados no secret em next_rotation_time
. Esse carimbo de data/hora é
definido de duas maneiras:
Fornecido pelo usuário ao criar ou atualizar o secret.
Se um
rotation_period
for fornecido, o Secret Manager enviará uma mensagemSECRET_ROTATE
após orotation_period
decorrido. Onext_rotation_time
vai ser atualizado para refletir o novo horário da próxima rotação.
É preciso configurar um assinante do Pub/Sub para receber e agir em relação às mensagens SECRET_ROTATE
. Se necessário, implemente outros fluxos de trabalho, como adicionar uma nova versão do secret e acionar implantações de aplicativos.
Observações
O gerenciamento de políticas de rotação só está disponível na API
v1
do Secret Manager e na Google Cloud CLI.Os tópicos do Pub/Sub precisam ser configurados no secret. Para saber como criar um tópico e uma assinatura do Pub/Sub, consulte o guia de início rápido do Pub/Sub. Para saber como configurar tópicos em um secret, consulte Notificações de eventos para o Gerenciador de secrets.
O
next_rotation_time
precisará ser definido serotation_period
for especificado.next_rotation_time
não pode ser definido para menos de cinco minutos no futuro. Orotation_period
não pode ter menos de uma hora. Para orientações sobre formatação de carimbo de data/hora, consulte a referência de data e hora da gcloud.Erros de entrega: o Secret Manager automaticamente repete tentativas com falha de enviar uma mensagem. O Secret Manager não oferece garantias de entrega caso haja configurações incorretas de secrets ou tópicos, permissões ou cotas.
As rotações em andamento precisam ser concluídas antes que outra rotação possa ser iniciada para evitar que rotações simultâneas produzam um comportamento inesperado. As notificações são consideradas em andamento enquanto o Secret Manager tenta enviar a mensagem para o Pub/Sub. As rotações programadas serão ignoradas se houver uma rotação em andamento. O Secret Manager tentará automaticamente realizar tentativas com falha de enviar uma mensagem por até sete dias. Após esse período, a rotação será cancelada.
Examples
Configurar a rotação em um secret
Crie um secret com um next_rotation_time
que é alternado a cada 30 dias a partir de 1o de junho 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
Atualizar as configurações de rotação de um secret
Os caminhos válidos do updateMask para rotação incluem: rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Atualize o next_rotation_time
de um secret:
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
{
"next_rotation_time": "2040-06-01T09:00:00Z"
}
EOF
Desativar a rotação em um secret
Remova o next_rotation_time
de um secret:
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
Remova a programação de rotação de um secret. Isso remove next_rotation_time
e 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
A seguir
Saiba como ativar as chaves de criptografia gerenciadas pelo cliente (CMEK) para o Secret Manager.
Saiba como usar ETags para ter controle de simultaneidade otimista.