Atrasar a destruição de versões do secret

Esta página explica como configurar a destruição atrasada de versões secretas, atualizar ou remover a duração do atraso de destruição e restaurar versões secretas programadas para destruição.

Quando você destrói uma versão do secret, o material secreto é destruído imediatamente e permanentemente. Como administrador do Secret Manager, você pode configurar a destruição atrasada das versões de secrets para que elas não sejam destruídas imediatamente após a solicitação e permaneçam recuperáveis por um período configurável.

Quando a destruição atrasada é ativada no secret e você destrói uma versão do secret, o seguinte ocorre:

  • A versão está desativada, o que impede o uso dela.
  • O sistema programa a versão para destruição permanente no final do período de atraso.
  • Após o período de atraso expirar, a versão do secret será destruída de forma permanente e irreversível.

Vantagens

Esse recurso oferece os seguintes benefícios:

  • Uma camada extra de proteção contra destruição acidental ou maliciosa de material secreto crítico. Qualquer usuário com a função Gerenciador de versões de secret do Secret Manager pode destruir uma versão de secret. Essa ação é irreversível. Ao configurar a destruição atrasada, você pode evitar a destruição imediata das versões de segredo. É possível conceder aos usuários o acesso mínimo necessário para gerenciar o ciclo de vida das versões do secret, porque é possível monitorar e evitar a destruição acidental de dados sensíveis.

  • A destruição de uma versão de segredo aciona uma notificação SECRET_VERSION_DESTROY_SCHEDULED para os tópicos do Pub/Sub configurados no segredo. Como administrador do Secret Manager, você pode cancelar a destruição programada e restaurar a versão secreta ativando ou desativando a versão secreta.

Antes de começar

  • Enable the Secret Manager API.

    Enable the API

  • Configure a autenticação.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções exigidas

Para receber as permissões necessárias a fim de configurar a destruição atrasada de versões secretas, peça ao administrador para conceder a você o papel do IAM de Administrador do Gerenciador de segredos (roles/secretmanager.admin) no segredo. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Configurar destruição com atraso

É possível ativar a destruição atrasada de uma versão de secret ao criar ou atualizar o secret.

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Siga as etapas necessárias para criar um secret.

  3. Acesse a seção Atrasar destruição da versão do Secret.

  4. Marque a caixa de seleção Definir duração para destruição atrasada.

  5. No campo Duração de atraso de destruição, insira a duração em dias. O valor mínimo que você pode inserir é de um dia, e o máximo é de 1.000 dias.

  6. Clique em Criar secret.

Para ativar esse recurso em um secret, acesse a página Editar secret e configure a duração do atraso de destruição.

gcloud

Para configurar a duração do atraso de destruição no secret, use o comando gcloud secrets create.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado.
  • TTL_DURATION: a duração do atraso de destruição das versões do secret. Você pode inserir a duração em qualquer formato, por exemplo, dias, horas ou segundos. A duração mínima necessária é de 1 dia, e a máxima pode ser definida como 1.000 dias.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

A resposta contém o secret recém-criado.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud.
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado.
  • TTL_DURATION: a duração do atraso de destruição das versões do secret. Insira a duração em segundos. A duração mínima necessária é de um dia, e a máxima pode ser definida como 1.000 dias.

Método HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID

Corpo JSON da solicitação:

