Kubernetes

Kubernetes 구성 요소와 워크로드의 보안, 가용성과 운영 설정 관련 문서입니다.

문서 목록

문서 경로
AlwaysAdmit Admission Plugin 사용 k8s/always_admit_admission_control_plugin_set
AlwaysPullImages Admission Plugin 미설정 k8s/always_pull_images_admission_control_plugin_not_set
Anonymous Auth 비활성화 누락 k8s/anonymous_auth_is_not_set_to_false
Audit Log 경로 미설정 k8s/audit_log_path_not_set
Audit Policy 파일 미설정 k8s/audit_policy_file_not_defined
Authorization Mode가 AlwaysAllow로 설정됨 k8s/authorization_mode_set_to_always_allow
Node Authorizer 설정 점검 k8s/authorization_mode_node_not_set
RBAC 권한 제어 설정 점검 k8s/authorization_mode_rbac_not_set
Docker Daemon Socket 노출 k8s/docker_daemon_socket_is_exposed_to_containers
Encryption Provider Config 미설정 k8s/encryption_provider_config_is_not_defined
Encryption Provider 설정 점검 k8s/encryption_provider_not_properly_configured
HPA 대상 Deployment의 replicas 관리 점검 k8s/hpa_targeted_deployments_with_configured_replica_count
Host IPC 네임스페이스 공유 k8s/shared_host_ipc_namespace
Host 네트워크 네임스페이스 공유 k8s/shared_host_network_namespace
Ingress Controller를 통한 워크로드 노출 k8s/ingress_controller_exposes_workload
Kubelet Certificate Authority 미설정 k8s/kubelet_certificate_authority_not_set
Kubelet Client Certificate 또는 Key 미설정 k8s/kubelet_client_certificate_or_key_not_set
Kubelet 클라이언트 인증서 자동 갱신 비활성화 k8s/kubelet_client_periodic_certificate_switch_disabled
Kubelet HTTPS 비활성화 k8s/kubelet_https_set_to_false
Kubelet 커널 설정 보호 방식 점검 k8s/kubelet_protect_kernel_defaults_set_to_false
Kubelet 인증 없는 읽기 전용 포트 활성화 k8s/kubelet_read_only_port_is_not_set_to_zero
Kubelet 스트리밍 연결 시간 제한 점검 k8s/kubelet_streaming_connection_timeout_disabled
Kubelet iptables 보조 체인 설정 점검 k8s/kubelet_not_managing_ip_tables
Kubernetes AppArmor 프로필 점검 k8s/missing_app_armor_config
Kubernetes 컨테이너 CPU limit 설정 점검 k8s/cpu_limits_not_set
Kubernetes 컨테이너 CPU request 설정 점검 k8s/cpu_requests_not_set
Kubernetes cluster-admin 바인딩 권한 점검 k8s/cluster_admin_role_binding_with_super_user_permissions
Kubernetes CronJob 시작 마감 시간 점검 k8s/cronjob_deadline_not_configured
Kubernetes Dashboard 사용 점검 k8s/dashboard_is_enabled
Kubernetes Deployment 파드 분산 배치 점검 k8s/deployment_has_no_pod_anti_affinity
Kubernetes Deployment PodDisruptionBudget 구성 점검 k8s/deployment_without_pod_disruption_budget
Kubernetes 이벤트 요청 제한 점검 k8s/event_rate_limit_admission_control_plugin_not_set
Kubernetes HPA Object 메트릭 참조 구성 점검 k8s/hpa_targets_invalid_object
Kubernetes 이미지 admission 정책 점검 k8s/image_policy_webhook_admission_control_plugin_not_set
Kubernetes NamespaceLifecycle admission 설정 점검 k8s/namespace_lifecycle_admission_control_plugin_disabled
Kubernetes 네임스페이스 LimitRange 구성 점검 k8s/pod_or_container_without_limit_range
Kubernetes 네임스페이스 리소스 할당량 점검 k8s/pod_or_container_without_resource_quota
Kubernetes NetworkPolicy 대상 파드 선택 점검 k8s/network_policy_is_not_targeting_any_pod
Kubernetes Pod와 컨테이너 보안 컨텍스트 점검 k8s/pod_or_container_without_security_context
Kubernetes 제어 영역 프로파일링 설정 점검 k8s/profiling_not_set_to_false
Kubernetes Secret 환경 변수 전달 방식 점검 k8s/secrets_as_environment_variables
Kubernetes NodePort 서비스 접근 범위 점검 k8s/service_type_is_nodeport
Kubernetes Service 대상과 포트 연결 점검 k8s/service_does_not_target_pod
Kubernetes kubelet 이벤트 전송 속도 설정 점검 k8s/kubelet_event_qps_not_properly_set
kubelet 호스트 이름 재정의 설정 점검 k8s/kubelet_hostname_override_is_set
Kubernetes 감사 로그 회전 파일 수 설정 점검 k8s/audit_log_maxbackup_not_properly_set
Kubernetes 감사 로그 보관 기간 설정 점검 k8s/audit_log_maxage_not_properly_set
Kubernetes 감사 로그 회전 크기 설정 점검 k8s/audit_log_maxsize_not_properly_set
Kubernetes 감사 정책의 보안 기록 범위 점검 k8s/audit_policy_not_cover_key_security_concerns
Kubernetes Secret 관리 방식 점검 k8s/using_kubernetes_native_secret_management
Kubernetes 메타데이터 라벨 형식 점검 k8s/metadata_label_is_invalid
Kubernetes 컨테이너 이미지 다이제스트 고정 점검 k8s/image_without_digest
Kubernetes 컨테이너 이미지 버전 선택 점검 k8s/invalid_image
Kubernetes API 버전의 지원 상태 점검 k8s/object_is_using_a_deprecated_api_version
Kubernetes 컨테이너 Linux capability 축소 점검 k8s/no_drop_capabilities_for_containers
Kubernetes 컨테이너 이미지 가져오기 정책 점검 k8s/image_pull_policy_of_container_is_not_always
Kubernetes 컨테이너 루트 파일 시스템 쓰기 권한 점검 k8s/root_container_not_mounted_as_read_only
컨테이너 메모리 제한 설정 점검 k8s/memory_limits_not_defined
컨테이너 메모리 요청값 점검 k8s/memory_requests_not_defined
NET_RAW Capability 제거 점검 k8s/net_raw_capabilities_not_being_dropped
NetworkPolicy 집행 구성 점검 k8s/cni_plugin_does_not_support_network_policies
NodeRestriction Admission Plugin 미설정 k8s/node_restriction_admission_control_plugin_not_set
PSP의 Host PID 공유 허용 k8s/psp_allows_sharing_host_pid
PSP의 NET_RAW Drop 미강제 k8s/net_raw_capabilities_disabled_for_psp
레거시 PodSecurityPolicy의 capability 제한 점검 k8s/not_limited_capabilities_for_pod_security_policy
Pod 생성 권한 과다 허용 k8s/permissive_access_to_create_pods
레거시 PodSecurityPolicy 적용 점검이 필요한 kube-apiserver k8s/pod_security_policy_admission_control_plugin_not_set
RBAC 권한 상승 허용 Role k8s/rbac_roles_allow_privilege_escalation
RBAC의 Attach 권한 허용 k8s/rbac_roles_with_attach_permission
RBAC의 Exec 권한 허용 k8s/rbac_roles_with_exec_permission
RBAC의 Impersonate 권한 허용 k8s/rbac_roles_with_impersonate_permission
RBAC의 Port-Forward 권한 허용 k8s/rbac_roles_with_portforwarding_permissions
RBAC의 Secret 읽기 권한 허용 k8s/rbac_roles_with_read_secrets_permissions
Readiness Probe 미구성 k8s/readiness_probe_is_not_configured
API 서버 요청 시간 제한 점검 k8s/request_timeout_not_properly_set
컨트롤러의 API 서버 CA 신뢰 설정 점검 k8s/root_ca_file_not_defined
Root 컨테이너 허용 k8s/root_containers_admitted
컨테이너의 root 실행 방지 설정 점검 k8s/containers_running_as_root
Kubelet 서버 인증서 자동 갱신 설정 점검 k8s/rotate_kubelet_server_certificate_not_active
SYS_ADMIN capability가 추가된 Kubernetes 컨테이너 k8s/containers_with_sys_admin_capabilities
Seccomp 프로파일 설정 점검 k8s/seccomp_profile_is_not_configured
SecurityContextDeny 대체 정책 점검 k8s/security_context_deny_admission_control_plugin_not_set
ServiceAccount 토큰 검증 키 설정 점검 k8s/service_account_key_file_not_properly_set
ServiceAccount 토큰 서명 키 설정 점검 k8s/service_account_private_key_file_not_defined
Service Account Token 자동 마운트 비활성화 누락 k8s/service_account_token_automount_not_disabled
ServiceAccount Admission Plugin 비활성화 k8s/service_account_admission_control_plugin_disabled
ServiceAccount 공유 사용 k8s/shared_service_account
ServiceAccount 이름 미지정 k8s/service_account_name_undefined_or_empty
ServiceAccount의 Secret 접근 허용 k8s/service_account_allows_access_secrets
StatefulSet 볼륨 접근 모드 점검 k8s/incorrect_volume_claim_access_mode_read_write_once
StatefulSet 복제본 분산 배치 점검 k8s/statefulset_has_no_pod_anti_affinity
StatefulSet의 Headless Service 연결 점검 k8s/statefulset_without_service_name
StatefulSet의 PodDisruptionBudget 설정 점검 k8s/statefulset_without_pod_disruption_budget
StatefulSet 영구 스토리지 요구 사항 점검 k8s/statefulset_requests_storage
TLS 서버 인증서 설정 점검 k8s/tls_connection_certificate_not_setup
종료된 Pod 정리 임계값 점검 k8s/terminated_pod_garbage_collector_threshold_not_properly_set
Tiller(Helm v2)가 배포된 Kubernetes 워크로드 k8s/tiller_is_deployed
Unmasked proc mount를 허용하는 Kubernetes 구성 k8s/container_runs_unmasked
Use Service Account Credentials 비활성화 k8s/use_service_account_credentials_not_set_to_true
basic-auth-file이 설정된 kube-apiserver k8s/basic_auth_file_is_set
etcd Auto TLS 활성화 k8s/auto_tls_set_to_true
etcd 클라이언트 인증서 인증 설정 점검 k8s/etcd_client_certificate_authentication_set_to_false
API 서버의 etcd CA 파일 설정 점검 k8s/etcd_client_certificate_file_not_defined
etcd Peer Auto TLS 활성화 k8s/peer_auto_tls_set_to_true
etcd 피어 인증서 인증 설정 점검 k8s/etcd_peer_client_certificate_authentication_set_to_false
etcd TLS 인증서 파일 미설정 k8s/etcd_tls_certificate_files_not_properly_set
etcd 피어 TLS 인증서·키 설정 점검 k8s/etcd_peer_tls_certificate_files_not_properly_set
host IPC 공유를 허용하는 PodSecurityPolicy k8s/psp_allows_sharing_host_ipc
host PID namespace를 공유하는 Kubernetes 워크로드 k8s/shared_host_pid_namespace
host network namespace 공유를 허용하는 PodSecurityPolicy k8s/psp_containers_share_host_network_namespace
hostPath 접근 제한 점검이 필요한 PodSecurityPolicy k8s/psp_with_unrestricted_access_to_host_path
hostPort 직접 바인딩 사용 점검 k8s/workload_host_port_not_specified
레거시 kube-apiserver 비보안 바인딩 설정 점검 k8s/insecure_bind_address_set
레거시 kube-apiserver 비보안 포트 설정 점검 k8s/insecure_port_not_properly_set
kube-apiserver의 etcd TLS 인증서 설정 불완전 k8s/etcd_tls_certificate_not_properly_configured
kube-system 외 네임스페이스에서 hostPath를 사용하는 워크로드 k8s/non_kube_system_pod_with_host_mount
컨테이너 liveness probe 필요성 점검 k8s/liveness_probe_is_not_defined
privilege escalation을 허용하는 PodSecurityPolicy k8s/psp_allows_privilege_escalation
권한 상승이 허용된 Kubernetes 컨테이너 k8s/privilege_escalation_allowed
privileged 실행을 허용하는 PodSecurityPolicy k8s/psp_set_to_privileged
privileged로 실행되는 Kubernetes 컨테이너 k8s/container_is_privileged
secure-port가 0으로 설정된 kube-apiserver k8s/secure_port_set_to_zero
service-account-lookup이 false로 설정된 kube-apiserver k8s/service_account_lookup_set_to_false
정적 토큰 파일 인증 점검이 필요한 kube-apiserver k8s/token_auth_file_is_set
unsafe sysctl을 허용하는 Kubernetes 클러스터 구성 k8s/cluster_allows_unsafe_sysctls
와일드카드 권한이 포함된 Kubernetes RBAC 규칙 k8s/rbac_wildcard_in_rule
제어면 인증 기관의 신뢰 범위 점검 k8s/not_unique_certificate_authority
워크로드 Namespace 구성 점검 k8s/using_unrecommended_namespace
기본 ServiceAccount에 RoleBinding 연결 k8s/role_binding_to_default_service_account
컨테이너 실행 UID 설정 점검 k8s/containers_run_with_low_uid
Kubernetes 리소스의 관리 경계 점검 k8s/ensure_administrative_boundaries_between_resources
민감한 OS 디렉터리를 마운트하는 Kubernetes 워크로드 k8s/workload_mounting_with_sensitive_os_directory
삭제되지 않은 Tiller Service k8s/tiller_service_is_not_deleted
OS 디렉터리 마운트 보호 점검이 필요한 Kubernetes 컨테이너 k8s/volume_mount_with_os_directory_write_permissions
Kubernetes TLS 암호군 설정 점검 k8s/weak_tls_cipher_suites
외부 LoadBalancer Service 사용 k8s/service_with_external_load_balancer
잘못 구성된 Pod NetworkPolicy k8s/pod_misconfigured_network_policy
추가 Capability가 부여된 컨테이너 k8s/containers_with_added_capabilities
추가 Linux capability 허용 점검이 필요한 PodSecurityPolicy k8s/psp_with_added_capabilities
컨트롤 플레인 bind-address 접근 범위 점검 k8s/bind_address_not_properly_set
클라이언트 인증서 CA 설정 점검이 필요한 Kubernetes 구성 k8s/client_certificate_authentication_not_setup_properly
클러스터 내부 접근 제한이 필요한 Tiller 배포 k8s/tiller_deployment_is_accessible_from_within_the_cluster

