O Secret Manager permite-lhe agendar rotações periódicas dos seus segredos. O Secret Manager envia notificações para tópicos do Pub/Sub associados aos seus segredos, com base na frequência e na hora de rotação que especificar. Esta página descreve como configurar estas programações de rotação.
Como funcionam as notificações de rotação de segredos
O Secret Manager aciona uma mensagem SECRET_ROTATE
para os tópicos Pub/Sub
designados no next_rotation_time
do segredo. Existem duas formas de determinar esta data/hora:
-
Definido pelo utilizador: pode especificar o
next_rotation_time
quando cria ou atualiza o segredo. -
Período de rotação: se definir um
rotation_period
, o Secret Manager calcula automaticamente onext_rotation_time
. O Secret Manager envia a mensagemSECRET_ROTATE
após o tempo especificado derotation_period
e, em seguida, atualiza onext_rotation_time
para agendar a rotação seguinte.
Tem de configurar um subscritor do Pub/Sub para receber e agir nas mensagens SECRET_ROTATE
.
Também pode ter de configurar fluxos de trabalho adicionais em resposta a estas notificações, como criar uma nova versão do segredo e implementar as alterações nas suas aplicações.
Requisitos e considerações para horários de rotação de segredos
-
Os tópicos do Pub/Sub têm de ser configurados no segredo. Para saber como criar um tópico e uma subscrição do Pub/Sub, consulte o início rápido do Pub/Sub. Para saber como configurar tópicos num segredo, consulte o artigo Notificações de eventos para o Secret Manager.
-
Tem de definir
next_rotation_time
serotation_period
for especificado. -
next_rotation_time
não pode ser definido para menos de cinco minutos no futuro. -
O
rotation_period
não pode ter uma duração inferior a uma hora. Para orientações sobre a formatação de data/hora, consulte a Google Cloud referência de data/hora -
Embora o Secret Manager volte a tentar automaticamente as tentativas de entrega de mensagens com falhas, não podemos garantir a entrega bem-sucedida se existirem configurações incorretas relacionadas com o segredo, a configuração do tópico, as autorizações ou as quotas.
-
As rotações em curso têm de ser concluídas antes de se poder iniciar outra rotação para evitar que as rotações simultâneas produzam um comportamento inesperado. As notificações são consideradas em trânsito enquanto o Secret Manager tenta enviar a mensagem para o Pub/Sub. As rotações agendadas são ignoradas se houver uma rotação em curso. O Secret Manager tenta automaticamente enviar mensagens novamente em caso de falha durante um período máximo de sete dias, após o qual a rotação é cancelada.
Configure a rotação num segredo
Pode configurar um agendamento de rotação através da Google Cloud consola, da CLI do Google Cloud ou da API Secret Manager.
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Na página Secret Manager, clique no separador Segredos regionais e, de seguida, clique em Criar segredo regional.
-
Na página Criar segredo regional, introduza um nome para o segredo no campo Nome.
-
Introduza um valor para o segredo (por exemplo,
abcd1234
). Também pode carregar um ficheiro de texto que contenha o valor do segredo através da opção Carregar ficheiro. Esta ação cria automaticamente a versão do Secret. -
Escolha a localização onde quer que o seu segredo regional seja armazenado na lista Região.
-
Aceda à secção Rotação e, de seguida, selecione a caixa de verificação Definir período de rotação.
-
Na lista Período de rotação, selecione uma das opções predefinidas ou selecione Personalizado para configurar a sua própria programação de rotação.
-
No campo A partir de, introduza a data e a hora de início do período de rotação.
-
Clique em Criar segredo.
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo.
- LOCATION: a Google Cloud localização do segredo.
- NEXT_ROTATION_TIME: a data/hora em que a primeira rotação deve ser concluída no formato ISO 8601, por exemplo,
2021-06-01T09:00:00Z
. - ROTATION_PERIOD: o intervalo, em segundos, para rodar a chave. Por exemplo, para rodar a chave a cada 2592000 s, define um valor de
2592000s
. - FULL_TOPIC_NAME: o nome completo do seu 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a Google Cloud localização do segredo
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- 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 do pedido:
{ "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"}, "rotation": { "next_rotation_time": "2021-06-01T09:00:00Z", "rotation_period" : '2592000s' }, }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" } }
Atualize as definições de rotação de um segredo
Pode atualizar as seguintes definições de rotação quando fizer um pedido de atualização:
-
rotation
: refere-se à configuração de rotação completa do segredo. -
rotation.next_rotation_time
: Isto segmenta especificamente a 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 definições de rotação do segredo, use um dos seguintes métodos:
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Na página Secret Manager, clique no separador Segredos regionais.
-
Localize o segredo que quer editar e clique no menu
Ações associado a esse segredo. No menu Ações, clique em Editar. -
Aceda à secção Rotação. Atualize o período de rotação conforme necessário e clique em Atualizar chave secreta.
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo.
- LOCATION: a Google Cloud localização do segredo.
- NEXT_ROTATION_TIME: a data/hora em que a primeira rotação deve ser 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a Google Cloud localização do segredo.
- PROJECT_ID: o Google Cloud ID do projeto.
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo.
- NEXT_ROTATION_TIME: a data/hora em que a primeira rotação deve ser 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 do pedido:
{ "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"} }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" } }
Desative a rotação num segredo
Para desativar a rotação de segredos, use um dos seguintes métodos:
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Na página Secret Manager, clique no separador Segredos regionais.
-
Localize o segredo que quer editar e clique no menu
Ações associado a esse segredo. No menu Ações, clique em Editar. -
Aceda à secção Rotação. Desmarque a caixa de verificação Definir período de rotação e, de seguida, clique em Atualizar segredo.
gcloud
Remova o next_rotation_time
de um segredo
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- LOCATION: a Google Cloud localização 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
Remova o horário de rotação de um segredo. Esta ação remove next_rotation_time
e
rotation_period
.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- LOCATION: a Google Cloud localização 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
Remova a hora de rotação seguinte de um segredo
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a Google Cloud localização do segredo
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
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 do pedido:
{}
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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\"" }
Remova o horário de rotação de um segredo. Esta ação remove a hora de rotação seguinte e o período de rotação.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION: a Google Cloud localização do segredo
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
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 do pedido:
{}
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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\"" }