Instale o Controlador de políticas

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:

  1. Instale e inicialize a CLI do Google Cloud, que fornece os comandos gcloud, kubectl e nomos usados nestas instruções. Se instalou anteriormente a CLI gcloud, obtenha a versão mais recente executando gcloud components update. Se usar o Cloud Shell, a Google Cloud CLI é pré-instalada.
  2. 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.

  3. Ative as APIs necessárias:

    consola

    Ative a API Policy Controller.

    Ative a API Policy Controller

    gcloud

    Execute o seguinte comando:

    gcloud services enable anthospolicycontroller.googleapis.com
    
  4. 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.

  5. Conceda as funções de IAM necessárias ao utilizador que está a registar o cluster.

  6. 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

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

  8. 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:

  1. Na Google Cloud consola, aceda à página Política na secção Gestão de postura.

    Aceder à política

  2. Clique em Configurar Policy Controller.

  3. 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:

    1. Na secção Adicionar/editar pacotes de políticas, inclua ou exclua um pacote de políticas clicando no botão relevante.
    2. Na secção Editar configuração do Policy Controller, faça o seguinte:

      1. 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.
      2. Na caixa Intervalo de auditoria, introduza o período em segundos entre duas auditorias consecutivas.
      3. 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.

      4. 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.

      5. Na lista Versão, selecione a versão do Policy Controller que quer usar.

    3. Clique em Guardar alterações.

  4. Clique em Configurar.

  5. 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.

  6. Opcional: sincronize os clusters existentes com as predefinições:

    1. No separador Definições, clique em Sincronizar com as definições da frota.
    2. 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 . 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:

  1. Crie um ficheiro denominado fleet-default.yaml que contenha as configurações predefinidas para o Policy Controller. O campo installSpec é 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.

  2. Aplique a configuração predefinida à 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 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:

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"
          }
        }
      }
    }
  }
}

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:

  1. Na Google Cloud consola, aceda à página Política na secção Gestão de postura.

    Aceder à política

  2. 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 .

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:

  1. Na Google Cloud consola, aceda à página Política na secção Gestão de postura.

    Aceder à política

  2. 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 .

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 nomes gatekeeper-system, só tem de definir o recurso Config na fonte de verdade. O gatekeeper-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

  1. Na Google Cloud consola, aceda à página Política na secção Gestão de postura.

    Aceder à política

  2. No separador Definições, junto ao cluster cuja versão quer atualizar, selecione Editar configuração.
  3. Expanda o menu Editar configuração do Policy Controller.
  4. Na lista pendente Versão, selecione a versão para a qual quer fazer a atualização.
  5. 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 atualizar
  • MEMBERSHIP_NAME: o nome da subscrição que escolheu quando registou o cluster. Pode encontrar o nome da subscrição executando o comando gcloud 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:

  1. Na Google Cloud consola, aceda à página Política na secção Gestão de postura.

    Aceder à política

  2. No separador Definições, na tabela de clusters, selecione Editar na coluna Editar configuração.
  3. No painel do cluster, expanda o menu Acerca do Policy Controller.
  4. Selecione Desinstalar 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 estado 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 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?