관련 문서142

AlwaysAdmit Admission Plugin 사용

보안 검증을 제공하지 않는 AlwaysAdmit를 제거하고 실제 admission 정책을 확인하세요.

AlwaysPullImages Admission Plugin 미설정

공유 노드의 비공개 이미지 재사용을 통제하려면 이미지 가져오기 정책과 레지스트리 인증을 확인하세요.

Anonymous Auth 비활성화 누락

불필요한 익명 인증과 인가 권한을 제한해 API 및 노드 접근을 보호하세요.

Audit Log 경로 미설정

API 감사 이벤트를 기록하고 보존할 출력 경로를 확인하세요.

Audit Policy 파일 미설정

감사 정책과 출력 설정을 구성해 필요한 API 활동 기록을 남기세요.

Authorization Mode가 AlwaysAllow로 설정됨

AlwaysAllow 대신 구성요소에 맞는 인가 정책으로 요청 권한을 제한하세요.

Node Authorizer 설정 점검

Node authorizer와 올바른 노드 인증 주체로 kubelet 권한을 제한하세요.

RBAC 권한 제어 설정 점검

RBAC authorizer와 역할·바인딩을 함께 검토해 최소 권한을 적용하세요.

Docker Daemon Socket 노출

불필요한 Docker 소켓 마운트를 제거하고 호스트 런타임 접근을 격리하세요.

