Defina uma data de validade para um segredo

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.

Esta abordagem ajuda a garantir que o acesso a segredos é rigorosamente controlado e só está disponível durante o tempo necessário, o que reduz o risco de acesso não autorizado ou utilização indevida.

Por exemplo, imagine um cenário em que uma conta de serviço precisa de aceder a um segredo todos os dias durante 30 dias. Pode configurar o segredo para expirar 60 dias após a criação. Isto dá um período de tolerância após a utilização esperada. Também pode configurar uma associação de IAM condicional para conceder à conta de serviço a função Secret Accessor durante 45 dias. Se a conta de serviço tentar aceder ao segredo após 45 dias, a autorização é recusada. Todos os fluxos de trabalho que dependam deste segredo vão deixar de funcionar. Um administrador pode restaurar rapidamente o acesso atribuindo novamente a função de Secret Accessor à conta de serviço. Isto dá-lhes tempo para investigar por que motivo o segredo ainda é necessário após o período esperado de 30 dias, uma vez que o próprio segredo não é eliminado durante mais 15 dias.

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

  1. Na Google Cloud consola, aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. Na página Secret Manager, clique em Criar segredo.

  3. Na página Criar segredo, introduza um nome para o segredo no campo Nome.

  4. 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.

  5. Aceda a Validade e, de seguida, selecione a caixa de verificação Definir data de validade.

  6. 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.

  7. 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

  1. Na Google Cloud consola, aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. 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.

  3. 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

  1. Na Google Cloud consola, aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. 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.

  3. 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?