Instalar o Policy Controller

Nesta página, mostramos como instalar o Controlador de Políticas. O Controlador de Políticas verifica, audita e aplica a conformidade de seus clusters com políticas relacionadas a segurança, regulamentos ou regras de negócios.

Esta página é destinada a administradores de TI e operadores que querem garantir que todos os recursos em execução na plataforma de nuvem cumpram os requisitos de compliance organizacionais, fornecendo e mantendo automação para auditar ou aplicar. Para saber mais sobre papéis comuns e tarefas de exemplo mencionados no conteúdo do Google Cloud , consulte Tarefas e papéis de usuário comuns do GKE.

O Controlador de Políticas está disponível se você usa o Google Kubernetes Engine. Para saber mais, consulte Preços do Google Kubernetes Engine.

Antes de começar

Antes de começar, veja se você realizou as seguintes tarefas:

  1. Instale e inicialize a CLI do Google Cloud, que fornece os comandos gcloud, kubectl e nomos usados nestas instruções. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update. Se você usa o Cloud Shell, a Google Cloud CLI já vem pré-instalada.
  2. Verifique se o agente de política de código aberto do Gatekeeper não está instalado no cluster. Se estiver, desinstale o Gatekeeper antes de instalar o Controlador de Políticas.

  3. Ative as APIs necessárias:

    Console

    Ative a API Policy Controller.

    Ativar a API Controlador de Políticas

    gcloud

    Execute este comando:

    gcloud services enable anthospolicycontroller.googleapis.com
    
  4. Crie ou verifique se você tem acesso a um cluster que executa uma versão 1.14.x ou posterior do Kubernetes. O Controlador de Políticas pode parecer ser executado em versões do Kubernetes anteriores à 1.14.x, mas o produto não se comporta corretamente.

  5. Conceda os papéis do IAM ao usuário que registra o cluster.

  6. Se você planeja usar a Google Cloud CLI para configurar o Controlador de Políticas, registre seu cluster em uma frota agora. Se você planeja usar o Google Cloud console, registre seus clusters ao instalar o Controlador de Políticas.

  7. Se você estiver usando clusters anexados ao GKE, verifique se o cluster AKS não tem o complemento de política do Azure e evite namespaces de rotulação com a chave control-plane.

  8. Se você estiver usando o Google Distributed Cloud no VMware ou em bare metal, verifique se está instalando o Controlador de Políticas em um cluster de usuário. O Controlador de Políticas não pode ser instalado em um cluster de administrador.

Instalar o Controlador de Políticas

Console

Para instalar o Controlador de Políticas no console do Google Cloud , siga estas etapas:

  1. No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.

    Acessar a política

  2. Clique em Configurar o Controlador de Políticas.

  3. Opcional: para mudar as configurações padrão da frota, clique em Personalizar configurações da frota. Na caixa de diálogo exibida, execute as ações a seguir:

    1. Na seção Adicionar/editar pacotes de políticas, inclua ou exclua um pacote clicando no botão de alternância relevante.
    2. Na seção Editar configuração do Controlador de Políticas, faça o seguinte:

      1. Para ativar o Webhook de mutação, marque a caixa de seleção Ativar webhook de mutação. Esse recurso não é compatível com clusters do Autopilot.
      2. Na caixa Intervalo de auditoria, insira o período em segundos entre duas auditorias consecutivas.
      3. Na caixa Namespaces isentos, insira uma lista de namespaces. O Controlador de Políticas ignora objetos nesses namespaces. Esse recurso não é compatível com clusters do Autopilot.

        Prática recomendada:

        Isente os namespaces do sistema para evitar erros no ambiente. Encontre as instruções para isentar namespaces e uma lista de namespaces comuns criados por serviços do Google Cloud na página Excluir namespaces.

      4. Para ativar restrições referenciais, marque a caixa de seleção Ativar modelos de restrição que se referem a objetos diferentes do objeto que está sendo avaliado.

      5. Na lista Versão, selecione a versão do Controlador de Políticas que você quer usar.

    3. Clique em Salvar.

  4. Clique em Configurar.

  5. Na caixa de diálogo, clique em Confirmar. Se você ainda não tiver ativado o Controlador de Políticas, clique em Confirmar para ativar a API anthospolicycontroller.googleapis.com e instalar o Controlador de Políticas nos clusters.

  6. Opcional: sincronize os clusters atuais com as configurações padrão:

    1. Na guia Configurações, clique em Sincronizar com as configurações da frota.
    2. Na lista Clusters na frota, selecione os clusters que você quer sincronizar e clique em Sincronizar com as configurações da frota. Esta operação leva alguns minutos para ser concluída.