Encryption Provider Config 미설정

API 서버의 저장 암호화 설정과 키를 보호하고 기존 데이터에도 적용됐는지 확인하세요.

Encryption Provider 설정 점검

암호화 provider의 순서와 키 관리를 확인해 실제 저장 데이터를 보호하세요.

HPA 대상 Deployment의 replicas 관리 점검

자동 확장과 배포 도구가 같은 복제본 수를 반복해서 덮어쓰지 않도록 관리하세요.

Host IPC 네임스페이스 공유

불필요한 hostIPC 공유를 제거해 호스트 IPC 자원과의 격리를 유지하세요.

Host 네트워크 네임스페이스 공유

불필요한 hostNetwork 공유를 제거하고 서비스의 네트워크 노출을 관리하세요.

Ingress Controller를 통한 워크로드 노출

Ingress가 내부 워크로드를 외부로 노출하면 의도하지 않은 공개 경로가 생길 수 있습니다.

Kubelet Certificate Authority 미설정

API 서버가 kubelet의 HTTPS 서버 인증서를 검증하도록 신뢰할 CA를 지정하세요.

Kubelet Client Certificate 또는 Key 미설정

API 서버가 kubelet에 인증서로 인증할 때는 클라이언트 인증서와 개인 키가 함께 필요합니다.

