Configure a aplicação de políticas de autorização binária

A autorização binária para o Google Distributed Cloud é uma Google Cloud funcionalidade que estende a aplicação alojada no momento da implementação da autorização binária aos seus clusters de utilizadores no local. O principal exemplo de utilização da autorização binária no Google Distributed Cloud é proteger as cargas de trabalho nos seus clusters de utilizadores. Siga os passos neste guia para aplicar as regras de aplicação de uma política de autorização binária configurada no seu projeto aos clusters de utilizadores. Google Cloud Para mais informações acerca das políticas e regras de autorização binária, consulte a vista geral da autorização binária.

Pré-requisitos

Antes de poder ativar a aplicação da política de autorização binária para um cluster de utilizadores, certifique-se de que cumpre os seguintes critérios de pré-requisitos:

  • Registe o cluster numa frota: para um cluster criado com gkectl, o cluster é registado no projeto Google Cloud que especificar no campo gkeConnect.projectID do ficheiro de configuração do cluster. Este projeto é denominado projeto anfitrião da frota. Para saber mais sobre frotas, incluindo exemplos de utilização, práticas recomendadas e exemplos, consulte a documentação de Gestão de frotas.

  • Ative a API Binary Authorization no seu Google Cloud projeto: ative o serviço Binary Authorization no projeto anfitrião da frota.

  • Adicione a função Binary Authorization Policy Evaluator ao projeto anfitrião da frota: para conceder a função Binary Authorization Policy Evaluator (roles/binaryauthorization.policyEvaluator) à conta de serviço do Kubernetes no projeto anfitrião 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 a ser executado atrás de um servidor proxy, certifique-se de que o servidor proxy permite ligações à API Binary Authorization (binaryauthorization.googleapis.com). Esta API fornece validação e controlo de implementação baseados em políticas para imagens implementadas no seu cluster. Para mais informações, consulte o artigo Regras de proxy e firewall.

Depois de cumprir os pré-requisitos, pode ativar (ou desativar) a política de autorização binária quando cria um novo cluster ou atualiza um cluster existente.

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

Pode 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 quando cria um cluster com o gkectl:

  1. Antes de criar o cluster, adicione binaryAuthorization.evaluationMode ao ficheiro de configuração do cluster de utilizadores, conforme mostrado no exemplo seguinte:

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

    Os valores permitidos para evaluationMode são:

    • project_singleton_policy_enforce: aplique as regras especificadas na política de autorização binária, também conhecida como política de singleton do projeto, no seu projeto do Google Cloud para reger a implementação de imagens de contentores no seu cluster.

    • disabled: desative a utilização da autorização binária para o seu cluster. Este é o valor predefinido. Se omitir binaryAuthorization, a funcionalidade é desativada.

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

Para mais informações sobre a criação de clusters, consulte a vista geral da instalação do Google Distributed Cloud.

Ative ou desative a política de autorização binária para um cluster existente

Se tiver um cluster existente da versão 1.28 ou superior, pode ativar ou desativar a autorização binária em qualquer altura através do gkectl ou da CLI gcloud.

gkectl

  • Para ativar:

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

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

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

      Substitua o seguinte:

      • ADMIN_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador
      • USER_CLUSTER_CONFIG_FILE: o caminho do ficheiro de configuração do cluster de utilizadores.
    3. Aguarde até que a implementação denominada binauthz-module-deployment no espaço de nomes binauthz-system fique pronta.

      Quando a implementação está pronta, a Autorização binária aplica as regras especificadas na política de Autorização binária, também conhecida como uma política de singleton do projeto. Esta política está associada ao seu projeto do Google Cloud e especifica regras para reger a implementação de imagens de contentores. Para mais informações sobre a utilização de gkectl para atualizar um cluster, consulte o artigo Atualizar clusters. Para mais informações acerca das políticas e regras de autorização binária, consulte a vista geral da autorização binária.

  • Para desativar:

    1. Edite o ficheiro de configuração do cluster e remova a secçã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 esta alteração, aguarde alguns minutos até que a implementação denominada binauthz-module-deployment no espaço de nomes binauthz-system seja removida.

Resolução de problemas

Se não concluir todos os pré-requisitos, pode ver uma mensagem como a seguinte, que indica que existe 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