Exija políticas da plataforma baseadas em verificações de validação contínuas para todos os clusters do GKE

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

Custos

Este guia usa os seguintes Google Cloud serviços:

  • Autorização binária, mas a CV está disponível sem custo financeiro durante a fase de pré-visualização
  • As políticas e as restrições organizacionais são oferecidas sem custo financeiro.

Antes de começar

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

Funções necessárias

Para receber as autorizações de que precisa para criar restrições e aplicar políticas organizacionais, peça ao seu administrador que lhe conceda a função do IAM de administrador da política organizacional (roles/orgpolicy.policyAdmin) na sua Google Cloud 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.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie uma restrição personalizada de CV

Consola

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

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

  3. Se lhe for pedido, clique em Mudar para a organização principal. Para saber mais sobre as organizações, consulte o artigo Introdução ao serviço de políticas da organização

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

    1. Nome a apresentar: um nome a apresentar para a restrição, como Require a Binary Authorization continuous validation policy for all GKE clusters. Usa o nome a apresentar para procurar a restrição depois de a guardar. O campo do nome a apresentar tem um comprimento máximo de 200 carateres

    2. ID da restrição: um ID da restrição. Por exemplo: RequireBinAuthzCVPolicy.

    3. Descrição (opcional): uma descrição simples da restrição a apresentar como uma mensagem de erro quando a política é violada. O campo da descrição tem um comprimento máximo de 2000 carateres.

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

    1. Em Tipos de recursos, introduza container.googleaips.com/Cluster.

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

    3. Introduza uma expressão no campo Condição. Este campo tem um comprimento máximo de 1000 carateres. A restrição personalizada é aplicada quando a condição é avaliada como true. A condição é uma expressão na sintaxe do Idioma de expressão comum (IEC). Pode combinar expressões com e (&&) e ou (||) para criar uma condição complexa. O IEC é um idioma de expressão semelhante a C. Para saber mais acerca da sintaxe e da semântica do IEC, consulte https://github.com/google/cel-spec. Para introduzir a condição, faça o seguinte:

      1. Clique em Editar condição.

      2. Introduza uma expressão para verificar a existência de uma política da plataforma de CV. A seguinte condição requer que exista uma associação de políticas da plataforma de CV 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 o seguinte:

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

        A condição seguinte requer que existam duas associações de políticas da plataforma de CV e que cada uma tenha um nome de política da 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 sua primeira política da plataforma. O projeto tem de estar na mesma organização.
        • POLICY_ID1: o ID da política da sua primeira política da plataforma.
        • PROJECT_ID2: o ID do projeto da sua segunda política da plataforma.
        • POLICY_ID2: o ID da política da sua segunda política de plataformas.

        • Clique em Guardar.

    4. Em Ação, selecione Permitir.

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

gcloud

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

    • ORGANIZATION_ID: o ID da sua organização, por exemplo, 123456789.
    • CONSTRAINT_ID: um ID de restrição, por exemplo, RequireBinAuthzCVPolicy.
    • CONDITION: introduza uma expressão para verificar a existência de uma política da plataforma de CV. Este campo tem um comprimento máximo de 1000 carateres. A restrição personalizada é aplicada quando a condição é avaliada como true. A condição é uma expressão na sintaxe do Idioma de expressão comum (IEC). Pode combinar expressões com e (&&) e ou (||) para criar uma condição complexa. O IEC é um idioma de expressão semelhante a C. Para saber mais sobre a sintaxe e a semântica da CEL, consulte https://github.com/google/cel-spec. A seguinte condição requer que exista uma associação de políticas da plataforma de CV 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 o seguinte:

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

      A condição seguinte requer que existam duas associações de políticas da plataforma de CV e que cada uma tenha um nome de política da 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 sua primeira política da plataforma. O projeto tem de estar na mesma organização.
      • POLICY_ID1: o ID da política da sua primeira política da plataforma.
      • PROJECT_ID2: o ID do projeto da sua segunda política da plataforma.
      • POLICY_ID2: o ID da política da sua segunda política de plataformas.

      • ACTION: a ação a realizar se a condição condition for cumprida. Pode ser ALLOW ou DENY.

      • DISPLAY_NAME: um nome simples para a restrição, por exemplo, Require a Binary Authorization continuous validation policy for all GKE clusters. O campo do nome a apresentar tem um comprimento máximo de 200 carateres

      • DESCRIPTION: uma descrição simples da restrição a apresentar como uma mensagem de erro quando a política é violada. O campo da descrição tem um comprimento máximo de 2000 carateres.

    • Aplique a restrição personalizada:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

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

    • Verifique se a restrição personalizada existe:

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

      O resultado é semelhante ao seguinte:

      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 criou, crie uma política da organização.

Use 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, em seguida, aplique a política da organização.

Consola

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

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

  2. Selecione o seletor de projetos e, em seguida, selecione a organização.

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

  4. Na página Detalhes da política dessa restrição, clique em Gerir política.

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

  6. Clique em Adicionar regra.

  7. Em Aplicação, selecione Ativar.

  8. Opcional: clique em Testar alterações para simular o efeito desta política da organização. Para mais informações, consulte o artigo Teste as alterações da política da organização com o simulador de políticas.

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

gcloud

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

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

    Substitua o seguinte:

    • 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 ficheiro de definição de políticas.

  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 o artigo gcloud org-policies list.

    O resultado é semelhante ao seguinte:

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

A política pode demorar até 15 minutos a entrar em vigor.

Para aplicar várias restrições a políticas baseadas na verificação de CV, faça o seguinte:

  • Crie uma restrição personalizada por política baseada na verificação de CV.
  • Atualize a política de organização com cada restrição personalizada, conforme descrito nesta secção.

Elimine a restrição personalizada

Pode eliminar uma restrição personalizada através da Google Cloud consola ou da CLI Google Cloud.

Consola

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

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

  3. No selecionador de projetos, selecione a sua organização.

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

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

  6. Para confirmar que quer eliminar a restrição, clique em Eliminar.

gcloud

Para eliminar uma restrição personalizada, use o comando da CLI gcloud:org-policies delete-custom-constraint

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

Substitua o seguinte:

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

  • CONSTRAINT_NAME: o nome da restrição personalizada

O resultado é semelhante ao seguinte:

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

Depois de eliminar uma restrição personalizada, todas as políticas que foram criadas com essa restrição continuam a existir, mas são ignoradas. Não pode criar outra restrição personalizada com o mesmo nome de uma restrição personalizada eliminada.

O que se segue?