Você será redirecionado para a guia Configurações do Controlador de Políticas. Quando o Controlador de Políticas está instalado e configurado nos clusters, as colunas de status mostram Instalado . Isso pode levar alguns minutos.

gcloud

Ative o Controlador de Políticas executando o seguinte comando:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Você pode definir campos adicionais para configurar o Controlador de Políticas. Por exemplo, diga ao Controlador de Políticas para isentar alguns namespaces da aplicação. Para ver uma lista completa de campos que podem ser configurados, consulte a documentação da CLI do Google Cloud do Controlador de Políticas ou execute gcloud container fleet policycontroller enable --help.

Defina as configurações no nível da frota para o Controlador de Políticas seguindo estas etapas:

  1. Crie um arquivo chamado fleet-default.yaml que contenha as configurações padrão do Controlador de Políticas. O campo installSpec é necessário para ativar padrões no nível da frota. Este exemplo mostra as opções que podem ser configuradas:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #         cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
    Prática recomendada:

    Isente os namespaces do sistema para evitar erros no ambiente. Encontre as instruções para isentar namespaces e uma lista de namespaces comuns criados por serviços do Google Cloud na página Excluir namespaces.

  2. Aplique a configuração padrão à sua frota:

    gcloud container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Para verificar se a configuração foi aplicada, execute o seguinte comando:

    gcloud container fleet policycontroller describe
    
  4. Para remover a configuração padrão no nível da frota, execute o seguinte comando:

    gcloud container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Terraform

Para ativar o Controlador de Políticas em toda a frota com a biblioteca de modelos padrão instalada, consulte o exemplo a seguir:

resource "google_gke_hub_feature" "policycontroller" {
  name     = "policycontroller"
  location = "global"
  project  = data.google_project.default.project_id

  fleet_default_member_config {
    policycontroller {
      policy_controller_hub_config {
        install_spec = "INSTALL_SPEC_ENABLED"
        policy_content {
          bundles {
            bundle = "pss-baseline-v2022"
          }
          template_library {
            installation = "ALL"
          }
        }
      }
    }
  }
}

É possível transmitir vários blocos bundle para instalar qualquer um dos pacotes listados na visão geral dos pacotes do Controlador de Políticas.

Para saber mais sobre como usar o Terraform, consulte Suporte do Terraform para o Controlador de Políticas.

Verifique a instalação do Controlador de Políticas

Depois de instalar o Controlador de Políticas, você pode verificar se ele foi concluído com sucesso.

Console

Siga estas etapas:

  1. No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.

    Acessar a política

  2. Na guia Configurações, na tabela em cluster, verifique a coluna Status do Controlador de Políticas. Uma instalação bem-sucedida tem um status de Instalada .

gcloud

Execute este comando:

gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Uma instalação bem-sucedida mostra membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE.

Verificar a instalação da biblioteca de modelos de restrição

Quando você instala o Controlador de Políticas, a biblioteca de modelos de restrição é instalada por padrão. Pode levar alguns minutos até que a instalação desse comando seja concluída. Verifique se a biblioteca de modelos foi concluída.

Console

Siga estas etapas:

  1. No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.

    Acessar a política

  2. Na guia Configurações, na tabela de clusters, selecione o número listado na coluna Pacotes instalados. No painel Status do conteúdo da política, uma instalação bem-sucedida da biblioteca de modelos tem o status Instalado .

gcloud

Execute este comando:

kubectl get constrainttemplates

O resultado será semelhante a:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Quando um modelo de restrição individual é instalado corretamente, o campo status.created é true.

Interações do Controlador de Políticas com o Config Sync

