Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure Pod security policies

Última atualização: Jun 27, 2026

Para atender aos requisitos de conformidade do cluster e aumentar a segurança, ative o recurso de governança de políticas. Esse recurso oferece uma biblioteca de políticas de segurança para aplicações em contêineres Kubernetes, abrangendo categorias como Infra (recursos da camada de infraestrutura), Compliance (padrões de conformidade do Kubernetes), PSP (extensões das capacidades do PodSecurityPolicy) e K8s-general (políticas gerais). No console do ACK, ative ou personalize políticas de segurança para suas aplicações em contêineres e garanta que as implantações e atualizações de Pods sejam seguras e controladas.

Governança de políticas

A partir da versão 1.21 do Kubernetes, o PodSecurityPolicy (PSP) foi descontinuado. Em resposta, o ACK aprimorou seu recurso original de gerenciamento de políticas baseado em PSP. Construído sobre o controlador de admissão Gatekeeper, que utiliza políticas do Open Policy Agent (OPA), o ACK enriqueceu o recurso com funcionalidades como estatísticas de status da governança de políticas, relatórios de logs e pesquisa de logs. O ACK também inclui uma vasta biblioteca de políticas com regras adaptadas para diversos cenários de aplicações Kubernetes. Configure essas políticas por meio de uma interface intuitiva no console do ACK e simplifique o uso da governança de políticas.

Pré-requisitos

  • O cluster deve executar o Kubernetes 1.16 ou posterior. Para atualizar seu cluster, consulte Atualizar manualmente um cluster ACK.

  • Caso utilize um usuário RAM para gerenciar políticas, verifique se ele possui as seguintes permissões:

    • cs:DescribePolicies: lista as políticas na biblioteca de políticas.

    • cs:DescribePolicyDetails: obtém os detalhes de um modelo de política.

    • cs:DescribePolicyGovernanceInCluster: obtém os detalhes da governança de políticas de um cluster.

    • cs:DescribePolicyInstances: lista as instâncias de política implantadas em um cluster.

    • cs:DescribePolicyInstancesStatus: obtém o status de implantação das instâncias de política para diferentes tipos de política em um cluster.

    • cs:DeployPolicyInstance: implanta uma instância de política em um cluster especificado.

    • cs:DeletePolicyInstance: exclui uma instância de política em um cluster especificado.

    • cs:ModifyPolicyInstance: modifica uma instância de política em um cluster especificado.

    Para mais informações sobre como criar uma política RAM personalizada, consulte Conceder permissões de acesso a clusters e recursos de nuvem usando o RAM.

Componentes de governança de políticas

O ACK oferece dois tipos de componentes de governança de políticas: uma versão gerenciada e uma não gerenciada. Apenas um tipo pode ser ativado por vez em um cluster. A tabela a seguir compara as duas versões.

Item

Versão gerenciada

Versão não gerenciada

Modo de implantação

Implantação no plano de controle: o ACK implanta e gerencia totalmente os componentes no plano de controle do cluster.

Implantação no plano de dados: os componentes são implantados como uma carga de trabalho no cluster e instalados por padrão no namespace kube-system, consumindo recursos de Pod nos nós de trabalho.

Clusters aplicáveis

Clusters Auto Mode v1.30 ou posterior

Clusters gerenciados ACK e Clusters dedicados ACK v1.16 ou posterior

Configuração de parâmetros de inicialização

O sistema configura os parâmetros de inicialização do componente, que não podem ser personalizados.

É possível personalizar os parâmetros de inicialização dos componentes.

Instalação de componentes principais

  • managed-gatekeeper

  • managed-policy-template-controller

No console do ACK, na página Add-ons, o cartão do componente da versão gerenciada é marcado com um ícone Managedimage.
  • gatekeeper

  • policy-template-controller

  • componente de coleta de logs (logtail-ds ou loongcollector)

Coleta de logs de políticas

Coleta logs usando o recurso Coletar logs de componentes do plano de controle em um cluster gerenciado ACK e os envia para um projeto do Log Service especificado.

Instala um componente de coleta de logs no cluster para coletar e enviar logs para um projeto do Log Service especificado.

Biblioteca de políticas

Todas as políticas em Políticas de segurança predefinidas para ACK

Observações

  • Este recurso aplica-se apenas a nós Linux.

  • Não há suporte para políticas personalizadas. Todas as regras devem vir da biblioteca de políticas integrada do ACK.

