Exigir políticas de plataforma baseadas em verificação de validação contínua para todos os clusters do GKE

Nesta página, mostramos como usar o serviço de políticas da organização para exigir que os clusters do GKE usem uma ou mais plataformas baseadas em políticas de verificação de validação contínua (CV). Especifique as políticas de plataforma baseadas em verificação necessárias em restrições personalizadas. Em seguida, aplique as restrições personalizadas na política da organização.

Custos

Neste guia, usamos os seguintes serviços do Google Cloud:

  • Autorização binária, mas a CV está disponível gratuitamente durante o estágio de Visualização
  • As políticas e restrições da organização são oferecidas sem custos financeiros.

Antes de começar

  1. Ative a autorização binária.
  2. Configurar uma CV com políticas da plataforma baseada em verificação e pelo menos uma política de plataforma baseada em verificação de CV.

Funções exigidas

Para receber as permissões necessárias para criar restrições e aplicar políticas da organização, peça ao administrador para conceder a você o papel do IAM de administrador da política da organização (roles/orgpolicy.policyAdmin) na sua organização do Google Cloud. 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.

Criar uma restrição personalizada de CV

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Na página Políticas da organização, clique em Restrição personalizada.

  3. Se for solicitado, clique em Alternar para organização pai. Para saber mais sobre organizações, consulte Introdução ao serviço de políticas da organização.

  4. Em Detalhes da restrição, digite as seguintes informações nos campos:

    1. Nome de exibição: um nome de exibição da restrição, como Require a Binary Authorization continuous validation policy for all GKE clusters: Use o nome de exibição para procurar a restrição depois de salvá-la. O campo de nome de exibição pode ter no máximo 200 caracteres

    2. ID de restrição: um ID de restrição para sua restrição. Por exemplo, RequireBinAuthzCVPolicy:

    3. Descrição (opcional): uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. O campo de descrição tem um tamanho máximo de 2.000 caracteres.

  5. Em Aplicação, faça o seguinte:

    1. Em Tipos de recurso, insira container.googleaips.com/Cluster.

    2. Em Método de aplicação, selecione Aplicar na criação e atualização.

    3. Insira uma expressão no campo Condição. Esse campo tem um comprimento máximo de 1000 caracteres. A restrição personalizada é aplicada quando a condição é avaliada como true. A condição é como uma expressão na sintaxe da Common Expression Language (CEL). Você pode combinar expressões com e (&&) e ou (||) para criar uma condição complexa. A CEL é uma linguagem de expressão semelhante a C. Para saber mais sobre a sintaxe e semântica de CEL, consulte https://github.com/google/cel-spec. Para inserir a condição, faça o seguinte:

      1. Clique em Editar condição.

      2. Insira uma expressão para verificar a existência de uma política de plataforma de CV. A condição a seguir exige que uma vinculação de política de plataforma de CV exista e que a política da plataforma tenha um nome específico:

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
        

        Substitua:

        • PROJECT_ID: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.
        • POLICY_ID: o ID da política da sua política da plataforma.

        A condição a seguir requer que duas vinculações de políticas de plataformas de CV existam e cada uma tenha um nome de política de plataforma específico;

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
        
        • PROJECT_ID1: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.
        • POLICY_ID1: o ID da primeira política da plataforma.
        • PROJECT_ID2: o ID do projeto da política da plataforma.
        • POLICY_ID2: o ID da segunda política da plataforma.

        • Clique em Salvar.

    4. Em Ação, selecione Permitir.

  6. Para criar sua restrição personalizada, clique em Criar restrição.

