Instalar o Policy Controller

Esta página mostra como instalar o Policy Controller. O Policy Controller verifica, audita e reforça a conformidade de seus clusters com políticas relacionadas a segurança, regulamentos ou regras de negócios.

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

O Policy Controller 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 Google Cloud CLI, 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 Policy Controller.

  3. Ative as APIs necessárias:

    Console

    Ative a API Policy Controller.

    Ativar a API Policy Controller

    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 Policy Controller pode parecer que está sendo executado nas 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 Policy Controller, registre seu cluster em uma frota agora. Se você planeja usar o console Google Cloud , registre seus clusters ao instalar o Policy Controller.

  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 Policy Controller em um cluster de usuário. O Policy Controller não pode ser instalado em um cluster de administrador.

Instalar o Policy Controller

Console

Para instalar o Policy Controller 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 Policy Controller, 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 Policy Controller ignora objetos nesses namespaces. Esse recurso não é compatível com clusters do Autopilot.

        Prática recomendada:

        Isente namespaces do sistema para evitar erros no seu ambiente. Na página "Excluir namespaces", você encontra as instruções para isentar namespaces e uma lista de namespaces comuns criados pelos serviços do Google Cloud .

      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 Policy Controller 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 Policy Controller, clique em Confirmar para ativar a API anthospolicycontroller.googleapis.com e instalar o Policy Controller nos seus 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 Policy Controller. Quando o Policy Controller está instalado e configurado nos clusters, as colunas de status mostram Instalado . Isso pode levar alguns minutos.

gcloud

Ative o Policy Controller executando o seguinte comando:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

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

Defina as configurações no nível da frota para o Policy Controller seguindo estas etapas:

  1. Crie um arquivo chamado fleet-default.yaml que contenha as configurações padrão do Policy Controller. 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 namespaces do sistema para evitar erros no seu ambiente. Na página "Excluir namespaces", você encontra as instruções para isentar namespaces e uma lista de namespaces comuns criados pelos serviços do Google Cloud .

  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 Policy Controller 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 Policy Controller.

Verifique a instalação do Policy Controller

Depois de instalar o Policy Controller, 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 de clusters, verifique a coluna Status do controlador de política. 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 Policy Controller, 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 Policy Controller 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 Policy Controller 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 Policy Controller exporte métricas. Para mais informações, consulte Usar métricas do Policy Controller.

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 Policy Controller para ignorar objetos em um namespace. Para mais informações, consulte Excluir namespaces do Policy Controller.

Recursos "mutate"

O Policy Controller também atua como um webhook mutável. Para mais informações, consulte Recursos "mutate".

Ver a versão do Policy Controller

Para ver qual versão do Policy Controller do Gatekeeper está usando, execute o seguinte comando para ver a tag de imagem:

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 Policy Controller

Antes de fazer upgrade do Policy Controller, verifique as notas da versão para saber detalhes sobre o que mudou entre as versões.

Para fazer upgrade do Policy Controller, 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 Policy Controller.
  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 Policy Controller

Siga estas etapas para desinstalar o Policy Controller dos clusters.

Console

Para desativar o Policy Controller 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 de clusters, selecione Editar na coluna Editar configuração.
  3. No painel do cluster, expanda o menu Sobre o Policy Controller.
  4. Selecione Desinstalar o Policy Controller.
  5. Confirme a desinstalação seguindo as instruções na caixa de diálogo de confirmação e selecionando Confirmar.

Quando o Policy Controller é desinstalado, as colunas de status mostram Não instalado .

gcloud

Para desinstalar o Policy Controller, execute o seguinte comando:

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

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

RBAC e permissões do Policy Controller

O Policy Controller 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