Definir a data de validade de um secret regional

Esta página descreve como definir uma data de validade para um secret novo ou existente, alterar a data de validade de um secret e remover a data de validade definida anteriormente de um secret.

Visão geral

Por padrão, os secrets armazenados no Secret Manager existem até que um usuário os exclua. É possível anexar um prazo de validade a uma senha que possa ser armazenada apenas por um período limitado e conhecido. No prazo de validade configurado de um secret, ele é excluído automaticamente.

Se você não tiver requisitos para excluir a chave secreta, use as condições do IAM ou o estado da versão Desativada para revogar o acesso com segurança.

Você pode inserir um tempo de expiração como um carimbo de data/hora ou uma duração. Quando os metadados secretos são recuperados, a expiração é sempre retornada como um carimbo de data/hora, independentemente de como foi fornecida.

Uma validade pode ser adicionada, atualizada ou removida a qualquer momento.

Limitações

  • A expiração de um secret não pode estar a menos de 60 segundos ou a mais de 100 anos de distância.

Usar com segurança os secrets expirados

Quando um secret expira no Secret Manager, ele é excluído permanentemente. A melhor maneira de detectar secrets de breve a expirar é usando Condições do IAM para remover as permissões das contas que usam o secret antes da expiração.

Para gerenciar o acesso a secrets de maneira eficaz, defina uma condição baseada em tempo nas permissões concedidas.

  • Definir uma data de validade: as permissões precisam expirar pouco antes do secret. Isso permite identificar fluxos de trabalho ou processos que ainda podem estar usando o segredo de forma inesperada.

  • Monitorar interrupções: se algum fluxo de trabalho parar de funcionar depois que as permissões forem revogadas, você poderá restaurar o acesso rapidamente para minimizar o impacto.

  • Ajuste conforme necessário: se você precisar de mais tempo, poderá estender a data de validade do secret ou até mesmo removê-lo se ele não for mais necessário.

Essa abordagem ajuda a garantir que o acesso aos secrets seja controlado com rigor e disponível apenas pelo tempo necessário, reduzindo o risco de acesso não autorizado ou uso indevido.

Por exemplo, imagine um cenário em que uma conta de serviço precisa acessar um secret todos os dias por 30 dias. É possível configurar o secret para expirar 60 dias após a criação. Isso fornece um período de buffer após o uso esperado. Também é possível configurar uma vinculação de IAM condicional para conceder à conta de serviço o papel de acessador secreto por 45 dias. Se a conta de serviço tentar acessar o secret após 45 dias, a permissão será negada. Todos os fluxos de trabalho que dependem desse secret param de funcionar. Um administrador pode restaurar rapidamente o acesso concedendo o papel de acessador de secret de volta à conta de serviço. Isso permite que eles tenham tempo para investigar por que o secret ainda é necessário após o período esperado de 30 dias, já que o secret não será excluído por mais 15 dias.

Além disso, é possível criar alertas com base em avisos de registros de secrets que expiram em breve. Para mais informações, consulte a seção Gerenciamento de registros de expiração deste documento.

Especificar carimbos de data/hora e durações

  • Os valores de carimbo de data/hora precisam ser formatados como RFC 3339, por exemplo, 2100-01-01T09:00:00-05:00.

  • Os valores de duração precisam ser formatados como o número de segundos, incluindo o sufixo s, por exemplo, 86400s.

Definir a data de validade de um secret

É possível definir uma data e hora de expiração em um secret usando o console do Google Cloud, a Google Cloud CLI ou a API Secret Manager.

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Na página Secret Manager, clique na guia Regional secrets e em Criar secret regional.

  3. Na página Criar secret regional, insira um nome para o secret no campo Nome.

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

  5. Escolha o local em que o secret regional vai ser armazenado na lista Região.

  6. Acesse Validade e marque a caixa de seleção Definir data de validade.

  7. Insira 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 é possível usar o seletor de data e hora para inserir a data e a hora de expiração.

  8. Clique em Criar secret.

