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 hospedada no momento da implantação da autorização binária aos clusters locais. Embora seja usada principalmente para ajudar a proteger cargas de trabalho, a autorização binária funciona com todos os tipos de cluster para aplicar regras de aplicação de políticas configuradas no projeto do Google Cloud . Para mais informações sobre políticas e regras, consulte a 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 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.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 a CLI gcloud.

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 autorização binária política, também conhecida como política de projeto Singleton, no Google Cloud projeto para controlar a implantação de imagens do 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 a CLI gcloud.

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 seuGoogle Cloud projeto e especifica regras para controlar a implantação de imagens do 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 doGoogle 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 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