Kubernetes políticas em Configuração de DevOps
Por padrão, o pacote de conteúdo de política Configuração de DevOps contém um conjunto de políticas para validar sua configuração Kubernetes.
O plug-in Sempre extrair imagens de controle de admissão está habilitado (container_always_pull_images_plugin_is_enabled)
Verifica se o plug-in do controlador de admissão "AlwaysPullImages" está habilitado para o servidor de API Kubernetes.
Resulta em um status fora de conformidade quando o plug-in SemprePullImages não é especificado com o argumento --enable-admission-plugins ao usar o comando kube-apisever.
O arquivo de autenticação básica não está definido (container_basic_auth_file_is not_set)
Verifica se o servidor de API Kubernetes não está usando o mecanismo de autenticação básica de usuário.
Resulta em um status fora de conformidade quando o argumento --basic-auth-file é especificado para um contêiner ao usar o comando kube-apisever.
O endereço de vinculação não está definido (container_bind_address_not_set_to_localhost)
Verifica se o endereço de vinculação do programador Kubernetes ou do gerenciador do controlador Kubernetes não é 127.0.0.1.
Resulta em um status fora de conformidade quando o argumento --bind-address é definido como 127.0.0.1 para um contêiner ao usar o comando kube-controller-manager ou kube-scheduler.
Os contêineres não são executados com UID baixo (container_uid_minimum_limit)
Verifica se o UID de cada contêiner em um pod Kubernetes é maior ou igual ao valor mínimo de UID especificado.
Resulta em um status fora de conformidade se o UID definido para um contêiner for menor que o valor mínimo de UID. Se o UID não estiver definido para um contêiner, o UID do pod associado será validado.
- Argumento de entrada
- min_uid
- O valor mínimo de UID necessário para os contêineres em um pod.
- Valor padrão:
10000 - Tipo: Número Inteiro
- Obrigatório: falso
Contêineres exigem capacidades de descarte (container_requires_drop_capabilities)
Verifica se as capacidades de descarte estão definidas para contêineres em um pod Kubernetes.
Resulta em um status fora de conformidade quando as capacidades de descarte de um contêiner não estão definidas.
Contêineres executados como um usuário não raiz (container_run_as_nonroot_user)
Verifica se os contêineres em um pod Kubernetes são executados somente como um usuário não raiz para limitar a exploração de erros de configuração de segurança e restringir as possibilidades de um invasor em caso de comprometimento.
Resulta em um status fora de conformidade quando a chave runAsNonRoot de um contêiner é definida como falsa ou o ID do usuário (UID) de um contêiner é zero.
Contêineres executados sem acesso privilegiado (container_is_not_privileged)
Verifica se os contêineres em um pod Kubernetes são executados sem acesso privilegiado.
Resulta em um status fora de conformidade quando o campo privilegiado de um contêiner é definido como verdadeiro.
Contêineres executados sem capacidade de administrador do sistema (container_is_without_sys_admin_capability)
Verifica se os contêineres em um pod Kubernetes são executados sem a capacidade SYS_ADMIN.
Resulta em um status fora de conformidade quando os privilégios SYS_ADMIN são atribuídos a um contêiner.
As solicitações de CPU estão dentro dos limites (container_cpu_request_within _limits)
Verifica se os contêineres em um pod Kubernetes estão solicitando os recursos da unidade central de processamento (CPU) dentro do limite de CPU especificado.
Resulta em um status fora de conformidade quando a chave Limits.cpu não está definida ou quando o valor da chave Requests.cpu excede o valor da chave Limits.cpu.
O soquete do daemon do Docker não foi exposto (docker_daemon_socket_not_exposed)
Verifica se o soquete do daemon do Docker não está exposto a contêineres.
Resulta em um status fora de conformidade quando a chave hostPath.path de um volume é definida como /var/run/docker.sock.
A política de extração de imagem é sempre (container_imagePullPolicy_is_always)
Verifica se o campo imagePullPolicy de cada contêiner em um pod Kubernetes está definido como Sempre.
Resulta em um status fora de conformidade se o campo imagePullPolicy não estiver definido ou o critério Sempre não for atendido.
O endereço de vinculação insegura não está definido (container_insecure_bind_address_is_not_set)
Verifica se o servidor da API do Kubernetes não está vinculado a um endereço inseguro que possa permitir que invasores se conectem ao servidor pela porta insegura e leiam dados confidenciais em trânsito.
Resulta em um status fora de conformidade quando o argumento insecure-bind-address é especificado ao usar o comando kube-apisever.
O HTTPS do Kubelet é verdadeiro (container_kubelet_https_is_true)
Verifica se as conexões entre o servidor de API Kubernetes e o kubelet usam o protocolo HTTPS para proteger a transferência de dados.
Resulta em um status fora de conformidade quando o argumento -kubelet-https é definido como falso ao usar o comando kube-apisever.
As solicitações de memória estão dentro dos limites (container_memory_request_within _limits)
Verifica se os contêineres em um pod Kubernetes estão consumindo recursos dentro do limite de memória especificado.
Resulta em um status fora de conformidade quando a chave Limits.Memory não está definida ou quando o valor da chave Requests.Memory excede o valor da chave Limits.Memory.
Nenhum curinga na regra de RBAC (rbac_no_wildcard_in_rule)
Verifica se os recursos Role e ClusterRole não estão usando caracteres curinga para se referir a objetos ou ações da regra de controle de acesso baseado em função (RBAC).
Retorna para um status fora de conformidade quando os caracteres curinga são usados em apiGroups, recursosou verbos para a regra RBAC.
Escalação de privilégio não permitida (container_privilege_escalation_not_allowed)
Verifica se os contêineres em um pod Kubernetes têm menos privilégios do que o processo primário.
Resulta em um status fora de conformidade quando a chave allowPrivilégeEscalation de um contêiner está definida como verdadeira ou não está definida.
Contêineres raiz admitidos (container_read_only_root_file_system)
Verifica se os contêineres em um pod Kubernetes têm o sistema de arquivos raiz definido como somente leitura.
Retorna para um status fora de conformidade quando a chave readOnlyRootFilesystem de um contêiner não está definida ou definida como falsa.
O perfil Seccomp está configurado (container_secomp_profile_is_configured )
Verifica se os contêineres em um pod do Kubernetes estão configurados com um perfil de modo de computação segura (seccomp) para restringir chamadas do sistema potencialmente perigosas (syscalls).
Resulta em um status fora de conformidade quando a chave seccompProfile.type de um contêiner não está definida ou definida com um valor diferente de Localhost ou RuntimeDefault.
O arquivo de chave privada da conta de serviço está especificado (container_service_account_private_key_file_is_specified)
Verifica se o argumento --service-account-private-key-file está especificado com o comando kube-controller-manager para um contêiner.
Resulta em um status fora de conformidade quando o argumento --service-account-private-key-file não é especificado para um contêiner ao usar o comando kube-controller-manager.
A porta segura não está definida como zero (container_secure_port_not_set_to_zero)
Verifica se o servidor de API Kubernetes não está usando a porta 0 para autenticação e autorização HTTPS.
Resulta em um status fora de conformidade quando o argumento --secure-port é definido como 0 para um contêiner ao usar o comando kube-apisever.
O arquivo de autenticação de token não está definido (token_auth_file_is_not_set)
Verifica se o servidor de API Kubernetes não está usando um arquivo de token estático para autenticação de usuário.
Resulta em um status fora de conformidade quando o argumento token-auth-file é especificado ao usar o comando kube-apisever.