Kubelet 클라이언트 인증서 자동 갱신 비활성화

kubelet 클라이언트 인증서가 만료되기 전에 갱신되도록 수명 주기를 관리하세요.

Kubelet HTTPS 비활성화

API 서버와 kubelet 사이의 관리 통신을 HTTPS로 보호하세요.

Kubelet 커널 설정 보호 방식 점검

노드 커널 설정을 사전에 관리하고 kubelet의 자동 조정 여부를 확인하세요.

Kubelet 인증 없는 읽기 전용 포트 활성화

kubelet의 인증 없는 읽기 전용 포트를 비활성화하고 필요한 모니터링을 보호된 경로로 옮기세요.

Kubelet 스트리밍 연결 시간 제한 점검

실제로 적용되는 스트리밍 유휴 시간 제한을 확인하고 불필요한 세션이 오래 남지 않게 관리하세요.

Kubelet iptables 보조 체인 설정 점검

노드 네트워크 구성에 필요한 kubelet의 iptables 보조 체인 관리 설정을 확인하세요.

Kubernetes AppArmor 프로필 점검

노드가 지원하는 AppArmor 프로필로 컨테이너의 시스템 접근을 제한하세요.

Kubernetes 컨테이너 CPU limit 설정 점검

CPU 상한의 필요성과 throttling 영향을 워크로드 요구에 맞춰 검토하세요.

