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

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

  • constraints/cloudkms.minimumDestroyScheduledDuration é usado para definir um comprimento mínimo para a duração agendada para destruição de novas chaves na organização.
  • constraints/cloudkms.disableBeforeDestroy é usado para exigir que uma versão de chave tenha sido desativada antes de poder ser agendada para destruição.

Antes de começar

As instruções nesta página pressupõem que está familiarizado com a utilização de restrições e que tem os recursos e as funções necessários.

Recursos necessários

Antes de poder concluir os passos nesta página, tem de ter os seguintes recursos:

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

Funções necessárias

Para receber as autorizações de que precisa para gerir políticas de organização, peça ao seu administrador que lhe conceda a função de IAM de administrador de políticas de organização (roles/orgpolicy.policyAdmin) na organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para gerir políticas da organização. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para gerir 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Exigir uma duração mínima agendada para destruição

A restrição Minimum destroy scheduled duration per key (constraints/cloudkms.minimumDestroyScheduledDuration) é usada para definir um período mínimo para a duração agendada para destruição de novas chaves. Esta restrição substitui a duração mínima agendada para destruição ao nível do projeto, da pasta ou da organização. Esta restrição reduz a probabilidade de destruir acidentalmente uma chave que ainda é necessária. Pode definir esta restrição para um valor mais elevado para ajudar a garantir que tem tempo para impedir a destruição de chaves antes de se tornar irreversível.

Use valores mais elevados para esta restrição quando a destruição de chaves indesejada for mais prejudicial, como para dados de produção sujeitos a requisitos de retenção de dados. Use valores mais baixos para esta restrição quando a destruição de chaves indesejada for menos prejudicial, como para ambientes de desenvolvimento ou de teste. Também pode usar valores mais baixos para permitir a destruição criptográfica atempada. No entanto, como valor mínimo, esta restrição não pode garantir que as novas chaves são criadas com durações agendadas para destruição baixas.

Para exigir uma duração mínima programada para destruição, siga estes passos:

  1. Obtenha a política atual no recurso da organização através do comando describe. Este comando devolve 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 de organização. O ID da organização está formatado como números decimais e não pode ter zeros à esquerda.

    Também pode ver a política de organização de uma pasta ou um projeto com os indicadores --folder ou --project e o ID da pasta ou o ID do projeto, respetivamente.

    A resposta devolve a política da organização atual, se existir. O resultado é semelhante ao seguinte:

    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 não for definida uma política, o comando describe devolve um erro NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Defina a política na organização através do comando set-policy. Este comando substitui qualquer política atualmente anexada ao recurso.

    1. Crie um ficheiro 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 o seguinte:

      • ORGANIZATION_ID: o ID numérico da sua organização.
      • MINIMUM_DURATION: a duração mínima do estado agendado para destruição para chaves nesta organização, em dias. Tem de 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. Consulte a política atualmente em vigor através de describe --effective. Este comando devolve a política da organização tal como é avaliada neste ponto da hierarquia de recursos com a herança incluída.

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

    O resultado é semelhante ao seguinte:

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

    Uma vez que esta política de organização foi definida ao nível da organização, é herdada por todos os recursos secundários que permitem a herança.

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

A restrição Restringir a destruição de chaves a chaves desativadas (constraints/cloudkms.disableBeforeDestroy) permite-lhe exigir que uma chave tenha sido desativada antes de poder agendar a chave para destruição. A desativação de uma chave antes da sua destruição é uma prática recomendada porque ajuda a validar que a chave não está em utilização. Pode combinar esta restrição com uma política de gestão de identidade e acesso cuidadosa para criar um processo de destruição de vários passos que requer a cooperação de várias funções.

Para usar esta restrição para criar um processo de destruição de vários passos, certifique-se de que nenhum utilizador tem as autorizações cloudkms.cryptoKeyVersions.update e cloudkms.cryptoKeyVersions.destroy. Este exemplo de utilização requer que use funções personalizadas.

Para exigir que uma chave esteja no estado desativado antes de poder agendar a chave para destruição, siga estes passos:

gcloud

  1. Obtenha a política atual no recurso da organização através do comando describe. Este comando devolve 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 de organização. O ID da organização está formatado como números decimais e não pode ter zeros à esquerda.

    Também pode ver a política de organização de uma pasta ou um projeto com as flags --folder ou --project e o ID da pasta ou o ID do projeto, respetivamente.

    A resposta devolve a política da organização atual, se existir. O resultado é semelhante ao seguinte:

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

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

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Defina a política na organização através do comando set-policy. Este comando substitui qualquer política já anexada ao recurso.

    1. Crie um ficheiro 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 de organização.

    2. Execute o comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Consulte a política atualmente em vigor através de describe --effective. Este comando devolve a política da organização tal como é avaliada neste ponto da hierarquia de recursos com a herança incluída.

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

    O resultado é semelhante ao seguinte:

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

    Uma vez que esta política de organização foi definida ao nível da organização, é herdada por todos os recursos subordinados que permitem a herança.

O que se segue?