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:
- Instale e inicialize a Google Cloud CLI, que fornece os
comandos
gcloud
,kubectl
enomos
usados nestas instruções. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executandogcloud components update
. Se você usa o Cloud Shell, a Google Cloud CLI já vem pré-instalada. 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.
Ative as APIs necessárias:
Console
Ative a API Policy Controller.
gcloud
Execute este comando:
gcloud services enable anthospolicycontroller.googleapis.com
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.
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.
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
.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:
- No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.
Clique em add Configurar o Controlador de Políticas.
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:
- Na seção Adicionar/editar pacotes de políticas, inclua ou exclua um pacote clicando no botão de alternância relevante.
Na seção Editar configuração do Policy Controller, faça o seguinte:
- 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.
- Na caixa Intervalo de auditoria, insira o período em segundos entre duas auditorias consecutivas.
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 .
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.
Na lista Versão, selecione a versão do Policy Controller que você quer usar.
Clique em Salvar.
Clique em Configurar.
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.Opcional: sincronize os clusters atuais com as configurações padrão:
- Na guia Configurações, clique em Sincronizar com as configurações da frota.
- 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 check_circle. 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:
Crie um arquivo chamado
fleet-default.yaml
que contenha as configurações padrão do Policy Controller. O campoinstallSpec
é 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 .
Aplique a configuração padrão à sua frota:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Para verificar se a configuração foi aplicada, execute o seguinte comando:
gcloud container fleet policycontroller describe
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:
É 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:
- No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.
- 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 check_circle.
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:
- No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.
- 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 check_circle.
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 namespacegatekeeper-system
, defina apenas o recursoConfig
na fonte da verdade. Ogatekeeper-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
- No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.
- Na guia Configurações, ao lado do cluster cuja versão você quer atualizar, selecione edit Editar configuração.
- Expanda o menu Editar configuração do Policy Controller.
- Na lista suspensa Versão, selecione a versão em que você quer fazer upgrade.
- 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 upgradeMEMBERSHIP_NAME
: o nome da assinatura que você escolheu quando registrou o cluster. Para encontrar o nome da assinatura, executegcloud 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:
- No console do Google Cloud , acesse a página Política na seção Gerenciamento de postura.
- Na guia Configurações, na tabela de clusters, selecione Editar edit na coluna Editar configuração.
- No painel do cluster, expanda o menu Sobre o Policy Controller.
- Selecione Desinstalar o Policy Controller.
- 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 do_not_disturb_on.
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
- Saiba mais sobre o Policy Controller.
- Saiba mais sobre os pacotes do Policy Controller.
- Saiba como criar uma restrição.
- Resolver problemas do Policy Controller.