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

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

Por padrão, quando um usuário escolhe destruir uma versão de secret no Secret Manager, o material do secret é destruído imediatamente e de forma permanente. No entanto, os usuários com o papel de administrador do Secret Manager podem configurar a destruição atrasada de versões de secrets, o que garante que a versão não seja destruída imediatamente após a solicitação e permaneça recuperável por um período configurável.

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

  • A versão está desativada, o que impede o uso dela.

  • O sistema programa a versão para destruição permanente no fim 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 irrevogá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 secrets 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 secret. Você pode conceder aos usuários o acesso mínimo necessário para gerenciar o ciclo de vida das versões secretas e monitorar e evitar a destruição acidental de dados sensíveis.

  • A destruição de uma versão do secret aciona uma notificação SECRET_VERSION_DESTROY_SCHEDULED para os tópicos do Pub/Sub configurados no secret. Os usuários com a função de administrador do Secret Manager podem cancelar a destruição programada e restaurar a versão do secret ativando ou desativando a versão do secret.

Antes de começar

  1. Enable the Secret Manager API.

    Enable the API

  2. 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 a CLI gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      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 para configurar a destruição atrasada de versões de secrets, peça ao administrador para conceder a você o papel do IAM de Administrador do Secret Manager (roles/secretmanager.admin) em um secret. 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 atrasada

      É possível ativar a destruição atrasada de uma versão secreta ao criar ou atualizar o secret. Para configurar a destruição atrasada, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

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

      3. Na página Criar secret, 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. Acesse a seção Atrasar a destruição da versão secreta e marque a caixa de seleção Definir a duração da destruição com atraso.

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

      7. Clique em Criar secret.

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

      gcloud

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

      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • TTL_DURATION: a duração do atraso na 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 exigida é 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 o identificador totalmente qualificado do secret.
      • TTL_DURATION: a duração do atraso na destruição das versões do secret. Insira a duração em segundos. A duração mínima exigida é 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 nos seguintes cenários:

      • Quando um secret é excluído, todo o material e as versões relacionadas são excluídos imediatamente.

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

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

      Para atualizar a duração do atraso na destruição, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

      2. Para editar um secret, use um dos seguintes métodos:

        • Clique em Ações no secret que você quer editar e em Editar.

        • Clique no nome do secret para acessar a página de detalhes. Na página de detalhes do secret, clique em Editar secret.

      3. Na página Editar secret, acesse a seção Atrasar destruição da versão do secret. Atualize a duração do atraso conforme necessário e clique em Atualizar segredo.

      gcloud

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

      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • TTL_DURATION: a duração do atraso na 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 Google Cloud
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • 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 na destruição dependem do seguinte:

      • Quando a destruição atrasada é definida pela primeira vez no secret, a duração do atraso afeta todas as versões ativas (ativadas e desativadas) do secret.

      • Quando a duração do atraso na destruição é atualizada ou removida, as mudanças refletem apenas em novas versões do secret em que a ação de destruição é tentada. As versões do secret que já estão programadas para destruição vão continuar sendo destruídas no horário programado.

      Desativar destruição com atraso

      Para desativar a destruição atrasada de versões, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

      2. Para editar um secret, use um dos seguintes métodos:

        • Clique em Ações no secret que você quer editar e em Editar.

        • Clique no nome do secret para acessar a página de detalhes. Na página de detalhes do secret, clique em Editar secret.

      3. Na página Editar secret, acesse a seção Atrasar destruição da versão do secret. Desmarque a caixa de seleção Definir duração para destruição atrasada 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 o identificador totalmente qualificado do secret.

      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 Google Cloud
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado 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:

      {}
      

      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\""
      }
      

      Programar versões do Secret para destruição atrasada

      Para programar a destruição atrasada de uma versão secreta, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

      2. Na página Secret Manager, clique em um secret para acessar as versões dele. A destruição atrasada de versões precisa ser configurada neste secret.

      3. Na página de detalhes do secret, na guia Versões, selecione a versão do secret que você quer destruir.

      4. Clique em Ações e em Destruir.

      5. Na caixa de diálogo de confirmação, insira o ID do secret para confirmar e clique em Programar destruição das versões selecionadas.

      gcloud

      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 dela.
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.

      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 Google Cloud
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • VERSION_ID: o ID da versão ou o identificador totalmente qualificado dela.

      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 vencimento do período de atraso. A data e a hora exatas em que a versão será destruída podem ser encontradas na coluna Programada para destruição em da tabela Versões.

      Restaurar versões de secret

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

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

      Para ativar uma versão secreta programada para destruição, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

      2. Na página Secret Manager, clique em um secret para acessar as versões dele.

      3. Na página de detalhes do secret, na guia Versões, selecione a versão do secret programada para destruição.

      4. Clique em Ações e em Ativar.

      5. Na caixa de diálogo de confirmação, clique em Ativar versões selecionadas.

      gcloud

      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 dela.
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.

      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 Google Cloud
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • VERSION_ID: o ID da versão ou o identificador totalmente qualificado dela.

      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

      Para desativar uma versão do secret programada para destruição, use um dos seguintes métodos:

      Console

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

        Acessar o Secret Manager

      2. Na página Secret Manager, clique em um secret para acessar as versões dele.

      3. Na página de detalhes do secret, na guia Versões, selecione a versão do secret programada para destruição.

      4. Clique em Ações e em Desativar.

      5. Na caixa de diálogo de confirmação, clique em Desativar versões selecionadas.

      gcloud

      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 dela.
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.

      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 Google Cloud
      • SECRET_ID: o ID do secret ou o identificador totalmente qualificado do secret.
      • VERSION_ID: o ID da versão ou o identificador totalmente qualificado dela.

      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