Etapa 1: Instalar ou atualizar a governança de políticas

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Security > Policy Governance.

  3. Na página Policy, siga as instruções na tela para instalar ou atualizar os componentes.

    Ao ativar o recurso de governança de políticas, instale os seguintes componentes. Eles são gratuitos, mas consomem recursos de Pod.

    • gatekeeper: controlador de admissão de políticas do Kubernetes baseado no mecanismo de políticas OPA. Auxilia no gerenciamento e na aplicação de políticas OPA no cluster e implementa recursos como gerenciamento de rótulos de namespace.

      Nota

      Use o componente gatekeeper fornecido pelo ACK. Se você instalou um componente gatekeeper de outra source, desinstale-o e reinstale a versão fornecida pelo ACK. Para mais informações sobre as notas de versão do componente gatekeeper, consulte gatekeeper.

    • Componente de coleta de logs: coleta e recupera eventos de solicitações negadas ou sinalizadas por restrições de política.

    • policy-template-controller: controlador Kubernetes desenvolvido com base em modelos de política da Alibaba Cloud. Facilita o gerenciamento das instâncias de política implantadas a partir de diferentes modelos e do status geral de governança do cluster.

Etapa 2: Usar a governança de políticas

Ponto de entrada

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Security > Policy Governance.

  3. Na página Policy, siga as instruções na tela para instalar ou atualizar componentes, se solicitado, e execute as operações conforme necessário.

Visualize status de aplicação de políticas

Clique na aba Overview para visualizar o status atual da governança de políticas do seu cluster.

  • A seção de visão geral de políticas exibe o número total de políticas de proteção de alto e médio risco, a quantidade de políticas ativadas e uma lista de políticas recomendadas para ativação.

  • Estatísticas de solicitações negadas e alertas nos últimos 7 dias.

  • Registros de aplicação de políticas dos últimos 7 dias. Por padrão, a tabela mostra os 100 logs mais recentes de solicitações negadas ou alertas desse período. Para visualizar mais logs de auditoria, clique no ícone 未知 ao lado de Actions within Last 7 Days e clique no link do Log Service na janela pop-up para ver todos os logs no Logstore especificado do console do Log Service. A tabela Policy Enforcement Records for Last 7 Days, na parte inferior da página, mostra Enforcement Time, Policy Type, Policy Name, Policy Description, Risk Level, Action e Details para cada política. Utilize a caixa de pesquisa e os botões de filtro para localizar registros específicos.

Crie e gerencie instâncias de política

Clique na aba My Policies e, em seguida, clique em Create Policy Instance. Na caixa de diálogo Create Policy Instance, configure os parâmetros.

Parâmetro

Descrição

Policy Type

Selecione um tipo de política. Valores válidos:

  • infra: políticas relacionadas a recursos da camada de infraestrutura.

  • compliance: políticas personalizadas com base em padrões de conformidade do Kubernetes, como Alibaba Cloud Kubernetes Security Hardening.

  • psp: políticas que substituem as capacidades do Pod Security Policy (PSP).

  • k8s-general: políticas gerais que impõem restrições de segurança nas configurações de recursos do Kubernetes com base nas melhores práticas de segurança.

Para mais informações, consulte Políticas de segurança predefinidas para ACK.

Policy Name

Com base no tipo de política selecionado, escolha o nome do modelo de política que deseja implantar na lista suspensa.

Action

  • Deny: bloqueia a implantação de recursos que violam a política.

  • Alert: permite a implantação de recursos que violam a política, mas gera um log de alerta.

Scope

Selecione os namespaces no cluster aos quais a instância de política se aplica.

Parameters

  • Se a caixa de texto estiver vazia, a regra não exige parâmetros.

  • Caso a caixa de texto contenha um modelo de parâmetro, configure-os no formato especificado com base nas descrições fornecidas.

Visualize políticas e instâncias

Clique na aba My Policies para visualizar todas as políticas implantáveis no cluster.

  • Filtre as políticas exibidas no canto superior direito da lista. As políticas ativadas aparecem primeiro. A coluna Instances mostra o número de instâncias implantadas para a política correspondente no cluster.

    Se o valor na coluna Instances estiver vazio, a política ainda não foi implantada no cluster. Clique em Enabled na coluna Actions para configurar parâmetros e implantar a instância de política.

  • Clique em Edit na coluna Actions para modificar a configuração de uma instância de política.

    Se uma política tiver várias instâncias, clique em View Instances na coluna Actions e, em seguida, clique em Edit na instância desejada para modificá-la.

  • Clique em Delete na coluna Actions para excluir todas as instâncias da política implantadas no cluster.

Para mais informações sobre descrições de políticas e exemplos de modelos, consulte Políticas de segurança predefinidas para ACK.

Operações relacionadas

Ative proteção contra exclusão

Após ativar o recurso de governança de políticas conforme descrito em Etapa 1: Instalar ou atualizar a governança de políticas, ative também a proteção contra exclusão para namespaces ou Services que envolvem negócios críticos ou dados sensíveis, evitando exclusões acidentais. Quando essa proteção está ativada, é necessário desativá-la manualmente antes de excluir os recursos correspondentes.

