Configurar a aplicação da política de autorização binária

A autorização binária para o GKE no VMware é um recurso do Google Cloud que estende a aplicação hospedada no momento da implantação da autorização binária para seus clusters de usuários no local. O principal caso de uso da autorização binária no GKE no VMware é proteger as cargas de trabalho nos clusters de usuário. Siga as etapas deste guia para aplicar as regras de aplicação de uma política de autorização binária configurada no projeto do Google Cloud aos clusters de usuários. Para mais informações sobre políticas e regras de autorização binária, consulte Visão geral da autorização binária.

Pré-requisitos

Antes de ativar a aplicação da política de autorização binária para um cluster de usuário, verifique se você atendeu aos seguintes critérios de pré-requisito:

  • Registre o cluster com uma frota: em um cluster criado com gkectl, ele é registrado no projeto do Google Cloud que você especificar no campo gkeConnect.projectID no arquivo de configuração do cluster. Esse projeto é chamado de projeto host da frota. Para saber mais sobre frotas, incluindo casos de uso, práticas recomendadas e exemplos, consulte a documentação Gerenciamento de frotas.

  • Ativar a API autorização binária no projeto do Google Cloud:ative o serviço de autorização binária no projeto host da frota.

  • Adicionar o papel de avaliador da política de autorização binária ao projeto host da frota: para conceder o papel de avaliador da política de autorização binária (roles/binaryauthorization.policyEvaluator) à conta de serviço do Kubernetes no seu projeto host da frota, execute o seguinte comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Se o cluster estiver em execução atrás de um servidor proxy, verifique se o servidor proxy permite conexões com a API autorização binária (binaryauthorization.googleapis.com). Ela fornece validação e controle de implantação com base em políticas para as imagens implantadas no cluster. Para mais informações, consulte Proxy e regras de firewall.

Depois de atender aos pré-requisitos, é possível ativar (ou desativar) a política de autorização binária ao criar um novo cluster ou atualizar um atual.

Ativar a política de autorização binária durante a criação do cluster

É possível ativar a aplicação da política de autorização binária com gkectl ou gcloud CLI.

gkectl

Para ativar a autorização binária ao criar um cluster com gkectl:

  1. Antes de criar o cluster, adicione binaryAuthorization.evaluationMode ao arquivo de configuração do cluster de usuário, conforme mostrado no exemplo a seguir:

    ...
    binaryAuthorization:
      evaluationMode: "project_singleton_policy_enforce"
    ...
    

    Os valores permitidos para evaluationMode são:

    • project_singleton_policy_enforce: aplica as regras especificadas na política de autorização binária, também conhecida como política de projeto Singleton, no projeto do Google Cloud para controlar a implantação de imagens de contêiner no cluster.

    • disabled: desativa o uso da autorização binária do cluster. Esse é o valor padrão. Se você omitir binaryAuthorization, o recurso será desativado.

  2. Faça as outras alterações necessárias no arquivo de configuração do cluster e execute o comando gkectl create cluster.

Para mais informações sobre como criar clusters, consulte Visão geral da instalação do GKE no VMware.

Ativar ou desativar a política de autorização binária de um cluster atual

Se você tiver um cluster na versão 1.28 ou mais recente, será possível ativar ou desativar a autorização binária a qualquer momento, usando a CLI gkectl ou gcloud.

gkectl

  • Para ativar:

    1. Edite o arquivo de configuração do cluster para adicionar os campos binaryAuthorization:

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. Atualize o cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

      Substitua:

      • ADMIN_CLUSTER_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador.
      • USER_CLUSTER_CONFIG_FILE: o caminho do arquivo de configuração do cluster de usuário.
    3. Aguarde até que a implantação chamada binauthz-module-deployment no namespace binauthz-system fique pronta.

      Quando a implantação estiver pronta, a autorização binária aplicará as regras especificadas na política de autorização binária, também conhecida como política de projeto singleton. Essa política está associada ao projeto do Google Cloud e especifica regras para controlar a implantação de imagens de contêiner. Para mais informações sobre como usar o gkectl para atualizar um cluster, confira Atualizar clusters. Para mais informações sobre políticas e regras de autorização binária, confira Visão geral da autorização binária.

  • Para desativar:

    1. Edite o arquivo de configuração do cluster e remova a seção binaryAuthorization ou defina evaluationMode como disabled.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. Atualize o cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

    Depois de fazer essa alteração, aguarde alguns minutos até que a implantação chamada binauthz-module-deployment no namespace binauthz-system seja removida.

Solução de problemas

Se você não atender a todos os pré-requisitos, uma mensagem como esta pode ser exibida indicando que há um problema com a configuração da autorização binária:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator