Atrasar a destruição de versões de Secrets

Nesta página, explicamos como configurar a destruição atrasada de versões de Secrets, ou remover a duração do atraso de destruição e restaurar versões de Secrets para destruição.

Quando você destrói uma versão do secret, o material do secret é destruído imediatamente e permanente. Como administrador do Secret Manager, é possível configurar a destruição atrasada de versões de secrets para que elas não sejam destruídas imediatamente após e pode ser recuperada por uma duração configurável.

Quando a destruição atrasada é ativada no Secret e você destrói um versão, ocorrerá o seguinte:

  • A versão está desativada, impedindo o uso.
  • O sistema programa a versão para destruição permanente no final do período de atraso.
  • Depois que o período de atraso expirar, a versão do secret será permanente e irrevogável destruídos.

Vantagens

Esse recurso oferece os seguintes benefícios:

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

  • Destruir uma versão do secret aciona uma SECRET_VERSION_DESTROY_SCHEDULED. notificação ao tópicos do Pub/Sub configurados no secret. Como administrador do Secret Manager, é possível cancelar a destruição programada e restaurar a versão do secret ativando ou desativar o secret versão.

Antes de começar

  • Ative a Secret Manager API.

    Ative a API

  • Configure a autenticação.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    É possível usar as amostras da CLI do gcloud nesta página de um dos seguintes ambientes de desenvolvimento:

    • Cloud Shell: para usar um terminal on-line com a CLI gcloud já configurada, ative o Cloud Shell.

      Na parte de baixo desta página, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. A inicialização da sessão pode levar alguns segundos.

    • Shell local: para usar a CLI da gcloud em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud.

    REST

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

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

      gcloud init

Funções exigidas

Para ter as permissões necessárias para configurar a destruição atrasada de versões de Secrets, peça ao administrador para conceder a você Administrador do Secret Manager (roles/secretmanager.admin) no secret. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

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

Configurar a destruição atrasada

É possível ativar a destruição atrasada de uma versão de Secret ao criá-lo ou ao atualizá-lo.

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 a 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 pode ser inserido é de 1 dia, enquanto o valor máximo é 1.000 dias.

  6. Clique em Criar secret.

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

gcloud

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

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

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

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

gcloud beta 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 em que você quer criar o secret
  • SECRET_ID: o ID do secret ou identificador totalmente qualificado para o secret.
  • TTL_DURATION: a duração do atraso de destruição das versões do secret. Tecla Enter em segundos. A duração mínima necessária é de um dia, e a máxima pode ser definida a 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 dele é e as versões relacionadas são excluídas imediatamente.
  • Quando uma data de validade é definida no secret e ele expira, todas as versões de Secrets são destruídas imediatamente, mesmo com a destruição atrasada ativada do secret.

Atualizar duração de 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 associadas a a chave secreta que você quer editar e selecione Editar no menu.
    • Clique no nome do secret para acessar a página Detalhes do secret. No(s) dia(s) Na página Detalhes do secret, clique em Editar secret.
  3. Acesse a seção Atrasar a destruição da versão do secret.

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

  5. Clique em Atualizar secret.

gcloud

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

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

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

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

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

A resposta contém o secret atualizado.

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 o identificador totalmente qualificado para o secret
  • TTL_DURATION: a duração do atraso de 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 de Secrets afetadas pela duração do atraso de destruição dependem da seguinte forma:

  • Quando a destruição atrasada é definida pela primeira vez no secret, o de atraso de destruição afeta todas as versões ativas (ativadas e desativadas) do segredo.
  • Quando a duração de atraso de destruição é atualizada ou removida, as alterações passam a refletir somente em novas versões de secrets em que ocorre uma tentativa de ação de destruição. O segredo As versões que já estão programadas para destruição continuarão sendo destruídas no momento de destruição programado.

Desativar 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 associadas a a chave secreta que você quer editar e selecione Editar no menu.
    • Clique no nome do secret para acessar a página Detalhes do secret. No(s) dia(s) Na página Detalhes do secret, clique em Editar secret.
  3. Acesse a seção Atrasar a 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 de atraso de destruição, use o comando gcloud beta secrets update.

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

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

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

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

A resposta contém o secret atualizado.

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 o identificador totalmente qualificado para o 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:

{}

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 Secrets

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.

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

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

gcloud

Para destruir uma versão do secret, use o comando gcloud beta secrets version 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 para a versão
  • SECRET_ID: o ID do secret ou o identificador totalmente qualificado para o secret

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

A resposta contém a versão destruída 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 o identificador totalmente qualificado para o secret
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado para a 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 a duração de atraso de destruição expirar. Você pode ver a data e a hora exatas em que a versão será destruída na coluna Programada para destruição em a tabela Versões.

Restaurar versões do secret

É possível restaurar uma versão do secret programada para destruição para ativar ou desativar 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. que está programado para destruição.

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

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

gcloud

Para ativar uma versão do secret programada para destruição, use o comando gcloud beta secrets version 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 para a versão
  • SECRET_ID: o ID do secret ou o identificador totalmente qualificado para o secret

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

A resposta contém a versão ativada 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 o identificador totalmente qualificado para o secret
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado para a 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":"2023-10-16T17:21:55.920036Z",
  "state":"ENABLED",
  "replicationStatus":{
     "automatic":{

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

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. que está programado para destruição.

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

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

gcloud

Para desativar uma versão do secret programada para destruição, use o comando gcloud beta secrets version 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 para a versão
  • SECRET_ID: o ID do secret ou o identificador totalmente qualificado para o secret

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta 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 o identificador totalmente qualificado para o secret
  • VERSION_ID: o ID da versão ou o identificador totalmente qualificado para a 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