Controlar a destruição da versão da chave

O Google Cloud oferece duas restrições de política da organização para definir a política de destruição de versões chave em uma organização:

  • constraints/cloudkms.minimumDestroyScheduledDuration é usado para definir um tamanho mínimo para a duração programada para destruição de novas chaves na organização.
  • constraints/cloudkms.disableBeforeDestroy é usado para exigir que uma versão da chave seja desativada antes de ser programada para destruição.

Antes de começar

As instruções desta página pressupõem que você já sabe usar restrições e que você tem os recursos e papéis necessários.

Recursos necessários

Antes de concluir as etapas desta página, você precisa ter os seguintes recursos:

  • Uma organização.
  • Opcional: um recurso de pasta ou projeto na sua organização.

Funções exigidas

Para receber as permissões necessárias a fim de gerenciar as políticas da organização, peça ao administrador para conceder a você o papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin) na organização. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para gerenciar as políticas da organização. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para gerenciar as políticas da organização:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Exigir uma duração mínima de programado para destruição

A restrição Duração mínima programada de destruição por chave (constraints/cloudkms.minimumDestroyScheduledDuration) é usada para definir um tamanho mínimo para a duração programada para destruição de novas chaves. Essa restrição substitui a duração mínima de scheduled for destruction no nível do projeto, da pasta ou da organização. Essa restrição reduz a chance de destruição acidental de uma chave que ainda é necessária. É possível definir essa restrição com um valor mais alto para garantir que você tenha tempo de impedir a destruição da chave antes que ela se torne irreversível.

Use valores mais altos para essa restrição quando a destruição de chaves indesejadas for mais prejudicial, como para dados de produção sujeitos a requisitos de retenção de dados. Use valores mais baixos para essa restrição quando a destruição de chaves indesejadas for menos prejudicial, como em ambientes de desenvolvimento ou teste. Também é possível usar valores mais baixos para permitir o cripto-destrutivo em tempo hábil. No entanto, como um valor mínimo, essa restrição não pode garantir que novas chaves sejam criadas com durações programadas para destruição baixas.

Para exigir uma duração mínima de programada para destruição, siga estas etapas:

  1. Consiga a política atual no recurso da organização usando o comando describe: Este comando retorna a política aplicada diretamente a este recurso:

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration \
      --organization=ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo identificador exclusivo do recurso da organização. O ID da organização é formatado como números decimais e não pode ter zeros à esquerda.

    Também é possível conferir a política da organização para uma pasta ou um projeto com as flags --folder ou --project e o ID da pasta ou ID do projeto, respectivamente.

    A resposta retorna a política da organização atual, se houver uma. O resultado será assim:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      etag: COTP+KYGELiCmsoB
      inheritFromParent: true
      rules:
      - values:
          allowedValues:
          - in:7d
      updateTime: '2023-08-17T14:00:04.424051Z'
    

    Se uma política não for definida, o comando describe vai retornar um erro NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Defina a política no projeto usando o comando set-policy. Esse comando substitui qualquer política atualmente anexada ao recurso.

    1. Crie um arquivo temporário /tmp/policy.yaml para armazenar a política:

      name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
      spec:
        rules:
        - values:
            allowedValues:
            - in:MINIMUM_DURATION
      

      Substitua:

      • ORGANIZATION_ID: o ID numérico da sua organização.
      • MINIMUM_DURATION: a duração mínima do estado programado para destruição de chaves nesta organização, em dias. Precisa ser um dos seguintes valores: 7d, 15d, 30d, 60d, 90d ou 120d.
    2. Execute o comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Veja a política efetiva atual usando describe --effective. Esse comando retorna a política da organização conforme é avaliada neste momento na hierarquia de recursos com herança incluída.

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration --effective \
      --organization=ORGANIZATION_ID
    

    O resultado será assim:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
        - values:
            allowedValues:
            - 30d
            - 15d
            - 90d
            - 60d
            - 7d
            - 120d
    

    Como essa política da organização foi definida no nível da organização, ela é herdada por todos os recursos filhos que permitem a herança.

Exigir que as chaves sejam desativadas antes da destruição

A restrição Restrict key destruction to disabled keys (constraints/cloudkms.disableBeforeDestroy) permite que você exija que uma chave seja desativada antes de programar a destruição dela. Desativar uma chave antes de destruí-la é uma prática recomendada porque ajuda a validar que a chave não está em uso. É possível combinar essa restrição com uma política do Identity and Access Management para criar um processo de destruição de várias etapas que exige a cooperação de várias funções.

Para usar essa restrição e criar um processo de destruição em várias etapas, verifique se nenhum usuário tem as permissões cloudkms.cryptoKeyVersions.update e cloudkms.cryptoKeyVersions.destroy. Esse caso de uso exige que você use funções personalizadas.

Para exigir que uma chave esteja no estado desativada antes de poder programá-la para destruição, siga estas etapas:

gcloud

  1. Consiga a política atual no recurso da organização usando o comando describe: Este comando retorna a política aplicada diretamente a este recurso:

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy \
      --organization=ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo identificador exclusivo do recurso da organização. O ID da organização é formatado como números decimais e não pode ter zeros à esquerda.

    Também é possível conferir a política da organização para uma pasta ou um projeto com as flags --folder ou --project e o ID da pasta ou ID do projeto, respectivamente.

    A resposta retorna a política da organização atual, se houver uma. A resposta será semelhante a:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
    spec:
      etag: CPvY+KYGENDwgxA=
      rules:
      - enforce: true
      updateTime: '2023-08-17T14:19:39.033618Z'
    

    Se uma política não for definida, o comando describe vai retornar um erro NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Defina a política no projeto usando o comando set-policy. Esse comando substitui qualquer política que já esteja anexada ao recurso.

    1. Crie um arquivo temporário /tmp/policy.yaml para armazenar a política:

      name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
      spec:
        rules:
        - enforce: true
      

      Substitua ORGANIZATION_ID pelo identificador exclusivo do recurso da organização.

    2. Execute o comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Veja a política efetiva atual usando describe --effective. Esse comando retorna a política da organização conforme é avaliada neste momento na hierarquia de recursos com herança incluída.

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy --effective \
      --organization=ORGANIZATION_ID
    

    O resultado será assim:

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
      - enforce: true
    

    Como essa política da organização foi definida no nível da organização, ela é herdada por todos os recursos filhos que permitem a herança.

A seguir