O Policy Controller inclui uma biblioteca predefinida de modelos de restrições que pode usar com o pacote restrito de normas de segurança de pods. Este pacote permite-lhe alcançar muitas das mesmas proteções que a política restrita das normas de segurança de pods (PSS) do Kubernetes, com a capacidade de testar as suas políticas antes de as aplicar e excluir a cobertura de recursos específicos.
Esta página contém instruções para aplicar manualmente um pacote de políticas. Em alternativa, pode aplicar pacotes de políticas diretamente.
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 de utilizadores do GKE.
O pacote inclui estas restrições que são mapeadas para os seguintes controlos da política restrita das normas de segurança de pods (PSS) do Kubernetes:
| Nome da restrição | Descrição da restrição | Nome do controlo | 
|---|---|---|
| pss-restricted-v2022-psp-volume-types | Utilização de tipos de volumes | Tipos de volume | 
| pss-restricted-v2022-privilege-escalation | Restringir o escalamento a privilégios de raiz | Escalamento de privilégios | 
| pss-restricted-v2022-running-as-non-root | O valor runAsNonRootdo contentor | Em execução como não root | 
| pss-restricted-v2022-running-as-non-root-user | O ID do utilizador do contentor | Execução como utilizador não root | 
| pss-restricted-v2022-seccomp | O perfil seccomp usado pelos contentores | Seccomp | 
| pss-restricted-v2022-capabilities | Capacidades do Linux | Capacidades | 
Antes de começar
- Instale e inicialize a CLI do Google Cloud, que fornece os comandos gcloudekubectlusados nestas instruções. Se usar a Cloud Shell, a Google Cloud CLI é pré-instalada.
- Instale o Policy Controller v1.11.1 ou superior no seu cluster com a biblioteca predefinida de modelos de restrições.
Audite o pacote de políticas restritas das normas de segurança de pods
O Policy Controller permite-lhe aplicar políticas ao seu cluster do Kubernetes. Para ajudar a testar as suas cargas de trabalho e a respetiva conformidade relativamente às práticas recomendadas da Google descritas na tabela anterior, pode implementar estas restrições no modo "auditoria" para revelar violações e, mais importante, dar-se a oportunidade de as corrigir antes de aplicar no seu cluster do Kubernetes.
Pode aplicar estas políticas com spec.enforcementAction definido como dryrun através do kubectl,
kpt,
ou
Config Sync.
kubectl
- (Opcional) Pré-visualize as restrições de políticas com o kubectl: - kubectl kustomize https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/pss-restricted-v2022 
- Aplique as restrições de políticas com o kubectl: - kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/pss-restricted-v2022 - O resultado é o seguinte: - k8spspallowprivilegeescalationcontainer.constraints.gatekeeper.sh/pss-restricted-v2022-privilege-escalation created k8spspallowedusers.constraints.gatekeeper.sh/pss-restricted-v2022-running-as-non-root created k8spspcapabilities.constraints.gatekeeper.sh/pss-restricted-v2022-capabilities created k8spspseccomp.constraints.gatekeeper.sh/pss-restricted-v2022-seccomp created k8spspvolumetypes.constraints.gatekeeper.sh/pss-restricted-v2022-psp-volume-types created 
- Confirme se as restrições de políticas foram instaladas e verifique se existem violações no cluster: - kubectl get -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/pss-restricted-v2022 - O resultado é semelhante ao seguinte: - NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspallowprivilegeescalationcontainer.constraints.gatekeeper.sh/pss-restricted-v2022-privilege-escalation dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspallowedusers.constraints.gatekeeper.sh/pss-restricted-v2022-running-as-non-root dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspcapabilities.constraints.gatekeeper.sh/pss-restricted-v2022-capabilities dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspseccomp.constraints.gatekeeper.sh/pss-restricted-v2022-seccomp dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspvolumetypes.constraints.gatekeeper.sh/pss-restricted-v2022-psp-volume-types dryrun 0 
kpt
- Instale e configure o kpt. O kpt é usado nestas instruções para personalizar e implementar recursos do Kubernetes. 
- Transfira o pacote de políticas restritas v2022 das normas de segurança de pods (PSS) do GitHub através do kpt: - kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/pss-restricted-v2022 
- Execute a função - set-enforcement-actionkpt para definir a ação de aplicação das políticas como- dryrun:- kpt fn eval pss-restricted-v2022 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 \ -- enforcementAction=dryrun 
- Inicialize o diretório de trabalho com o kpt, que cria um recurso para monitorizar as alterações: - cd pss-restricted-v2022 kpt live init 
- Aplique as restrições de políticas com o kpt: - kpt live apply 
- Confirme se as restrições de políticas foram instaladas e verifique se existem violações no cluster: - kpt live status --output table --poll-until current - O estado - CURRENTconfirma a instalação bem-sucedida das restrições.
Config Sync
- Instale e configure o kpt. O kpt é usado nestas instruções para personalizar e implementar recursos do Kubernetes.
Os operadores que usam o Config Sync para implementar políticas nos respetivos clusters podem usar as seguintes instruções:
- Altere para o diretório de sincronização do Config Sync: - cd SYNC_ROOT_DIR - Para criar ou acrescentar - .gitignorecom- resourcegroup.yaml:- echo resourcegroup.yaml >> .gitignore 
- Crie um diretório - policiesdedicado:- mkdir -p policies 
- Transfira o pacote de políticas restritas v2022 das normas de segurança de pods (PSS) do GitHub através do kpt: - kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/pss-restricted-v2022 policies/pss-restricted-v2022 
- Execute a função - set-enforcement-actionkpt para definir a ação de aplicação das políticas como- dryrun:- kpt fn eval policies/pss-restricted-v2022 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=dryrun 
- (Opcional) Pré-visualize as restrições de políticas a serem criadas: - kpt live init policies/pss-restricted-v2022 kpt live apply --dry-run policies/pss-restricted-v2022 
- Se o diretório de sincronização do Config Sync usar o Kustomize, adicione - policies/pss-baseline-v2022ao- kustomization.yamlraiz. Caso contrário, remova o ficheiro- policies/pss-baseline-v2022/kustomization.yaml:- rm SYNC_ROOT_DIR/policies/pss-baseline-v2022/kustomization.yaml 
- Envie as alterações para o repositório do Config Sync: - git add SYNC_ROOT_DIR/policies/pss-restricted-v2022 git commit -m 'Adding Pod Security Standards Restricted audit enforcement' git push 
- Valide o estado da instalação: - watch gcloud beta container fleet config-management status --project PROJECT_ID - O estado - SYNCEDconfirma a instalação das políticas.
Veja as violações de políticas
Depois de instaladas no modo de auditoria, as restrições de políticas no cluster podem ser vistas na IU através do Painel de controlo do Policy Controller.
Também pode usar kubectl para ver as violações no cluster através do seguinte comando:
kubectl get constraint -l policycontroller.gke.io/bundleName=pss-restricted-v2022 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]'
Se existirem violações, pode ver uma lista das mensagens de violação por restrição com o seguinte comando:
kubectl get constraint -l policycontroller.gke.io/bundleName=pss-restricted-v2022 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]'
Altere a ação de aplicação do pacote de políticas restritas das normas de segurança de pods
Depois de rever as violações de políticas no seu cluster, pode considerar alterar o modo de aplicação para que o controlador de admissão warn permita
ou até mesmo deny impeça que o recurso não conforme seja aplicado ao cluster.
kubectl
- Use o kubectl para definir a ação de aplicação das políticas como - warn:- kubectl get constraint -l policycontroller.gke.io/bundleName=pss-restricted-v2022 -o name | xargs -I {} kubectl patch {} --type='json' -p='[{"op":"replace","path":"/spec/enforcementAction","value":"warn"}]'
- Verifique se a ação de aplicação das restrições de políticas foi atualizada: - kubectl get constraint -l policycontroller.gke.io/bundleName=pss-restricted-v2022 
kpt
- Execute a função - set-enforcement-actionkpt para definir a ação de aplicação das políticas como- warn:- kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn 
- Aplique as restrições de políticas: - kpt live apply 
Config Sync
Os operadores que usam o Config Sync para implementar políticas nos respetivos clusters podem usar as seguintes instruções:
- Altere para o diretório de sincronização do Config Sync: - cd SYNC_ROOT_DIR 
- Execute a função - set-enforcement-actionkpt para definir a ação de aplicação das políticas como- warn:- kpt fn eval policies/pss-restricted-v2022 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn 
- Envie as alterações para o repositório do Config Sync: - git add SYNC_ROOT_DIR/pss-restricted-v2022 git commit -m 'Adding Pod Security Standards Restricted policy bundle warn enforcement' git push 
- Valide o estado da instalação: - nomos status - O cluster deve apresentar o estado - SYNCEDcom as políticas instaladas.
Teste a aplicação de políticas
Crie um recurso não compatível no cluster com o seguinte comando:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: wp-non-compliant
  labels:
    app: wordpress
spec:
  containers:
    - image: wordpress
      name: wordpress
      ports:
      - containerPort: 80
        hostPort: 80
        name: wordpress
EOF
O controlador de admissão deve produzir um aviso que liste as violações de políticas que este recurso viola, conforme mostrado no exemplo seguinte:
Warning: [pss-baseline-v2022-host-ports] The specified hostNetwork and hostPort are not allowed, pod: wp-non-compliant. Allowed values: {"max": 0, "min": 0}
pod/wp-non-compliant created
Remova o pacote de políticas restritas das normas de segurança de pods
Se necessário, o pacote de políticas restritas das normas de segurança de pods pode ser removido do cluster.
kubectl
- Use o kubectl para remover as políticas: - kubectl delete constraint -l policycontroller.gke.io/bundleName=pss-restricted-v2022 
kpt
- Remova as políticas: - kpt live destroy 
Config Sync
Os operadores que usam o Config Sync para implementar políticas nos respetivos clusters podem usar as seguintes instruções:
- Envie as alterações para o repositório do Config Sync: - git rm -r SYNC_ROOT_DIR/policies/pss-restricted-v2022 git commit -m 'Removing Pod Security Standards Restricted policies' git push 
- Valide o estado: - nomos status - O cluster deve apresentar o estado - SYNCEDcom os recursos removidos.