gcloud

Criar um secret expirado usando um carimbo de data/hora

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
  • TIMESTAMP: o tempo de expiração 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 --location=LOCATION \
    --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
    --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
    --expire-time "TIMESTAMP"

Criar um secret com duração

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
  • DURATION: a duração de validade em segundos, por exemplo, 86400s

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --ttl "DURATION"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --ttl "DURATION"

REST

Criar um secret expirado usando um carimbo de data/hora

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
  • TIMESTAMP: o tempo de expiração no formato RFC 3339, por exemplo, 2100-01-01T09:00:00-05:00

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:

{"expire_time": "TIMESTAMP"}

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-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Criar um secret com duraçã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
  • DURATION: a duração de validade em segundos, por exemplo, 86400s

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:

{"ttl": "DURATION"}

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-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Atualizar a data de validade de um secret

Para atualizar a data e a hora de expiração do secret, use um dos seguintes métodos:

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Na página Secret Manager, clique na guia Secrets regionais.

  3. Para editar um secret, localize-o na lista e clique no menu Ações associado a ele. No menu Ações, clique em Editar.

  4. Acesse a seção Expiração. Atualize a data e a hora de validade e clique em Atualizar segredo.

gcloud

Atualizar a expiração de um secret usando um carimbo de data/hora

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: a região do Google Cloud em que você armazenou os dados confidenciais
  • TIMESTAMP: o tempo de expiração 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 --location=LOCATION \
  --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --expire-time "TIMESTAMP"

Atualizar a expiração de um secret usando uma duração

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
  • DURATION: a duração de validade em segundos, por exemplo, 86400s

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --ttl "DURATION"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --ttl "DURATION"

REST

Atualizar a expiração de um secret usando um carimbo de data/hora

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
  • TOKEN: seu próprio token de acesso Oauth2.0
  • TIMESTAMP: o tempo de expiração no formato RFC 3339, por exemplo, 2100-01-01T09:00:00-05:00

Método HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time

Corpo JSON da solicitação:

{"expire_time": "TIMESTAMP"}

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 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=expire_time"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$headers = @{ "Authorization" = "Bearer TOKEN" }

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=expire_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-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Atualizar a expiração de um secret usando uma duraçã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
  • DURATION: a duração de validade em segundos, por exemplo, 86400s

Método HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl

Corpo JSON da solicitação:

{"ttl": "DURATION"}

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 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=ttl"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$headers = @{ "Authorization" = "Bearer TOKEN" }

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=ttl" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Remover a data de validade de um secret

Para remover a data e a hora de expiração do secret, use um dos seguintes métodos:

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Na página do Secret Manager, clique na guia Secrets regionais.

  3. Para editar um secret, localize-o na lista e clique no menu Ações associado a ele. No menu Ações, clique em Editar.

  4. Acesse a seção Expiração. Desmarque a caixa de seleção Definir data de validade e clique em Atualizar 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

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --remove-expiration

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --remove-expiration

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --remove-expiration

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
  • TOKEN: seu próprio token de acesso Oauth2.0

Método HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl

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 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=ttl"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$headers = @{ "Authorization" = "Bearer TOKEN" }

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=ttl" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "etag": "\"162143305d282d\""
}

Geração de registros de expiração

Os Registros de auditoria do Cloud não são produzidos quando um secret expira automaticamente. Em vez disso, ele grava registros no recurso Secret do Secret Manager em intervalos específicos que levam à expiração do secret.

Tempo do registro Tipo de evento secreto
30 dias antes da expiração EXPIRES_IN_30_DAYS
Sete dias antes da expiração EXPIRES_IN_7_DAYS
1 dia antes da expiração EXPIRES_IN_1_DAY
Seis 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 do Logging para informações sobre como visualizar esses registros. É possível criar métricas com base em registros e usá-las para criar alertas de datas de expiração futuras.

A seguir