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

A autorização binária para o Google Distributed Cloud permite estender a aplicação obrigatória no momento da implantação da autorização binária aos clusters de usuário locais para ajudar a proteger as cargas de trabalho de contêiner. É possível aplicar as regras de aplicação obrigatória de uma política configurada no projeto do Google Cloud aos clusters de usuário na versão 1.28 ou posterior. Para mais informações sobre políticas e regras, consulte a Visão geral da autorização binária.

Se você ativou a versão de pré-lançamento da autorização binária para o Google Distributed Cloud, desative-a e limpe os recursos antes de ativar o recurso de GA em clusters da versão 1.28 ou posterior.

Pré-requisitos

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

  • Registrar o cluster com uma frota: um cluster criado com gkectl é registrado no projeto do Google Cloud especificado 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, confira a documentação Gerenciamento de frotas.

  • Ativar a API Binary Authorization 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.[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 Regras de proxy e 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 a CLI gcloud.

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 o 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 Google Distributed Cloud.

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

Se você tiver um cluster versão 1.28 ou superior, poderá ativar ou desativar a autorização binária a qualquer momento usando gkectl ou a CLI 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 seuGoogle Cloud projeto e especifica regras para controlar a implantação de imagens do 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 mudança, 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 concluir todos os pré-requisitos, uma mensagem como esta indicará 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.[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator