O Policy Controller inclui uma biblioteca predefinida de modelos de restrições que podem ser usados com o pacote NIST SP 800-53 Rev. 5 que implementa controlos indicados na Publicação especial (SP) 800-53 Rev. 5 do Instituto Nacional de Padrões e Tecnologia (NIST). O pacote pode ajudar as organizações a proteger os respetivos sistemas e dados de várias ameaças através da implementação de políticas de segurança e privacidade prontas a usar.
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.
Restrições do pacote de políticas NIST SP 800-53 Rev. 5
Nome da restrição | Descrição da restrição | ID do controlo |
---|---|---|
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | AC-16 Security and Privacy Attributes |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | AC-2 Gestão de contas |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | Aplicação do acesso AC-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | Aplicação do fluxo de informações AC-4 |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que todos os namespaces definidos no cluster tenham uma NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | AC-6 Menor privilégio |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe a utilização da função `cluster-admin`. | |
nist-sp-800-53-r5-restrict-repos | Restringe as imagens de contentores a uma lista de repositórios permitidos. | |
nist-sp-800-53-r5-restrict-role-wildcards | Restringe a utilização de carateres universais em `Roles` e `ClusterRoles`. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | AU-10 Non-Repudiation |
nist-sp-800-53-r5-nodes-have-consistent-time | Garante uma hora consistente e correta nos nós, permitindo apenas o SO otimizado para contentores (COS) ou o Ubuntu como imagem do SO. | Indicações de tempo AU-8 |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que todos os namespaces definidos no cluster tenham uma NetworkPolicy. | CA-9 Internal System Connections |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | CM-14 Signed Components |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | Configuração de referência CM-2 |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-apparmor | Restringe os perfis do AppArmor permitidos para pods. | CM-3 Configuration Change Control |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | |
nist-sp-800-53-r5-capabilities | Restringe as capacidades adicionais permitidas para os agrupamentos. | |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | |
nist-sp-800-53-r5-host-namespaces | Restringe contentores com `hostPID` ou `hostIPC` definidos como `true`. | |
nist-sp-800-53-r5-host-network | Restringe a execução de contentores com a flag `hostNetwork` definida como `true`. | |
nist-sp-800-53-r5-privileged-containers | Restringe contentores com `securityContext.privileged` definido como `true`. | |
nist-sp-800-53-r5-proc-mount-type | Requer as máscaras `/proc` predefinidas para pods | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montáveis à lista de autorizações. | |
nist-sp-800-53-r5-seccomp | O perfil do Seccomp não pode ser explicitamente definido como "Unconfined". | |
nist-sp-800-53-r5-selinux | Restringe a configuração do SELinux para pods. | |
nist-sp-800-53-r5-sysctls | Restringe os Sysctls permitidos para pods. | |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | CM-4 Análise de impacto na segurança |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe a utilização da função `cluster-admin`. | |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | CM-5 Restrições de acesso para alterações |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe a utilização da função `cluster-admin`. | |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | CM-6 Configuration Settings |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montáveis à lista de autorizações. | |
nist-sp-800-53-r5-apparmor | Restringe os perfis do AppArmor permitidos para pods. | CM-7 Funcionalidade mínima |
nist-sp-800-53-r5-capabilities | Restringe as capacidades adicionais permitidas para os agrupamentos. | |
nist-sp-800-53-r5-host-namespaces | Restringe contentores com `hostPID` ou `hostIPC` definidos como `true`. | |
nist-sp-800-53-r5-host-network | Restringe a execução de contentores com a flag `hostNetwork` definida como `true`. | |
nist-sp-800-53-r5-privileged-containers | Restringe contentores com `securityContext.privileged` definido como `true`. | |
nist-sp-800-53-r5-proc-mount-type | Requer as máscaras `/proc` predefinidas para pods | |
nist-sp-800-53-r5-restrict-clusteradmin-rolebindings | Restringe a utilização da função `cluster-admin`. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montáveis à lista de autorizações. | |
nist-sp-800-53-r5-seccomp | O perfil do Seccomp não pode ser explicitamente definido como "Unconfined". | |
nist-sp-800-53-r5-selinux | Restringe a configuração do SELinux para pods. | |
nist-sp-800-53-r5-sysctls | Restringe os Sysctls permitidos para pods. | |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | CP-10 Recuperação e reconstituição do sistema de informações |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | CP-9 System Backup |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | IA-2 Identification and Authentication (Organizational Users) |
nist-sp-800-53-r5-block-creation-with-default-serviceaccount | Restrinja a criação de recursos através de uma conta de serviço predefinida. | IA-4 Gestão de identificadores |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | IA-5 Gestão do autenticador |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | |
nist-sp-800-53-r5-restrict-rbac-subjects | Restringe a utilização de nomes em objetos RBAC a valores permitidos. | MA-4 Nonlocal Maintenance |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | PL-1 Política e procedimentos |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | RA-5 Análise de vulnerabilidades |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | SA-10 Gestão da configuração do programador |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | SA-11 Trusted Path |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | Ciclo de vida do desenvolvimento do sistema SA-3 |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | SA-8 Princípios de engenharia de segurança e privacidade |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montáveis à lista de autorizações. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | SC-12 Cryptographic Key Establishment and Management |
nist-sp-800-53-r5-restrict-storageclass | Restringe `StorageClass` a uma lista de `StorageClass` que encriptam por predefinição. | SC-28 Proteção de informações em repouso |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que todos os namespaces definidos no cluster tenham uma NetworkPolicy. | SC-4 Informações nos recursos partilhados |
nist-sp-800-53-r5-cpu-and-memory-limits-required | Requer que os agrupamentos especifiquem limites de CPU e memória. | SC-6 Resource Availability |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | SC-7 Boundary Protection |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-require-namespace-network-policies | Requer que todos os namespaces definidos no cluster tenham uma NetworkPolicy. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-restrict-volume-types | Restringe os tipos de volumes montáveis à lista de autorizações. | |
nist-sp-800-53-r5-asm-peer-authn-strict-mtls | Garante que as PeerAuthentications não podem substituir o mTLS rigoroso. | SC-8 Confidencialidade e integridade da transmissão |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | SI-12 Gestão e retenção de informações |
nist-sp-800-53-r5-restrict-storageclass | Restringe `StorageClass` a uma lista de `StorageClass` que encriptam por predefinição. | |
nist-sp-800-53-r5-require-av-daemonset | Requer a presença de um conjunto de daemons antivírus. | SI-3 Proteção contra código malicioso |
nist-sp-800-53-r5-block-secrets-of-type-basic-auth | Restringe a utilização de segredos do tipo basic-auth. | SI-7 Software, firmware e integridade das informações |
nist-sp-800-53-r5-enforce-config-management | Requer que o Config Sync esteja em execução e a prevenção de desvio ativada com, pelo menos, um objeto `RootSync` no cluster. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | |
nist-sp-800-53-r5-require-managed-by-label | Requer que todas as apps tenham uma etiqueta `app.kubernetes.io/managed-by` válida. | |
nist-sp-800-53-r5-restrict-hostpath-volumes | Restringe a utilização de volumes HostPath. | |
nist-sp-800-53-r5-require-binauthz | Requer o webhook de admissão de validação da autorização binária. | SR-4 Provenance |
Antes de começar
Por exemplo,kubectl delete constraints -l policycontroller.gke.io/bundleName=nist-800-r5
- Instale e inicialize a CLI Google Cloud, que fornece os comandos
gcloud
ekubectl
usados nestas instruções. Se usar o Cloud Shell, a CLI do Google Cloud é pré-instalada. - Instale o Policy Controller no seu cluster com a biblioteca predefinida de modelos de restrições. Também tem de ativar o suporte para restrições referenciais, uma vez que este pacote contém restrições referenciais.
Configure o Policy Controller para restrições referenciais
Guarde o seguinte manifesto YAML num ficheiro como
policycontroller-config.yaml
. O manifesto configura o Policy Controller para monitorizar 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
Configure o cluster e a carga de trabalho
- A ativação e a configuração da sincronização de configuração
, incluindo o webhook de admissão de prevenção de desvio, são necessárias no
nist-sp-800-53-r5-enforce-config-management
. - É necessária uma solução antivírus. A predefinição é a presença de um elemento
daemonset
denominadoclamav
no elementoclamav
namespace
. No entanto, o nome e o espaço de nomes do elementodaemonset
podem ser personalizados para a sua implementação na restriçãonist-sp-800-53-r5-require-av-daemonset
. - As imagens de contentores estã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 têm de usar o SO otimizado para contentores ou o Ubuntu
para a respetiva imagem no
nist-sp-800-53-r5-nodes-have-consistent-time
. - A utilização de classes de armazenamento está limitada a uma lista de autorizações, que pode ser
personalizada para adicionar classes adicionais com encriptação predefinida no
nist-sp-800-53-r5-restrict-storageclass
. A ativação e a configuração da autorização binária são necessárias no
nist-sp-800-53-r5-require-binauthz
.
Audite o pacote de políticas NIST SP 800-53 Rev. 5
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 no que diz respeito às políticas NIST SP 800-53 descritas na tabela anterior, pode implementar estas restrições no modo "auditoria" para revelar violações e, mais importante, dar-lhe a oportunidade de as corrigir antes de as aplicar no seu cluster Kubernetes.
Pode aplicar estas políticas com spec.enforcementAction
definido como dryrun
através de
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/nist-sp-800-53-r5
Aplique as restrições de políticas com o kubectl:
kubectl apply -k https://github.com/GoogleCloudPlatform/gke-policy-library.git/anthos-bundles/nist-sp-800-53-r5
O resultado é o seguinte:
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
Confirme se as restrições de políticas foram instaladas e verifique se existem violações no cluster:
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
O resultado é semelhante ao seguinte:
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 implementar recursos do Kubernetes.
Transfira o pacote de políticas NIST SP 800-53 Rev. 5 do GitHub através do 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
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 monitorizar as alterações:
cd nist-sp-800-53-r5 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
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 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
.gitignore
comresourcegroup.yaml
:echo resourcegroup.yaml >> .gitignore
Crie um diretório
policies
dedicado:mkdir -p policies
Transfira o pacote de políticas NIST SP 800-53 Rev. 5 do GitHub através do 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
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) Pré-visualize as restrições de políticas 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 o Kustomize, adicione
policies/nist-sp-800-53-r5
aokustomization.yaml
raiz. Caso contrário, remova o ficheiropolicies/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
Valide o estado da instalação:
watch gcloud beta container fleet config-management status --project PROJECT_ID
O estado
SYNCED
confirma 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 violações no cluster através do 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 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=nist-sp-800-53-r5 -o json | jq -C '.items[]| select(.status.totalViolations>0)| [.metadata.name,.status.violations[]?]'
Altere a ação de aplicação do conjunto de políticas NIST SP 800-53 Rev. 5
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 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 aplicação das restrições de políticas foi atualizada:
kubectl get constraints -l policycontroller.gke.io/bundleName=nist-sp-800-53-r5
kpt
Execute a função
set-enforcement-action
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 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-action
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
Valide o estado da instalação:
nomos status
O cluster deve apresentar o estado
SYNCED
com 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: name: wp-non-compliant spec: containers: ‐ image: wordpress 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: [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
Remova o pacote de políticas 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 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/nist-sp-800-53-r5 git commit -m 'Removing NIST SP 800-53 Rev. 5 policies' git push
Valide o estado:
nomos status
O cluster deve apresentar o estado
SYNCED
com os recursos removidos.