Esta página descreve como definir uma data de validade para um Secret novo ou existente, alterar a data de validade de um Secret existente e remover qualquer data de validade definida anteriormente de um Secret.
Vista geral
Por predefinição, os segredos armazenados no Secret Manager existem até um utilizador os eliminar. Se um segredo só tiver de ser armazenado durante um período conhecido e limitado, pode anexar-lhe um prazo de validade. No prazo de validade configurado de um segredo, este é eliminado automaticamente.
Se não tiver requisitos que exijam a eliminação do segredo, pondere usar as condições do IAM ou o estado da versão Desativado para revogar o acesso de forma segura.
Pode introduzir uma hora de validade como uma indicação de tempo ou uma duração. Quando os metadados secretos são obtidos, a expiração é sempre devolvida como uma data/hora, independentemente da forma como foi fornecida.
Pode adicionar, atualizar ou remover uma data de validade de um segredo em qualquer altura.
Limitações
-
A expiração de um segredo não pode ser inferior a 60 segundos nem superior a 100 anos.
Use segredos com prazo de validade em segurança
Quando um segredo expira no Secret Manager, é eliminado irreversivelmente. A melhor forma de detetar segredos com data de validade próxima é usar as condições de IAM para remover autorizações das contas que usam o segredo antes da data de validade.
Para gerir o acesso a segredos de forma eficaz, defina uma condição baseada no tempo nas autorizações concedidas.
-
Defina uma data de validade: as autorizações devem expirar pouco antes da data de validade do próprio segredo. Isto permite-lhe identificar fluxos de trabalho ou processos que ainda possam estar a usar o segredo inesperadamente.
-
Monitorize as interrupções: se algum fluxo de trabalho deixar de funcionar após a revogação das autorizações, pode restaurar rapidamente o acesso para minimizar qualquer impacto.
-
Ajuste conforme necessário: se precisar de mais tempo, pode prolongar a data de validade do segredo ou até removê-lo completamente se já não for necessário.
Além disso, é possível criar alertas com base em avisos de registos de segredos que expiram em breve. Para obter informações, consulte a secção Registo de expiração deste documento.
Especifique indicações de tempo e durações
-
Os valores de data/hora têm de ser formatados como RFC 3339, por exemplo:
2100-01-01T09:00:00-05:00
. -
Os valores de duração têm de ser formatados como o número de segundos, incluindo o sufixo s, por exemplo,
86400s
.
Defina a data de validade de um segredo
Pode definir uma data e uma hora de validade para um segredo 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 em Criar segredo.
-
Na página Criar segredo, 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. -
Aceda a Validade e, de seguida, selecione a caixa de verificação Definir data de validade.
-
Introduza a data e a hora de validade no formato Mês/Dia/Ano, Hora:Minuto AM/PM, por exemplo,
7/31/20, 1:00 AM
. Também pode usar o selecionador de data e hora para introduzir a data e a hora de validade. -
Clique em Criar segredo.
gcloud
Crie um segredo com prazo de validade usando uma data/hora
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
- TIMESTAMP: a hora de validade no formato RFC 3339, por exemplo,
2100-01-01T09:00:00-05:00
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID \ --replication-policy "automatic" \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --expire-time "TIMESTAMP"
Crie um segredo com prazo de validade usando uma duração
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
- DURATION: a duração da expiração em segundos, por exemplo,
86400s
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID \ --replication-policy "automatic" \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --replication-policy "automatic" ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --replication-policy "automatic" ^ --ttl "DURATION"
REST
Crie um segredo com prazo de validade usando uma data/hora
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- TIMESTAMP: a hora de validade no formato RFC 3339, por exemplo,
2100-01-01T09:00:00-05:00
Método HTTP e URL:
POST https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID
Corpo JSON do pedido:
{ "replication": {"automatic": {}}, "expire_time": "TIMESTAMP" }
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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Crie um segredo com prazo de validade usando uma duração
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- DURATION: a duração da expiração em segundos, por exemplo,
86400s
Método HTTP e URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
Corpo JSON do pedido:
{ "replication": {"automatic": {}}, "ttl": "DURATION" }
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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/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-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Atualize a data de validade de um segredo
Para atualizar a data e a hora de validade do segredo, use um dos seguintes métodos:
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Para editar um segredo, localize-o na lista e, de seguida, clique no menu
Ações associado a esse segredo. No menu Ações, clique em Editar. -
Aceda à secção Expiração. Atualize a data e a hora de validade e clique em Atualizar chave secreta.
gcloud
Atualize a data de validade de um segredo através de uma data/hora
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
- TIMESTAMP: a hora de validade no formato RFC 3339, por exemplo,
2100-01-01T09:00:00-05:00
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID \ --expire-time "TIMESTAMP"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --expire-time "TIMESTAMP"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --expire-time "TIMESTAMP"
Atualize a validade de um segredo através de uma duração
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
- DURATION: a duração da expiração em segundos, por exemplo,
86400s
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID \ --ttl "DURATION"
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --ttl "DURATION"
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --ttl "DURATION"
REST
Atualize a data de validade de um segredo através de uma data/hora
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- TOKEN: a sua própria chave de acesso OAuth 2.0
- TIMESTAMP: a hora de validade no formato RFC 3339, por exemplo,
2100-01-01T09:00:00-05:00
Método HTTP e URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time
Corpo JSON do pedido:
{"expire_time": "TIMESTAMP"}
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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Atualize a validade de um segredo através de uma duração
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- DURATION: a duração da expiração em segundos, por exemplo,
86400s
Método HTTP e URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl
Corpo JSON do pedido:
{"ttl": "DURATION"}
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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
Remova a data de validade de um segredo
Para remover a data e a hora de validade do Secret, use um dos seguintes métodos:
Consola
-
Na Google Cloud consola, aceda à página Secret Manager.
-
Para editar um segredo, localize-o na lista e, de seguida, clique no menu
Ações associado a esse segredo. No menu Ações, clique em Editar. -
Aceda à secção Expiração. Desmarque a caixa de verificação Definir data de validade e, em seguida, clique em Atualizar Secret.
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
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID \ --remove-expiration
Windows (PowerShell)
gcloud secrets update SECRET_ID ` --remove-expiration
Windows (cmd.exe)
gcloud secrets update SECRET_ID ^ --remove-expiration
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o Google Cloud ID do projeto
- SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
- TOKEN: a sua própria chave de acesso OAuth 2.0
Método HTTP e URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
Registo de expiração
Os registos de auditoria da nuvem não são produzidos quando um segredo expira automaticamente. Em alternativa, o Secret Manager escreve registos no recurso Secret do Secret Manager a intervalos específicos que antecedem a expiração de um Secret.
Registar tempo | Tipo de evento secreto |
---|---|
30 dias antes da validade | EXPIRES_IN_30_DAYS |
7 dias antes da validade | EXPIRES_IN_7_DAYS |
1 dia antes da validade | EXPIRES_IN_1_DAY |
6 horas antes da expiração | EXPIRES_IN_6_HOURS |
1 hora antes da expiração | EXPIRES_IN_1_HOUR |
na expiração | EXPIRED |
Consulte o Guia de início rápido de registo para obter informações sobre como ver estes registos. Pode criar métricas baseadas em registos e usá-las para criar alertas para expirações futuras.
O que se segue?
- Saiba como configurar agendamentos de rotação para secrets.
- Saiba como ativar as chaves de encriptação geridas pelo cliente (CMEK) para o Secret Manager.