O Secret Manager permite programar rotações periódicas dos seus secrets. O Secret Manager faz isso enviando notificações para tópicos do Pub/Sub associados aos seus secrets com base na frequência e no tempo de rotação especificados. Esta página descreve como configurar essas programações de rotação.
Como as notificações de rotação de segredos funcionam
O Secret Manager aciona uma mensagem SECRET_ROTATE
para os tópicos do Pub/Sub
designados no next_rotation_time
do secret. Há duas maneiras de determinar esse carimbo de data/hora:
-
Definido pelo usuário: é possível especificar o
next_rotation_time
ao criar ou atualizar o secret. -
Período de rotação: se você definir um
rotation_period
, o Secret Manager vai calcular automaticamente onext_rotation_time
. O Secret Manager envia a mensagemSECRET_ROTATE
depois que orotation_period
especificado decorrido e atualiza onext_rotation_time
para programar a próxima rotação.
Você precisa configurar um assinante do Pub/Sub para receber e agir com base nas mensagens SECRET_ROTATE
.
Talvez você também precise configurar outros fluxos de trabalho em resposta a essas notificações, como criar
uma nova versão do secret e implantar as mudanças nos seus aplicativos.
Requisitos e considerações para programações de rotação de segredos
-
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 Secret Manager.
-
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. -
A
rotation_period
não pode ter menos de uma hora de duração. Para conferir orientações de formatação de carimbo de data/hora, consulte a referência de data/hora do Google Cloud. -
Embora o Secret Manager tente automaticamente o envio de mensagens com falha, não podemos garantir o envio se houver configurações incorretas relacionadas ao secret, à configuração do tópico, às permissões ou às 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 tenta repetir automaticamente as tentativas com falha de envio de uma mensagem por até sete dias. Depois desse período, a rotação é cancelada.
Configurar a rotação em um secret
É possível configurar uma programação de rotação usando o console do Google Cloud, a Google Cloud CLI ou a API Secret Manager.
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página Secret Manager, clique na guia Regional secrets e em Criar secret regional.
-
Na página Criar secret regional, insira um nome para o secret no campo Nome.
-
Insira um valor para o secret (por exemplo,
abcd1234
). Também é possível fazer upload de um arquivo de texto com o valor do secret usando a opção Fazer upload do arquivo. Essa ação cria automaticamente a versão do secret. -
Escolha o local em que o secret regional vai ser armazenado na lista Região.
-
Acesse a seção Rotação e marque a caixa de seleção Definir período de rotação.
-
Na lista Período de rotação, selecione uma das opções padrão ou escolha Personalizado para configurar sua própria programação de rotação.
-
No campo Iniciar em, insira a data e a hora de início do período de rotação.
-
Clique em Criar secret.
gcloud
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado.
- LOCATION: o local do Google Cloud do segredo.
- NEXT_ROTATION_TIME: o carimbo de data/hora em que a primeira rotação foi concluída no formato ISO 8601, por exemplo,
2021-06-01T09:00:00Z
. - ROTATION_PERIOD: o intervalo, em segundos, para girar a chave. Por exemplo, para girar a chave a cada 2592000 segundos, defina um valor de
2592000s
. - FULL_TOPIC_NAME: o nome completo do tópico do Pub/Sub no formato
projects/your-project-id/topics/your-topic-name
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME" \ --rotation-period="ROTATION_PERIOD" \ --topics="FULL_TOPIC_NAME"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME" ` --rotation-period="ROTATION_PERIOD" ` --topics="FULL_TOPIC_NAME"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME" ^ --rotation-period="ROTATION_PERIOD" ^ --topics="FULL_TOPIC_NAME"
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do Google Cloud do segredo
- PROJECT_ID: o ID do projeto do Google Cloud
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado
- TOPIC_NAME: o nome do tópico
Método HTTP e URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
Corpo JSON da solicitação:
{ "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"}, "rotation": { "next_rotation_time": "2021-06-01T09:00:00Z", "rotation_period" : '2592000s' }, }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Atualizar as configurações de rotação de um secret
É possível atualizar as seguintes configurações de rotação ao fazer uma solicitação de atualização:
-
rotation
: refere-se a toda a configuração de rotação do secret. -
rotation.next_rotation_time
: é direcionado especificamente ao carimbo de data/hora que indica quando a próxima rotação pode ocorrer. -
rotation.rotation_period
: especifica a duração entre cada rotação.
Para atualizar as configurações de rotação do secret, use um dos seguintes métodos:
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página Secret Manager, clique na guia Secrets regionais.
-
Localize o segredo que você quer editar e clique no menu
Ações associado a ele. No menu Ações, clique em Editar. -
Acesse a seção Rotação. Atualize o período de rotação conforme necessário e clique em Atualizar segredo.
gcloud
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado.
- LOCATION: o local do Google Cloud do segredo.
- NEXT_ROTATION_TIME: o carimbo de data/hora em que a primeira rotação foi concluída no formato ISO 8601, por exemplo,
2021-06-01T09:00:00Z
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME"
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do Google Cloud do segredo.
- PROJECT_ID: o ID do projeto do Google Cloud.
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado.
- NEXT_ROTATION_TIME: o carimbo de data/hora em que a primeira rotação foi concluída no formato ISO 8601, por exemplo,
2021-06-01T09:00:00Z
.
Método HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
Corpo JSON da solicitação:
{ "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"} }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Desativar a rotação em um secret
Para desativar a rotação de segredos, use um dos seguintes métodos:
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página Secret Manager, clique na guia Secrets regionais.
-
Localize o segredo que você quer editar e clique no menu
Ações associado a ele. No menu Ações, clique em Editar. -
Acesse a seção Rotação. Desmarque a caixa de seleção Definir período de rotação e clique em Atualizar segredo.
gcloud
Remover o next_rotation_time
de um secret
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado
- LOCATION: o local do Google Cloud do segredo
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-next-rotation-time
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-next-rotation-time
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-next-rotation-time
Remover a programação de rotação de um secret. Isso remove next_rotation_time
e
rotation_period
.
Antes de usar os dados do comando abaixo, faça estas substituições:
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado
- LOCATION: o local do Google Cloud do segredo
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-rotation-schedule
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-rotation-schedule
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-rotation-schedule
REST
Remover o próximo horário de rotação de um secret
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do Google Cloud do segredo
- PROJECT_ID: o ID do projeto do Google Cloud
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado
Método HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
Corpo JSON da solicitação:
{}
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }
Remover a programação de rotação de um secret. Isso remove o tempo da próxima rotação e o período de rotação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do Google Cloud do segredo
- PROJECT_ID: o ID do projeto do Google Cloud
- SECRET_ID: o ID do secret ou do identificador totalmente qualificado
Método HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation
Corpo JSON da solicitação:
{}
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }