O Policy Controller vem com uma biblioteca padrão de modelos de restrição que podem ser usados com o pacote NIST SP 800-53 Rev. 5 (em inglês), que implementa listados na Publicação especial do Instituto Nacional de Padrões e Tecnologia (NIST, na sigla em inglês) 800-53 Rev. 5 (em inglês). O pacote pode ajudar as organizações a proteger os sistemas e dados contra diversas ameaças implementando políticas de privacidade e segurança prontas para uso.
Restrições do pacote de políticas NIST SP 800-53 Rev. 5
Nome da restrição | Descrição da restrição | ID do controle |
---|---|---|
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Atributos de segurança e privacidade AC-16 |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | Gerenciamento de contas AC-2 |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | Aplicação de acesso AC-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Aplicação do fluxo de informações AC-4 |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que cada namespace definido no cluster tenha uma NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Privilégio mínimo AC-6 |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe o uso do papel "cluster-admin". | |
nist-sp-800-53-r5-restrict-repos | Restringe imagens de contêiner a uma lista de "repos" permitida. | |
nist-sp-800-53-r5-restrict-role-wildcards | Restringe o uso de caracteres curinga em "Papéis" e "ClusterRoles". | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Não reputação de AU-10 |
nist-sp-800-53-r5-nodes-have-consistent-time | Garante tempo consistente e correto nos nós permitindo apenas o Container-Optimized OS (COS) ou o Ubuntu como a imagem do SO. | Carimbos de hora AU-8 |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que cada namespace definido no cluster tenha uma NetworkPolicy. | Conexões internas do sistema CA-9 |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Componentes assinados pelo CM-14 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Configuração de valor de referência do CM-2 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-apparmor | Restringe os perfis do AppArmor permitidos para pods. | Controle de alterações de configuração do CM-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | |
nist-sp-800-53-r5-capabilities | Restringe recursos adicionais permitidos para pods. | |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | |
nist-sp-800-53-r5-host-namespaces | Restringe contêineres com "hostPID" ou "hostIPC" definido como "true". | |
nist-sp-800-53-r5-host-network | Restringe a execução de contêineres com a sinalização "hostNetwork" definida como "true". | |
nist-sp-800-53-r5-privileged-containers | Restringe contêineres com "securityContext.privileged" como "true". | |
nist-sp-800-53-r5-proc-mount-type | Requer as máscaras "default"/"pro" padrão para pods | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montados à lista de permissões. | |
nist-sp-800-53-r5-seccomp | O perfil Seccomp não pode ser definido explicitamente como "Unconfined". | |
nist-sp-800-53-r5-selinux | Restringe a configuração do SELinux para pods. | |
nist-sp-800-53-r5-sysctls | Restringe o Sysctls permitido para pods. | |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Análise do impacto de segurança no CM-4 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe o uso do papel "cluster-admin". | |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Restrições de acesso do CM-5 para alterações |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe o uso do papel "cluster-admin". | |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Definições da configuração do CM-6 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montados à lista de permissões. | |
nist-sp-800-53-r5-apparmor | Restringe os perfis do AppArmor permitidos para pods. | Funcionalidade mínima do CM-7 |
nist-sp-800-53-r5-capabilities | Restringe recursos adicionais permitidos para pods. | |
nist-sp-800-53-r5-host-namespaces | Restringe contêineres com "hostPID" ou "hostIPC" definido como "true". | |
nist-sp-800-53-r5-host-network | Restringe a execução de contêineres com a sinalização "hostNetwork" definida como "true". | |
nist-sp-800-53-r5-privileged-containers | Restringe contêineres com "securityContext.privileged" como "true". | |
nist-sp-800-53-r5-proc-mount-type | Requer as máscaras "default"/"pro" padrão para pods | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe o uso do papel "cluster-admin". | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montados à lista de permissões. | |
nist-sp-800-53-r5-seccomp | O perfil Seccomp não pode ser definido explicitamente como "Unconfined". | |
nist-sp-800-53-r5-selinux | Restringe a configuração do SELinux para pods. | |
nist-sp-800-53-r5-sysctls | Restringe o Sysctls permitido para pods. | |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Recuperação e reconstituição do sistema de informações CP-10 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Backup do sistema CP-9 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | IA-2 Identificação e autenticação (usuários organizacionais) |
nist-sp-800-53-r5-block-creation-with-default-serviceaccount | Restringir a criação de recursos usando uma conta de serviço padrão. | Gerenciamento de identificadores IA-4 |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Gerenciamento de autenticação IA-5 |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe o uso de nomes nos assuntos do RBAC a valores permitidos. | Manutenção não local MA-4 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Política e procedimentos de PL-1 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Verificação de vulnerabilidades RA-5 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | Gerenciamento de configuração do desenvolvedor do SA-10 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Caminho confiável do SA-11 |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Ciclo de vida do desenvolvimento de sistemas SA-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Princípios de engenharia de segurança e privacidade do SA-8 |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montados à lista de permissões. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Estabelecimento e gerenciamento de chaves criptográficas SC-12 |
nist-sp-800-53-r5-restrict-storageclass | Restringe "StorageClass" a uma lista de "StorageClass", que criptografa por padrão. | Proteção das informações em repouso SC-28 |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que cada namespace definido no cluster tenha uma NetworkPolicy. | Informações sobre recursos compartilhados SC-4 |
nist-sp-800-53-r5-cpu-and-memory-limits-required | Requer que os pods especifiquem limites de CPU e memória. | Disponibilidade de recursos do SC-6 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Proteção de limite SC-7 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que cada namespace definido no cluster tenha uma NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montados à lista de permissões. | |
nist-sp-800-53-r5-asm-peer-authn-strict-mtls | Garante que o PeerAuthentications não pode substituir o mTLS restrito. | Confidencialidade e integridade da transmissão do SC-8 |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | SI-12: gerenciamento e retenção de informações |
nist-sp-800-53-r5-restrict-storageclass | Restringe "StorageClass" a uma lista de "StorageClass", que criptografa por padrão. | |
nist-sp-800-53-r5-require-av-daemonset | Requer a presença de um daemonset antivírus. | Proteção de código malicioso SI-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe o uso de secrets do tipo de autenticação básica. | Software, firmware e integridade da informação SI-7 |
nist-sp-800-53-r5-enforce-config-management | Exige que o Config Sync esteja em execução e o Drift Prevention ativado com pelo menos um objeto "RootSync" no cluster. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todos os apps tenham um rótulo "app.kubernetes.io/managed-by" válido. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe o uso de volumes do HostPath. | |
nist-sp-800-53-r5-require-binauthz | Requer a autorização binária que valida o webhook de admissão. | Procedência SR-4 |
Antes de começar
- Instale e inicialize a Google Cloud CLI,
que fornece os
comandos
gcloud
ekubectl
usados nestas instruções. Se você usa o Cloud Shell, a Google Cloud CLI já vem pré-instalada. - Instale o Policy Controller no cluster com a biblioteca padrão de modelos de restrição. Você também precisa ativar a compatibilidade com restrições referenciais, já que este pacote contém restrições referenciais.
Configurar o Policy Controller com restrições referenciais
Salve o seguinte manifesto YAML em um arquivo como
policycontroller-config.yaml
. O manifesto configura o Policy Controller para observar tipos específicos de objetos.apiVersion: config.gatekeeper.sh/v1alpha1 kind: Config metadata: name: config namespace: "gatekeeper-system" spec: sync: syncOnly: - group: "apps" version: "v1" kind: "DaemonSet" - group: "networking.k8s.io" version: "v1" kind: "NetworkPolicy" - group: "configsync.gke.io" version: "v1beta1" kind: "RootSync" - group: "storage.k8s.io" version: "v1" kind: "StorageClass" - group: "admissionregistration.k8s.io" version: "v1" kind: "ValidatingWebhookConfiguration"
Aplique o manifesto
policycontroller-config.yaml
:kubectl apply -f policycontroller-config.yaml
Configurar o cluster e a carga de trabalho
- A ativação e a configuração do Config Sync
, incluindo o webhook de admissão da Prevenção contra
violação, são necessárias em
nist-sp-800-53-r5-enforce-config-management
. - Uma solução antivírus é necessária. O padrão é a presença de um
daemonset
chamadoclamav
noclamav
namespace
, mas o nome e o namespace dodaemonset
podem ser personalizados para sua implementação na restriçãonist-sp-800-53-r5-require-av-daemonset
. - As imagens de contêiner são limitadas a uma lista de repositórios permitidos, que pode ser
personalizada se necessário em
nist-sp-800-53-r5-restrict-repos
. - Os nós precisam usar o Container-Optimized OS ou Ubuntu
na imagem no
nist-sp-800-53-r5-nodes-have-consistent-time
. - O uso de classes de armazenamento é limitado a uma lista permitida, que pode ser
personalizada para adicionar outras classes com criptografia padrão em
nist-sp-800-53-r5-restrict-storageclass
. A ativação e a configuração da autorização binária são necessárias em
nist-sp-800-53-r5-require-binauthz
.
Pacote de políticas de auditoria NIST SP 800-53 Rev. 5
O Policy Controller permite aplicar políticas ao cluster do Kubernetes. Para ajudar a testar suas cargas de trabalho e a conformidade delas com relação às políticas de NIST SP 800-53 descritas na tabela anterior, implante essas restrições no modo de "auditoria" para revelar violações e, mais importante, se permitir corrigir antes de aplicar no cluster do Kubernetes.
É possível aplicar essas políticas com spec.enforcementAction
definido como dryrun
usando
kubectl,
kpt
ou
Config Sync
.
kubectl
(Opcional) Visualize as restrições de política com o kubectl:
kubectl kustomize https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Aplique as restrições da política com o kubectl:
kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
A saída é esta:
asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-53-r5-asm-peer-authn-strict-mtls created k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-repos created k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-creation-with-default-serviceaccount created k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-secrets-of-type-basic-auth created k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-53-r5-enforce-config-management created k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-53-r5-apparmor created k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-53-r5-capabilities created k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-53-r5-sysctls created k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-hostpath-volumes created k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-namespaces created k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-network created k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-53-r5-privileged-containers created k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-53-r5-proc-mount-type created k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-53-r5-selinux created k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-53-r5-seccomp created k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-volume-types created k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-role-wildcards created k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-binauthz created k8srequirecosnodeimage.constraints.gatekeeper.sh/nist-sp-800-53-r5-nodes-have-consistent-time created k8srequiredaemonsets.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-av-daemonset created k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-namespace-network-policies created k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-managed-by-label created k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-53-r5-cpu-and-memory-limits-required created k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-rbac-subjects created k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-clusteradmin-rolebindings created k8sstorageclass.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-storageclass created
Verifique se as restrições da política foram instaladas e se existem violações no cluster:
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
O resultado será assim:
NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspapparmor.constraints.gatekeeper.sh/nist-sp-800-53-r5-apparmor dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirebinauthz.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-binauthz dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrbacsubjects.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-rbac-subjects dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspforbiddensysctls.constraints.gatekeeper.sh/nist-sp-800-53-r5-sysctls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspvolumetypes.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-volume-types dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnetworkingports.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-network dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostnamespace.constraints.gatekeeper.sh/nist-sp-800-53-r5-host-namespaces dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredaemonsets.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-av-daemonset dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sprohibitrolewildcardaccess.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-role-wildcards dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockcreationwithdefaultserviceaccount.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-creation-with-default-serviceaccount dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spsphostfilesystem.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-hostpath-volumes dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspseccomp.constraints.gatekeeper.sh/nist-sp-800-53-r5-seccomp dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS asmpeerauthnstrictmtls.constraints.gatekeeper.sh/nist-sp-800-53-r5-asm-peer-authn-strict-mtls dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredresources.constraints.gatekeeper.sh/nist-sp-800-53-r5-cpu-and-memory-limits-required dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprocmount.constraints.gatekeeper.sh/nist-sp-800-53-r5-proc-mount-type dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sblockobjectsoftype.constraints.gatekeeper.sh/nist-sp-800-53-r5-block-secrets-of-type-basic-auth dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirenamespacenetworkpolicies.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-namespace-network-policies dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspcapabilities.constraints.gatekeeper.sh/nist-sp-800-53-r5-capabilities dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sstorageclass.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-storageclass dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequiredlabels.constraints.gatekeeper.sh/nist-sp-800-53-r5-require-managed-by-label dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspprivilegedcontainer.constraints.gatekeeper.sh/nist-sp-800-53-r5-privileged-containers dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8sallowedrepos.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-repos dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8spspselinuxv2.constraints.gatekeeper.sh/nist-sp-800-53-r5-selinux dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8senforceconfigmanagement.constraints.gatekeeper.sh/nist-sp-800-53-r5-enforce-config-management dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srestrictrolebindings.constraints.gatekeeper.sh/nist-sp-800-53-r5-restrict-clusteradmin-rolebindings dryrun 0 NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS k8srequirecosnodeimage.constraints.gatekeeper.sh/nist-sp-800-53-r5-nodes-have-consistent-time dryrun 0
kpt
Instale e configure o kpt.
O kpt é usado nestas instruções para personalizar e implantar recursos do Kubernetes.
Faça o download do pacote de políticas do NIST SP 800-53 Rev. 5 no GitHub usando o kpt:
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
Execute a função
set-enforcement-action
do kpt para definir a ação de aplicação das políticas comodryrun
:kpt fn eval nist-sp-800-53-r5 -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 acompanhar as alterações:
cd nist-sp-800-53-r5 kpt live init
Aplique as restrições da política ao kpt:
kpt live apply
Verifique se as restrições da política foram instaladas e se existem violações no cluster:
kpt live status --output table --poll-until current
O status
CURRENT
confirma a instalação bem-sucedida das restrições.
Config Sync
Instale e configure o kpt.
O kpt é usado nestas instruções para personalizar e implantar recursos do Kubernetes.
Os operadores que usam o Config Sync para implantar políticas nos 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 anexar
.gitignore
comresourcegroup.yaml
:echo resourcegroup.yaml >> .gitignore
Crie um diretório
policies
dedicado:mkdir -p policies
Faça o download do pacote de políticas do NIST SP 800-53 Rev. 5 no GitHub usando o kpt:
kpt pkg get https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5 policies/nist-sp-800-53-r5
Execute a função
set-enforcement-action
do kpt para definir a ação de aplicação das políticas comodryrun
:kpt fn eval policies/nist-sp-800-53-r5 -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=dryrun
(Opcional) Visualize as restrições de política a serem criadas:
kpt live init policies/nist-sp-800-53-r5 kpt live apply --dry-run policies/nist-sp-800-53-r5
Se o diretório de sincronização do Config Sync usar Kustomize, adicione
policies/nist-sp-800-53-r5
à raizkustomization.yaml
. Caso contrário, remova o arquivopolicies/nist-sp-800-53-r5/kustomization.yaml
:rm SYNC_ROOT_DIR/policies/nist-sp-800-53-r5/kustomization.yaml
Envie as alterações para o repositório do Config Sync:
git add SYNC_ROOT_DIR/policies/nist-sp-800-53-r5 git commit -m 'Adding NIST SP 800-53 Rev. 5 policy audit enforcement' git push
Verifique o status da instalação:
watch gcloud beta container fleet config-management status --project PROJECT_ID
O status
SYNCED
confirma a instalação das políticas.
Visualizar violações de políticas
Depois que as restrições de política são instaladas no modo de auditoria, as violações no cluster podem ser visualizadas na interface usando o Painel do Controlador de políticas.
Também é possível usar
kubectl
para visualizar violações no cluster usando o seguinte comando:kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -cC '.items[]| [.metadata.name,.status.totalViolations]'
Se houver violações, uma lista das mensagens de violação por restrição poderá ser visualizada com:
kubectl get constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]'
Alterar ação de aplicação do pacote de políticas do NIST SP 800-53 Rev. 5
Depois de analisar as violações de políticas no cluster, considere
alterar o modo de aplicação para que o controlador de admissão warn
ou deny
bloqueie a aplicação de recursos sem compliance no cluster.
kubectl
Use o kubectl para definir a ação de cumprimento das políticas como
warn
:kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5 -o name | xargs -I {} kubectl patch {} --type='json' -p='[{"op":"replace","path":"/spec/enforcementAction","value":"warn"}]'
Verifique se a ação de cumprimento das restrições da política foi atualizada:
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
kpt
Execute a função
set-enforcement-action
do kpt para definir a ação de aplicação das políticas comowarn
:kpt fn eval -i gcr.io/kpt-fn/set-enforcement-action:v0.1 -- enforcementAction=warn
Aplique as restrições da política:
kpt live apply
Config Sync
Os operadores que usam o Config Sync para implantar políticas nos 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-action
do kpt para definir a ação de aplicação das políticas comowarn
:kpt fn eval policies/nist-sp-800-53-r5 -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/policies/nist-sp-800-53-r5 git commit -m 'Adding NIST SP 800-53 Rev. 5 policy warn enforcement' git push
Verifique o status da instalação:
gcloud alpha anthos config sync repo list --project PROJECT_ID
Seu repo que aparece na coluna
SYNCED
confirma a instalação das políticas.
Aplicação da política de testes
Crie um recurso não compatível no cluster usando o seguinte comando:
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: wp-non-compliant spec: containers: ‐ image: wordpress name: wordpress EOF
O controlador de admissão produzirá um alerta listando as violações da política que esse recurso viola, conforme mostrado no exemplo a seguir:
Warning: [nist-sp-800-53-r5-cpu-and-memory-limits-required] container <wordpress> does not have <{"cpu", "memory"}> limits defined Warning: [nist-sp-800-53-r5-restrict-repos] container <wordpress> has an invalid image repo <wordpress>, allowed repos are ["gcr.io/gke-release/", "gcr.io/anthos-baremetal-release/", "gcr.io/config-management-release/", "gcr.io/kubebuilder/", "gcr.io/gkeconnect/", "gke.gcr.io/"] pod/wp-non-compliant created
Remoção do pacote de políticas do NIST SP 800-53 Rev. 5
Se necessário, o pacote de políticas NIST SP 800-53 Rev. 5 pode ser removido do cluster.
kubectl
Use o kubectl para remover as políticas:
kubectl delete constraint -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
kpt
Remova as políticas:
kpt live destroy
Config Sync
Os operadores que usam o Config Sync para implantar políticas nos 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/nist-sp-800-53-r5 git commit -m 'Removing NIST SP 800-53 Rev. 5 policies' git push
Verifique o status:
gcloud alpha anthos config sync repo list --project PROJECT_ID
Seu repo que aparece na coluna
SYNCED
confirma a remoção das políticas.