Esta página mostra como instalar o Policy Controller. O Policy Controller verifica, audita e aplica a conformidade dos seus clusters com políticas relacionadas com segurança, regulamentos ou regras empresariais.
Esta página destina-se a administradores de TI e operadores que querem garantir que todos os recursos executados na plataforma de nuvem cumprem os requisitos de conformidade da organização, fornecendo e mantendo a automatização para auditar ou aplicar. Para saber mais sobre as funções comuns e as tarefas de exemplo a que fazemos referência no Google Cloud conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE.
O Policy Controller está disponível se usar o Google Kubernetes Engine. Para saber mais, consulte os preços do Google Kubernetes Engine.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Instale e inicialize a CLI do Google Cloud, que fornece os comandos
gcloud
,kubectl
enomos
usados nestas instruções. Se instalou anteriormente a CLI gcloud, obtenha a versão mais recente executandogcloud components update
. Se usar o Cloud Shell, a Google Cloud CLI é pré-instalada. Certifique-se de que o Open Policy Agent Gatekeeper de código aberto não está instalado no seu cluster. Se for o caso, desinstale o Gatekeeper antes de instalar o Policy Controller.
Ative as APIs necessárias:
consola
Ative a API Policy Controller.
gcloud
Execute o seguinte comando:
gcloud services enable anthospolicycontroller.googleapis.com
Crie ou certifique-se de que tem acesso a um cluster com uma versão do Kubernetes de 1.14.x ou posterior. O Policy Controller pode parecer ser executado em versões do Kubernetes anteriores à 1.14.x, mas o produto não se comporta corretamente.
Conceda as funções de IAM necessárias ao utilizador que está a registar o cluster.
Se planeia usar a Google Cloud CLI para configurar o Policy Controller, registe o seu cluster numa frota agora. Se planeia usar a consola, registe os seus clusters quando instalar o Policy Controller. Google Cloud
Se estiver a usar clusters anexados do GKE, certifique-se de que o cluster do AKS não tem o suplemento da Política do Azure e evite etiquetar espaços de nomes com a chave
control-plane
.Se estiver a usar o Google Distributed Cloud no VMware ou bare metal, certifique-se de que está a instalar o Policy Controller num cluster de utilizador. Não é possível instalar o Policy Controller num cluster de administrador.
Instale o Controlador de políticas
Consola
Para instalar o Policy Controller na Google Cloud consola, conclua os seguintes passos:
- Na Google Cloud consola, aceda à página Política na secção Gestão de postura.
Clique em add Configurar Policy Controller.
Opcional: para alterar as predefinições da frota, clique em Personalizar predefinições da frota. Na caixa de diálogo apresentada, faça o seguinte:
- Na secção Adicionar/editar pacotes de políticas, inclua ou exclua um pacote de políticas clicando no botão relevante.
Na secção Editar configuração do Policy Controller, faça o seguinte:
- Para ativar o webhook de mutação, selecione a caixa de verificação Ativar webhook de mutação. Esta funcionalidade não é compatível com clusters do Autopilot.
- Na caixa Intervalo de auditoria, introduza o período em segundos entre duas auditorias consecutivas.
Na caixa Espaços de nomes isentos, introduza uma lista de espaços de nomes. O Policy Controller ignora objetos nestes espaços de nomes. Esta funcionalidade não é compatível com clusters do Autopilot.
Prática recomendada: Exente namespaces do sistema para evitar erros no seu ambiente. Pode encontrar as instruções para isentar espaços de nomes e uma lista de espaços de nomes comuns criados por Google Cloud serviços na página Excluir espaços de nomes.
Para ativar as restrições referenciais, selecione a caixa de verificação Ativar modelos de restrições que fazem referência a objetos que não o objeto que está a ser avaliado.
Na lista Versão, selecione a versão do Policy Controller que quer usar.
Clique em Guardar alterações.
Clique em Configurar.
Na caixa de diálogo de confirmação, clique em Confirmar. Se não tiver ativado anteriormente o Policy Controller, quando clicar em Confirmar, ativa a API
anthospolicycontroller.googleapis.com
e instala o Policy Controller nos seus clusters.Opcional: sincronize os clusters existentes com as predefinições:
- No separador Definições, clique em Sincronizar com as definições da frota.
- Na lista Clusters na frota, selecione os clusters que quer sincronizar e, de seguida, clique em Sincronizar com as definições da frota. Esta operação pode demorar alguns minutos a ser concluída.
É apresentada a página do separador Definições do Policy Controller. Quando o Policy Controller está instalado e configurado nos seus clusters, as colunas de estado mostram Instalado check_circle. Este processo pode demorar vários minutos.
gcloud
Ative o Policy Controller executando o seguinte comando:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Pode definir campos adicionais para configurar o Policy Controller. Por exemplo, pode querer indicar ao Policy Controller que isente alguns espaços de nomes da aplicação.
Para ver uma lista completa dos campos que pode configurar, consulte a
documentação da CLI gcloud do Policy Controller
ou execute gcloud container fleet policycontroller enable --help
.
Defina as definições ao nível da frota para o Policy Controller concluindo os seguintes passos:
Crie um ficheiro denominado
fleet-default.yaml
que contenha as configurações predefinidas para o Policy Controller. O campoinstallSpec
é obrigatório para ativar as predefinições ao nível da frota. Este exemplo mostra as opções que pode configurar:# 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: Exente namespaces do sistema para evitar erros no seu ambiente. Pode encontrar as instruções para isentar espaços de nomes e uma lista de espaços de nomes comuns criados por Google Cloud serviços na página Excluir espaços de nomes.
Aplique a configuração predefinida à 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 predefinida ao nível da frota, execute o seguinte comando:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
Terraform
Para ativar o Policy Controller na sua frota com a biblioteca de modelos predefinida instalada, consulte o seguinte exemplo:
Pode transmitir vários blocos bundle
para instalar qualquer um dos pacotes
indicados na vista geral dos pacotes do Policy Controller.
Para saber mais sobre a utilização do Terraform, consulte o artigo Suporte do Terraform para o Policy Controller.
Valide a instalação do Policy Controller
Após instalar o Policy Controller, pode verificar se a instalação foi concluída com êxito.
Consola
Conclua os seguintes passos:
- Na Google Cloud consola, aceda à página Política na secção Gestão de postura.
- No separador Definições, na tabela de clusters, verifique a coluna Estado do controlador de políticas. Uma instalação bem-sucedida tem o estado Instalado check_circle.
gcloud
Execute o seguinte comando:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Uma instalação bem-sucedida mostra membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
.
Valide a instalação da biblioteca de modelos de restrições
Quando instala o Policy Controller, a biblioteca de modelos de restrições é instalada por predefinição. Esta instalação pode demorar alguns minutos a ser concluída. Pode verificar se a biblioteca de modelos foi concluída com êxito.
Consola
Conclua os seguintes passos:
- Na Google Cloud consola, aceda à página Política na secção Gestão de postura.
- No separador Definições, na tabela de clusters, selecione o número apresentado na coluna Pacotes instalados. No painel Estado do conteúdo da política, uma instalação bem-sucedida da biblioteca de modelos tem o estado Instalado check_circle.
gcloud
Execute o seguinte comando:
kubectl get constrainttemplates
Deverá ver uma saída semelhante ao seguinte exemplo:
NAME AGE k8sallowedrepos 84s k8scontainerlimits 84s k8spspallowprivilegeescalationcontainer 84s ...[OUTPUT TRUNCATED]...
Quando um modelo de restrição individual é instalado corretamente, o respetivo campo status.created
é true
.
Interações do Policy Controller com o Config Sync
Se estiver a usar o Policy Controller com o Config Sync, deve ter em atenção as 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 pode sincronizar um modelo de restrição que também faça parte da biblioteca de modelos, a menos que a biblioteca de modelos de restrição esteja desativada.
Se quiser sincronizar o recurso
Config
armazenado no espaço de nomesgatekeeper-system
, só tem de definir o recursoConfig
na fonte de verdade. Ogatekeeper-system
Namespace
não pode ser definido com o mesmo.
Configure métricas
Por predefinição, o Policy Controller tenta exportar métricas para o Prometheus e o Cloud Monitoring. Pode ter de concluir passos de configuração adicionais, como conceder autorizações, para permitir que o Policy Controller exporte métricas. Para mais informações, consulte o artigo Use as métricas do Policy Controller.
Faça a gestão da biblioteca de modelos de restrições
Para ver informações sobre como desinstalar ou instalar modelos de restrições, as respetivas restrições associadas ou a biblioteca de modelos de restrições, consulte o artigo Crie restrições.
Iente espaços de nomes da aplicação
Pode configurar o Policy Controller para ignorar objetos num espaço de nomes. Para mais informações, consulte o artigo Exclua espaços de nomes do Policy Controller.
Alterar recursos
O Controlador de políticas também funciona como um webhook de mutação. Para mais informações, consulte o artigo Altere recursos.
Veja a versão do Policy Controller
Para descobrir que versão do Gatekeeper Policy Controller está a usar, veja a etiqueta de imagem executando o seguinte comando:
kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
-o="jsonpath={.spec.template.spec.containers[0].image}"
A etiqueta Git (ou hash) usada para criar o Gatekeeper e o número da versão do operador ConfigManagement são incluídos na etiqueta da imagem da seguinte forma:
.../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 etiqueta Git.0
é o número de compilação.
Atualize o Controlador de políticas
Antes de atualizar o Policy Controller, consulte as notas de lançamento para ver detalhes sobre o que mudou entre as versões.
Para atualizar o Policy Controller, conclua os seguintes passos:
Consola
- Na Google Cloud consola, aceda à página Política na secção Gestão de postura.
- No separador Definições, junto ao cluster cuja versão quer atualizar, selecione edit Editar configuração.
- Expanda o menu Editar configuração do Policy Controller.
- Na lista pendente Versão, selecione a versão para a qual quer fazer a atualização.
- Clique em Guardar alterações.
gcloud
Execute o seguinte comando:
gcloud container fleet policycontroller update \
--version=VERSION \
--memberships=MEMBERSHIP_NAME
Substitua o seguinte:
VERSION
: a versão para a qual quer atualizarMEMBERSHIP_NAME
: o nome da subscrição que escolheu quando registou o cluster. Pode encontrar o nome da subscrição executando o comandogcloud container fleet memberships list
.
Desinstale o Controlador de políticas
Siga estes passos para desinstalar o Policy Controller dos seus clusters.
Consola
Para desativar o Policy Controller nos seus clusters, conclua as seguintes tarefas:
- Na Google Cloud consola, aceda à página Política na secção Gestão de postura.
- No separador Definições, na tabela de clusters, selecione Editar edit na coluna Editar configuração.
- No painel do cluster, expanda o menu Acerca do Policy Controller.
- Selecione Desinstalar 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 estado 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 da associação do cluster registado para desativar o Policy Controller. Pode especificar várias subscrições separadas por uma vírgula.
CABF e autorizações do Policy Controller
O Policy Controller inclui cargas de trabalho altamente privilegiadas. As autorizações para estas cargas de trabalho estão abrangidas na documentação de operações do Open Policy Agent Gatekeeper.
O que se segue?
- Saiba mais acerca do Policy Controller.
- Saiba mais sobre os pacotes do Policy Controller.
- Saiba como criar uma restrição.
- Resolva problemas do Policy Controller.