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 no local. O exemplo de utilização principal da autorização binária no Google Distributed Cloud é proteger as cargas de trabalho, mas a autorização binária funciona com todos os tipos de clusters. 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 seus clusters. 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, certifique-se de que cumpre os seguintes critérios de pré-requisitos:

  • Registe o cluster numa frota: um cluster criado com bmctl é registado no projeto Google Cloud que especifica 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 sobre a utilização de uma configuração de proxy, consulte o artigo Instale através de um proxy.

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 bmctl ou a CLI gcloud.

bmctl

Para ativar a autorização binária quando cria um cluster com o bmctl:

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

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      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.

    • DISABLE: 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 bmctl create cluster.

Para mais informações sobre a criação de clusters, consulte o artigo Vista geral da criação de clusters.

CLI gcloud

  • Para criar um cluster de utilizadores e ativar a autorização binária, adicione a flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE quando executar o comando gcloud container bare-metal clusters create.

    Isto cria um cluster de utilizadores que aplica as regras especificadas na política de autorização binária, também conhecida como política de projeto único. 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 da CLI gcloud para criar um cluster de utilizadores, consulte o artigo Crie um cluster de utilizadores com clientes da API GKE On-Prem. Para mais informações acerca das políticas e regras de autorização binária, consulte a vista geral da autorização binária.

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

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

bmctl

  • Para ativar:

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

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. Atualize o cluster:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Substitua o seguinte:

      • CLUSTER_NAME: o nome do cluster a atualizar.
      • CLUSTER_KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster.
    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 bmctl 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:

    Pode desativar esta funcionalidade definindo evaluationMode como DISABLED ou removendo a secção binaryAuthorization da especificação do cluster. 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.

CLI gcloud

  • Para ativar a autorização binária para um cluster existente, adicione a flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE quando executar o comando gcloud container bare-metal clusters update.

    Esta ação atualiza um cluster de utilizadores para que a Autorização Binária aplique as regras especificadas na política de Autorização Binária, também conhecida como política de singleton do projeto. Esta política está associada ao seu projeto doGoogle Cloud e especifica regras para reger a implementação de imagens de contentores. Para mais informações sobre a utilização da CLI gcloud para atualizar um cluster de utilizadores, consulte o artigo gcloud container bare-metal clusters update na referência da CLI gcloud. 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 a autorização binária para um cluster existente, execute o comando gcloud container bare-metal clusters update com a flag --binauthz-evaluation-mode=DISABLED.

Resolução de problemas

Se não concluir todos os pré-requisitos, pode não ver nenhuma indicação antecipada de um problema. Se a autorização binária começar a falhar na resposta a pedidos de criação de pods, verifique status.conditions para o ReplicaSet. Uma mensagem como a seguinte 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