{"replication": {"automatic": {}}, "version_destroy_ttl":"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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
"name":"projects/PROJECT_ID/secrets/SECRET_ID",
"replication":{
   "automatic":{

   }
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\"",
"versionDestroyTtl":"TTL_DURATION"
}

A destruição atrasada não se aplica aos seguintes cenários:

  • Quando um secret é excluído, todo o material secreto e as versões relacionadas são excluídas imediatamente.
  • Quando uma data de expiração é definida no secret e ele expira, todas as versões do secret são destruídas imediatamente, mesmo que a destruição atrasada esteja ativada no secret.

Atualizar a duração do atraso de destruição

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Edite o secret usando uma das seguintes opções:

    • Clique em Mais ações associado ao segredo que você quer editar e selecione Editar no menu.
    • Clique no nome do secret para acessar a página Detalhes do secret. Na página Detalhes do segredo, clique em Editar segredo.
  3. Acesse a seção Atrasar destruição da versão do Secret.

  4. No campo Duração do atraso de destruição, insira a duração atualizada.

  5. Clique em Atualizar secret.

gcloud

Para atualizar a duração do atraso de destruição, use o comando gcloud secrets update.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado
  • TTL_DURATION: a duração do atraso da destruição das versões do secret

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

A resposta contém o secret recém-criado.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado
  • TTL_DURATION: a duração do atraso na destruição das versões do secret

Método HTTP e URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

Corpo JSON da solicitação:

{
  "version_destroy_ttl":"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 $(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/SECRET_ID?updateMask=version_destroy_ttl"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\"",
  "versionDestroyTtl":"TTL_DURATION"
}

As versões do secret afetadas pela duração do atraso de destruição dependem do seguinte:

  • Quando a destruição atrasada é definida pela primeira vez no secret, a duração do atraso de destruição afeta todas as versões ativas (ativadas e desativadas) do secret.
  • Quando a duração do atraso de destruição é atualizada ou removida, as mudanças são refletidas apenas nas novas versões do secret em que a ação de destruição é tentada. As versões secretas que já estão programadas para destruição vão continuar sendo destruídas no horário programado.

Desativar a destruição atrasada

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Edite o secret usando uma das seguintes opções:

    • Clique em Mais ações associado ao segredo que você quer editar e selecione Editar no menu.
    • Clique no nome do secret para acessar a página Detalhes do secret. Na página Detalhes do segredo, clique em Editar segredo.
  3. Acesse a seção Atrasar destruição da versão do Secret.

  4. Desmarque a caixa de seleção Definir duração para destruição atrasada.

  5. Clique em Atualizar secret.

gcloud

Para remover a duração do atraso de destruição, use o comando gcloud secrets update.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows (PowerShell)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows (cmd.exe)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_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 $(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/SECRET_ID?updateMask=version_destroy_ttl"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\""
}

Testar a destruição atrasada de versões de secret

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Clique no nome do secret. A página Detalhes do secret aparece.

  3. Na página Detalhes do secret, na tabela Versões, selecione uma versão do secret.

  4. Na coluna Ações, clique em Ver mais e em Destruir.

  5. Na caixa de diálogo exibida, clique em Programar versões selecionadas para destruição.

gcloud

Para destruir uma versão do segredo, use o comando gcloud secrets versions destroy.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão

Método HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy

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 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/SECRET_ID/versions/VERSION_ID:destroy"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b2fc1cf4\"",
  "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z"
}

A versão do secret é desativada imediatamente e programada para destruição após o término do período de atraso. Você pode conferir a data e a hora exatas em que a versão será destruída na coluna Scheduled for destruction on na tabela Versions.

Restaurar versões de secrets

É possível restaurar uma versão do secret programada para destruição ativando ou desativando a versão do secret.

Ativar uma versão do secret programada para destruição

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Clique no nome do secret. A página Detalhes do secret é exibida.

  3. Na página Detalhes do secret, na tabela Versões, selecione uma versão do secret programada para destruição.

  4. Na coluna Ações, clique em Ver mais e, depois, em Ativar.

  5. Na caixa de diálogo exibida, clique em Ativar versões selecionadas.

gcloud

Para ativar uma versão do secret programada para destruição, use o comando gcloud secrets versions enable.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão

Método HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable

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 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/SECRET_ID/versions/VERSION_ID:enable"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime": "2024-09-04T06:41:57.859674Z",
  "state": "ENABLED",
  "etag": "\"1621457b3c1459\""
}

Desativar uma versão do secret programada para destruição

Console

  1. No console do Google Cloud, acesse a página Secret Manager.

    Acessar o Secret Manager

  2. Clique no nome do secret. A página Detalhes do secret é exibida.

  3. Na página Detalhes do secret, na tabela Versões, selecione uma versão do secret programada para destruição.

  4. Na coluna Ações, clique em Ver mais e, depois, em Desativar.

  5. Na caixa de diálogo exibida, clique em Desativar versões selecionadas.

gcloud

Para desativar uma versão do secret programada para destruição, use o comando gcloud secrets versions disable.

Antes de usar os dados do comando abaixo, faça estas substituições:

  • SECRET_VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

A resposta contém a versão desativada do secret.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • SECRET_ID: o ID do secret ou do identificador totalmente qualificado
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado da versão

Método HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable

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 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/SECRET_ID/versions/VERSION_ID:disable"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

A seguir