Se você estiver usando o Policy Controller com o Config Sync, vai precisar estar ciente das seguintes interações com os recursos armazenados na sua fonte de verdade, como um repositório Git, que são sincronizados pelo Config Sync:

  • Não é possível sincronizar um modelo de restrição que também faz parte da biblioteca de modelos, a menos que a biblioteca de modelos de restrição esteja desativada.

  • Se você quiser sincronizar o recurso Config armazenado no namespace gatekeeper-system, defina apenas o recurso Config na fonte da verdade. O gatekeeper-system Namespace não pode ser definido com ele.

Configurar métricas

Por padrão, o Controlador de Políticas tenta exportar métricas para o Prometheus e para o Cloud Monitoring. Talvez seja necessário concluir outras etapas de configuração, como conceder permissões, para permitir que o Controlador de Políticas exporte métricas. Para mais informações, consulte Usar métricas do Controlador de Políticas.

Gerenciar a biblioteca de modelos de restrição

Para informações sobre como desinstalar ou reinstalar modelos de restrição, as restrições associadas ou a biblioteca de modelos de restrição, consulte Criar restrições.

Como isentar namespaces da aplicação

É possível configurar o Controlador de Políticas para ignorar objetos em um namespace. Para mais informações, consulte Excluir namespaces do Controlador de Políticas.

Recursos "mutate"

O Controlador de Políticas também atua como um webhook de mutação. Para mais informações, consulte Recursos "mutate".

Ver a versão do Controlador de Políticas

Para descobrir qual versão do Controlador de Políticas do Gatekeeper está usando, visualize a tag de imagem executando o seguinte comando:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

A tag (ou hash) do Git usada para criar o Gatekeeper e o número de versão do ConfigManagement Operator são incluídos na tag de imagem da seguinte maneira:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Por exemplo, para a seguinte imagem:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 é o número da versão;
  • 480baac é a tag do Git;
  • 0 é o número do build.

Fazer upgrade do Controlador de Políticas

Antes de fazer upgrade do Controlador de Políticas, verifique as notas da versão para saber detalhes sobre o que mudou entre as versões.

Para fazer upgrade do Controlador de Políticas, siga estas etapas:

Console

  1. No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.

    Acessar a política

  2. Na guia Configurações, ao lado do cluster cuja versão você quer atualizar, selecione Editar configuração.
  3. Expanda o menu Editar configuração do Controlador de Políticas.
  4. Na lista suspensa Versão, selecione a versão em que você quer fazer upgrade.
  5. Clique em Salvar.

gcloud

Execute este comando:

gcloud container fleet policycontroller update \
  --version=VERSION \
  --memberships=MEMBERSHIP_NAME

Substitua:

  • VERSION: a versão para a qual você quer fazer upgrade
  • MEMBERSHIP_NAME: o nome da assinatura que você escolheu quando registrou o cluster. Para encontrar o nome da assinatura, execute gcloud container fleet memberships list.

Desinstalar o Controlador de Políticas

Siga estas etapas para desinstalar o Controlador de Políticas dos clusters.

Console

Para desativar o Controlador de Políticas nos clusters, conclua as tarefas a seguir:

  1. No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.

    Acessar a política

  2. Na guia Configurações, na tabela em cluster, selecione Editar na coluna Editar configuração.
  3. No painel do cluster, expanda o menu Sobre o Controlador de Políticas.
  4. Selecione Desinstalar o Controlador de Políticas.
  5. Confirme a desinstalação seguindo as instruções na caixa de diálogo de confirmação e selecionando Confirmar.

Quando o Controlador de Políticas é desinstalado, as colunas de status mostram Não instalado .

gcloud

Para desinstalar o Controlador de Políticas, execute o seguinte comando:

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Substitua MEMBERSHIP_NAME pelo nome do membro do cluster registrado para desativar o Controlador de Políticas. Você pode especificar várias associações separadas por uma vírgula.

RBAC e permissões do Controlador de Políticas

O Controlador de Políticas inclui cargas de trabalho altamente privilegiadas. As permissões para essas cargas de trabalho são abordadas na documentação das operações do Open Policy Agent Gatekeeper.

A seguir