Esta seção mostra como ativar a proteção contra exclusão para um namespace existente. O processo é semelhante para outros recursos.

  • Ative proteção contra exclusão para um namespace existente

    1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Namespaces and Quotas.

    3. Na lista de namespaces, localize o namespace que deseja gerenciar, clique em Edit na coluna Actions e siga as instruções na tela na caixa de diálogo para ativar a proteção contra exclusão.

  • Ative proteção contra exclusão para um Service existente

    1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Network > Services.

    3. Na lista de Services, localize o Service que deseja gerenciar, clique em image na coluna Actions, clique em Enable Deletion Protection e siga as instruções na tela na caixa de diálogo para ativar a proteção contra exclusão.

Validação entre recursos com ack-policy-external-provider

Por padrão, o Gatekeeper toma decisões de política baseadas apenas no objeto em revisão. No entanto, cenários de segurança complexos frequentemente exigem que uma política verifique o estado de outros recursos do cluster para garantir uma aplicação precisa.

O componente gerenciado ack-policy-external-provider atua como uma fonte de dados externa para o Gatekeeper, permitindo que desenvolvedores de políticas consultem recursos do Kubernetes diretamente em seu código Rego. Essa capacidade é necessária para políticas avançadas, como a política integrada de proteção contra exclusão de CRD.

Importante

O componente ack-policy-external-provider deve ser usado com o gatekeeper. Certifique-se de que o gatekeeper esteja implantado no seu cluster.

Instale e configure ack-policy-external-provider

  1. Na página Clusters ACK, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Add-ons.

  2. Pesquise por ack-policy-external-provider e siga as instruções na tela para concluir a configuração.

    • ProviderPodNumber: o número de instâncias do componente.

    • ProtectedKinds: adicione os tipos de recursos correspondentes aos CRDs que deseja proteger.

      A proteção contra exclusão de CRD requer a verificação da existência de instâncias do tipo de recurso no cluster. Seguindo o princípio do menor privilégio, o ack-policy-external-provider não possui as permissões de consulta necessárias por padrão e deve ser configurado manualmente.

      Defina ProviderPodNumber (número de réplicas, padrão: 1). Na seção ProtectedKinds, insira os nomes dos tipos de recursos (como pods, policies ou customresources). Clique em Add para adicionar várias entradas ou em Delete para remover uma entrada. Clique em OK.

Definição de API e parâmetros

O ack-policy-external-provider implementa um Provider de dados externo padrão do Gatekeeper. Em um modelo de política Rego, envie uma solicitação de consulta de recursos para este componente chamando a função external_data e especificando provider: ack-policy-external-data-provider.

Os parâmetros da solicitação são definidos no formato JSON. Veja alguns exemplos abaixo.

// Example 1
{
  "action": "ListK8sResource",
  "namespaced": false,
  "group": "",
  "version": "v1",
  "resource": "persistentvolumeclaims"
  "requestID": review.uid,
  "userInfo": review.userInfo,
  "requestFrom": "PVCProtector",
  "labelSelector": "protected",
  "limit": 1
}
// Example 2
{
  "action": "GetK8sResource",
  "namespaced": true,
  "namespace": "default",
  "group": "apps",
  "version": "v1",
  "resource": "deployments",
  "requestID": review.uid,
  "userInfo": review.userInfo,
  "requestFrom": "FinOpsPolicy",
  "labelSelector": "protected",
  "limit": 1
}

A tabela a seguir descreve os parâmetros principais.

Parâmetro

Descrição

Obrigatório

action

Tipo de operação. Os valores suportados são ListK8sResource e GetK8sResource.

Sim

group

Grupo de API do recurso alvo.

Sim

version

Versão da API do recurso alvo.

Não

resource

Nome no plural do recurso alvo (como persistentvolumeclaims).

Sim

namespaced

Indica se o recurso alvo está localizado dentro de um namespace. true ou false.

Para recursos com escopo de cluster, use false.

Sim

namespace

Quando namespaced for true, especifique o namespace para a consulta.

Não

name

Quando action for GetK8sResource, especifique o nome do recurso a ser recuperado.

Não

labelSelector

Filtra recursos com base em rótulos, seguindo a sintaxe de seletor de rótulos do Kubernetes.

Não

limit

Número máximo de recursos retornados por ListK8sResource.

Não

requestID

ID exclusivo da solicitação. Recomendamos usar review.uid.

Não

userInfo

Informações sobre o usuário que inicia a solicitação. Recomendamos usar review.userInfo.

Não

requestFrom