Kubernetes 컨테이너 CPU request 설정 점검

실제 CPU 요구량에 맞는 스케줄링 기준을 설정하세요.

Kubernetes cluster-admin 바인딩 권한 점검

클러스터 전체 관리자 권한은 꼭 필요한 주체에만 부여하세요.

Kubernetes CronJob 시작 마감 시간 점검

늦은 실행을 허용할 범위를 작업의 시간 요구사항에 맞게 정하세요.

Kubernetes Dashboard 사용 점검

불필요한 Dashboard는 제거하고 필요한 관리 UI의 접근 경로와 권한을 제한하세요.

Kubernetes Deployment 파드 분산 배치 점검

복제본을 장애 영역에 맞게 분산하고 실제 배치를 확인하세요.

Kubernetes Deployment PodDisruptionBudget 구성 점검

유지보수 중 허용할 자발적 파드 중단 수를 서비스 요구에 맞게 정하세요.

Kubernetes 이벤트 요청 제한 점검

이벤트 폭주를 제한하고 정상 운영에 필요한 이벤트가 유지되는지 확인하세요.

Kubernetes HPA Object 메트릭 참조 구성 점검

측정 대상 객체와 실제로 확장할 워크로드를 구분해 구성하세요.

Kubernetes 이미지 admission 정책 점검

배포할 이미지에 필요한 정책을 실제로 적용하는지 확인하세요.

Kubernetes NamespaceLifecycle admission 설정 점검

네임스페이스 상태에 맞지 않는 리소스 생성을 막는 기본 제어를 유지하세요.

Kubernetes 네임스페이스 LimitRange 구성 점검

네임스페이스의 개별 리소스에 맞는 자원 기준을 정의하세요.

Kubernetes 네임스페이스 리소스 할당량 점검

네임스페이스의 총 할당량과 개별 컨테이너 제한을 구분해 관리하세요.

Kubernetes NetworkPolicy 대상 파드 선택 점검

정책이 의도한 네임스페이스와 파드를 실제로 선택하는지 확인하세요.

Kubernetes Pod와 컨테이너 보안 컨텍스트 점검

워크로드에 필요한 실행 사용자와 권한·파일 시스템 보호를 명시하세요.

Kubernetes 제어 영역 프로파일링 설정 점검

불필요한 성능 진단 기능을 끄고 필요한 진단 경로의 접근을 제한하세요.

Kubernetes Secret 환경 변수 전달 방식 점검

비밀정보의 출력·디버깅 노출을 줄이고 교체 시 소비자 갱신을 계획하세요.

Kubernetes NodePort 서비스 접근 범위 점검

필요한 서비스 진입 경로를 선택하고 실제 허용 네트워크를 제한하세요.

Kubernetes Service 대상과 포트 연결 점검

Service 선택자, 준비된 Pod와 애플리케이션의 실제 수신 포트를 함께 확인하세요.

Kubernetes kubelet 이벤트 전송 속도 설정 점검

이벤트 관측 필요와 API 서버 부하를 함께 고려해 전송 속도를 정하세요.

kubelet 호스트 이름 재정의 설정 점검

노드 식별자가 인증과 운영 구성에 일치하는지 확인하세요.

Kubernetes 감사 로그 회전 파일 수 설정 점검

로그량과 보관 요구에 맞춰 회전 파일 수를 정하세요.

Kubernetes 감사 로그 보관 기간 설정 점검

감사 기록의 실제 보관 기간을 조사와 운영 요구에 맞추세요.

Kubernetes 감사 로그 회전 크기 설정 점검

파일 크기와 회전 파일 수를 함께 조정해 필요한 기록을 보관하세요.

Kubernetes 감사 정책의 보안 기록 범위 점검

필요한 API 활동은 기록하고 비밀정보가 본문에 남지 않도록 수준을 정하세요.

Kubernetes Secret 관리 방식 점검

비밀정보의 접근 통제, 교체와 감사 요구에 맞는 관리 방식을 선택하세요.