gcloud

  1. Crie um arquivo YAML para a restrição personalizada:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID
    resource_types: container.googleapis.com/Cluster
    method_types:
      - CREATE
      - UPDATE
    condition: >-
      CONDITION
    action_type: ACTION
    display_name: DISPLAY_NAME
    description: DESCRIPTION
    

    Substitua:

    • ORGANIZATION_ID: o ID da sua organização. Por exemplo, 123456789.
    • CONSTRAINT_ID: um ID de restrição. Por exemplo, RequireBinAuthzCVPolicy.
    • CONDITION: insira uma expressão para verificar a existência de uma política de plataforma de CV. Esse campo tem um comprimento máximo de 1000 caracteres. A restrição personalizada é aplicada quando a condição é avaliada como true. A condição é como uma expressão na sintaxe da Common Expression Language (CEL). Você pode combinar expressões com e (&&) e ou (||) para criar uma condição complexa. A CEL é uma linguagem de expressão semelhante a C. Para saber mais sobre a sintaxe e semântica de CEL, consulte https://github.com/google/cel-spec. A condição a seguir exige que uma vinculação de política de plataforma de CV exista e que a política da plataforma tenha um nome específico:

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
      

      Substitua:

      • PROJECT_ID: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.
      • POLICY_ID: o ID da política da sua política da plataforma.

      A condição a seguir requer que duas vinculações de políticas de plataformas de CV existam e cada uma tenha um nome de política de plataforma específico;

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
      
      • PROJECT_ID1: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.
      • POLICY_ID1: o ID da primeira política da plataforma.
      • PROJECT_ID2: o ID do projeto da política da plataforma.
      • POLICY_ID2: o ID da segunda política da plataforma.

      • ACTION: a ação a ser realizada se o condition for atendido. Pode ser ALLOW ou DENY.

      • DISPLAY_NAME: um nome legível para a restrição. Por exemplo, Require a Binary Authorization continuous validation policy for all GKE clusters. O campo de nome de exibição pode ter no máximo 200 caracteres

      • DESCRIPTION: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. O campo de descrição tem um tamanho máximo de 2.000 caracteres.

    • Aplique a restrição personalizada:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

      Substitua CUSTOM_CONSTRAINT_PATH pelo caminho da sua definição de restrição personalizada.

    • Verifique se a restrição personalizada existe:

      gcloud org-policies list-custom-constraints \
          --organization=ORGANIZATION_ID
      

      O resultado será assim:

      CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy
      ACTION_TYPE: ALLOW
      METHOD_TYPES: CREATE,UPDATE
      RESOURCE_TYPES: container.googleapis.com/Cluster
      DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
      

Para ativar a aplicação da restrição personalizada que você criou, crie uma política da organização.

Usar uma política da organização para aplicar a restrição personalizada

Para aplicar a nova restrição personalizada, crie uma política da organização que faça referência à restrição e aplique-a.

Console

Para aplicar a restrição, faça o seguinte:

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos e a organização.

  3. Pesquise e selecione a restrição na lista.

  4. Na página Detalhes da política para essa restrição, clique em Gerenciar política.

  5. Na página Editar política, selecione Substituir a política do editor principal.

  6. Clique em Adicionar uma regra.

  7. Em Aplicação, selecione Ativada.

  8. Opcional: clique em Testar alterações para simular o efeito dessa política da organização. Para mais informações, consulte Testar alterações na política da organização com o Simulador de política.

  9. Para concluir e aplicar a política da organização, clique em Definir política.

gcloud

  1. Crie um arquivo de definição de política YAML:

    name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID
    spec:
      rules:
      - enforce: true
    

    Substitua:

    • ORGANIZATION_ID: o ID da organização.
    • CONSTRAINT_ID: o ID da restrição.
  2. Aplique a política:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Substitua ORG_POLICY_PATH pelo caminho para o arquivo de definição da política.

  3. Verifique se a política existe:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Substitua ORGANIZATION_ID pelo ID da organização.

    Para ver uma lista de argumentos, consulte gcloud org-policies list.

    O resultado será assim:

    CONSTRAINT: custom.RequireBinAuthzCVPolicy
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CN622LIGEIDXnpMB-
    

A política levará até 15 minutos para entrar em vigor.

Para aplicar múltiplas restrições à plataforma baseada em verificação de CV, faça o seguinte:

  • Crie uma restrição personalizada por política baseada em verificações de CV.
  • Atualize a política da organização com cada restrição personalizada, conforme descrito nesta seção.

Excluir a restrição personalizada

É possível excluir uma restrição personalizada usando o console do Google Cloud ou a CLI do Google Cloud.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.

  3. No seletor de organização, selecione sua organização.

  4. Pesquise e selecione a restrição na lista.

  5. Em Detalhes da restrição, clique em . Excluir.

  6. Para confirmar que você quer excluir a restrição, clique em Excluir.

gcloud

Para excluir uma restrição personalizada, use o comando org-policies delete-custom-constraintda gcloud CLI:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
  --organization=ORGANIZATION_ID

Substitua:

  • ORGANIZATION_ID: o ID da organização, como 123456789.

  • CONSTRAINT_NAME: o nome da sua restrição personalizada

O resultado será assim:

Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]

Depois de excluir uma restrição personalizada, todas as políticas criadas usando a restrição continuam existindo, mas são ignoradas. Não é possível criar outra restrição personalizada com o mesmo nome de uma restrição personalizada excluída.

A seguir