Identificador da origem da solicitação, geralmente o nome do modelo de política, usado para rastreamento de logs.

Sim

Exemplo: Impedir exclusão de CRD

Este exemplo mostra como usar o ack-policy-external-provider para implementar uma política avançada comum: proibir a exclusão de um CustomResourceDefinition (CRD) se ainda existirem instâncias de recursos personalizados (CR) associadas.

Esta política é uma regra integrada e não requer implantação manual. Esta seção serve apenas para fins de demonstração.
  • Lógica da política

    • Gatilho: o Gatekeeper detecta uma operação DELETE de CRD.

    • Consulta: as políticas Rego usam external_data para chamar o ack-policy-external-provider.

    • Verificação: com base nos parâmetros da solicitação, o componente ack-policy-external-provider consulta o cluster para verificar se existem instâncias CR correspondentes.

    • Decisão: se o resultado da consulta retornar pelo menos uma instância CR, o ack-policy-external-provider devolverá o resultado à política Rego, e a política acabará por deny (rejeitar) essa operação de exclusão.

  • Modelo de política (ConstraintTemplate)

    Define a lógica da política.

    apiVersion: templates.gatekeeper.sh/v1beta1
    kind: ConstraintTemplate
    metadata:
      name: blockcrddeletion
      annotations:
        meta.helm.sh/release-name: gatekeeper
        meta.helm.sh/release-namespace: kube-system
        metadata.gatekeeper.sh/version: 1.0.0
      labels:
        app.kubernetes.io/managed-by: Helm
    spec:
      crd:
        spec:
          names:
            kind: BlockCrdDeletion
          validation:
            legacySchema: true
      targets:
      - target: admission.k8s.gatekeeper.sh
        rego: |
          package block_crd_deletion
          violation[{"msg": msg}] {
            before(input.review.operation)
            response := handle(input.review)
            msg := after(response)
          }
    
          before(operation) {
            operation == "DELETE"
          }
    
          handle(review) = response {
            customrequest := {
              "action": "ListK8sResource",
              "namespaced": false,
              "group": review.object.spec.group,
              "version": "",
              "resource": review.object.spec.names.plural,
              "requestID": review.uid,
              "userInfo": review.userInfo,
              "requestFrom": "BlockCrdDeletion",
              "labelSelector": "protected",
              "limit": 1
            }
            request_keys := [json.marshal(customrequest)]
            response := external_data({
              "provider": "ack-policy-external-data-provider",
              "keys": request_keys
            })
          }
    
          after(response) = msg {
            count(response.responses[0]) > 0
            msg := sprintf(
              "The CRD %v is not allowed to be deleted. Reason: It is not allowed to delete a CRD object when it contains a collection of custom resources. Current existing custom resources: %v, etc.",
              [input.review.name, response.responses[0][0]]
            )
          }
  • Instância de política (Constraint)

    Aplica o modelo a recursos específicos. Este exemplo aplica a política a todos os CRDs.

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: BlockCrdDeletion
    metadata:
      name: block-crd-deletion-rule
    spec:
      enforcementAction: deny
      match:
        kinds:
        - apiGroups:
          - '*'
          kinds:
          - CustomResourceDefinition
  • Verifique o resultado

    1. Crie um CRD de teste e uma instância CR correspondente.

      # Create a CRD
      apiVersion: apiextensions.k8s.io/v1
      kind: CustomResourceDefinition
      metadata:
        name: simplestthings.example.com
      spec:
        group: example.com
        scope: Namespaced
        names:
          plural: simplestthings
          singular: simplestthing
          kind: SimplestThing
        versions:
          - name: v1
            served: true
            storage: true
            schema:
              openAPIV3Schema:
                type: object
                properties:
                  spec:
                    type: object
                    properties:
                      message:
                        type: string
      ---
      # Create a CR instance
      apiVersion: example.com/v1
      kind: SimplestThing
      metadata:
        name: my-simple-thing
        namespace: default
        labels:
          protected: "false"
      spec:
        message: "Hello"
    2. Tente excluir o CRD.

      kubectl delete crd simplestthings.example.com
    3. Verifique se a política bloqueia a exclusão e retorna uma mensagem de erro clara.

      Saída esperada:

      Error from server (Forbidden): admission webhook "delete.validation.gatekeeper.sh" denied the request: [block-crd-deletion-rule] The CRD simplestthings.example.com is not allowed to be deleted. Reason: It is not allowed to delete a CRD object when it contains a collection of custom resources. Current existing custom resources: my-simple-thing, etc.

Tópicos relacionados

O recurso de inspeção permite verificar riscos de segurança nas configurações de cargas de trabalho. Para mais informações, consulte Configurar inspeção para verificar cargas de trabalho do cluster.