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

A autorização binária para o GKE em Bare Metal é um recurso do Google Cloud que estende a aplicação hospedada da autorização binária para os clusters no local. O principal caso de uso da autorização binária no GKE em Bare Metal é proteger cargas de trabalho, mas a autorização binária funciona com todos os tipos de cluster. Siga as etapas deste guia para aplicar as regras obrigatórias de uma política de autorização binária configurada no seu projeto do Google Cloud aos clusters. Para mais informações sobre políticas e regras de autorização binária, confira Visão geral da autorização binária.

Pré-requisitos

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

  • Registrar o cluster com uma frota: um cluster criado com bmctl é 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 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 sobre o uso da configuração de proxy, consulte Instalar atrás de um proxy.

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

bmctl

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

  1. Antes de criar o cluster, adicione spec.binaryAuthorization.evaluationMode ao arquivo de configuração do cluster, conforme o exemplo a seguir:

    ...
    ---
    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: 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.

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

Para mais informações sobre como criar clusters, consulte Visão geral da criação de clusters.

CLI da gcloud

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

    Isso cria um cluster de usuário que aplica 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 a CLI gcloud para criar um cluster de usuário, consulte Criar um cluster de usuário usando clientes da API GKE On-Prem. Para mais informações sobre políticas e regras de autorização binária, confira Visão geral da autorização binária.

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

Se você tiver um cluster versão 1.16 ou superior, poderá ativar ou desativar a autorização binária a qualquer momento usando bmctl ou gcloud CLI.

bmctl

  • Para ativar:

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

      ...
      ---
      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:

      • CLUSTER_NAME: o nome do cluster a se fazer upgrade.
      • CLUSTER_KUBECONFIG: o caminho até o arquivo kubeconfig do cluster.
    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 bmctl 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:

    Para desativar esse recurso, defina evaluationMode como DISABLED ou remova a seção binaryAuthorization da especificação do cluster. Depois que essa mudança for feita, aguarde alguns minutos até que a implantação chamada binauthz-module-deployment no namespace binauthz-system seja removida.

CLI da gcloud

  • Para ativar a autorização binária de um cluster atual, adicione a sinalização --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE ao executar o comando gcloud container bare-metal clusters update.

    Isso atualiza um cluster de usuário 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 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 a gcloud CLI para atualizar um cluster de usuário, confira gcloud container bare-metal clusters update na referência da CLI gcloud. 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 a autorização binária de um cluster atual, execute o comando gcloud container bare-metal clusters update com a sinalização --binauthz-evaluation-mode=DISABLED.

Solução de problemas

Se você não atender a todos os pré-requisitos, talvez nenhuma indicação antecipada de um problema seja exibida. Se a autorização binária começar a deixar de responder às solicitações de criação de pods, verifique o status.conditions para o ReplicaSet. Uma mensagem como esta indica 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