O Secret Manager dá suporte a programações de rotação de secrets. O Secret Manager 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. Este tópico mostra como configurar programações únicas ou periódicas nos seus secrets para receber notificações quando for o momento de trocar o secret.
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?
O Secret Manager envia uma mensagem SECRET_ROTATE
para os tópicos do Pub/Sub
configurados no secret no next_rotation_time
do secret. 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 vai enviar uma mensagemSECRET_ROTATE
após orotation_period
decorrido.next_rotation_time
será atualizado para refletir o novo tempo de rotação.
Você precisa configurar um assinante do Pub/Sub para receber e agir com base nas mensagens SECRET_ROTATE
. Se necessário, implemente fluxos de trabalho adicionais, 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 Secret Manager
v1
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. Arotation_period
não pode ter menos de uma hora de duração. Para orientações de formatação de carimbo de data/hora, consulte a referência de data/hora do gcloud.Erros de entrega: o Secret Manager vai tentar novamente automaticamente as tentativas de envio de uma mensagem. O Secret Manager não oferece garantias referentes à entrega caso haja configurações incorretas relacionadas à configuração de secrets ou tópicos, permissões ou cotas.
As rotações em andamento precisam ser concluídas antes da outra rotação para evitar que rotações simultâneas produzam comportamentos inesperados. As notificações são consideradas em trânsito enquanto o Secret Manager está tentando 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á repetir automaticamente as tentativas com falha de enviar uma mensagem por até sete dias. Depois desse período, a rotação será cancelada.
Exemplos
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
{
"rotation": {"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
Remover 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) no Secret Manager.
Saiba como usar ETags para controle de simultaneidade otimista.