제약조건 템플릿 라이브러리

제약조건 템플릿을 사용하면 제약조건의 작동 방식을 정의할 수 있지만 제약조건의 세부사항 정의를 주제별 전문 지식을 가진 개인 또는 그룹에 위임할 수 있습니다. 우려를 분리하는 것 외에도 제약조건의 논리와 정의를 분리합니다.

다음 제약조건 템플릿은 Anthos Policy Controller에 포함되어 있습니다. 또한 Gatekeeper 저장소에서 제약조건 템플릿 라이브러리를 찾아볼 수 있습니다.

anthos-service-mesh

AllowedServicePortName

서비스 포트 이름에 지정된 목록의 프리픽스가 포함되어야 합니다.

이름 유형
prefixes 배열

DestinationRuleTLSEnabled

Istio DestinationRules에서 모든 호스트 및 호스트 하위 집합에 TLS 중지를 금지합니다.

DisallowedAuthzPrefix

Istio AuthorizationPolicy 규칙의 주 구성원 및 네임스페이스에 지정된 목록의 프리픽스가 없어야 합니다.

이름 유형
disallowedprefixes 배열

PolicyStrictOnly

Istio 인증 정책은 STRICT 상호 TLS와 피어를 지정해야 합니다.

SourceNotAllAuthz

Istio AuthorizationPolicy 규칙에 소스 주 구성원이 '*'가 아닌 '값으로 설정되어야 합니다.

etc

GCPStorageLocationConstraintV1

StorageBucket Config Connector 리소스의 허용 locations를 제한합니다. exemptions 목록의 버킷 이름은 제외됩니다.

이름 유형
exemptions 배열
위치 배열

K8sBlockProcessNamespaceSharing

shareProcessNamespacetrue로 설정하여 Pod 사양을 금지합니다. 따라서 Pod의 모든 컨테이너가 PID 네임스페이스를 공유하고 서로의 파일 시스템 및 메모리에 액세스할 수 있는 시나리오가 방지됩니다.

K8sDisallowedRoleBindingSubjects

매개변수로 전달된 모든 disallowedSubjects와 일치하는 RoleBindings 또는 ClusterRoleBindings를 금지합니다.

이름 유형
disallowedSubjects 배열

K8sEmptyDirHasSizeLimit

모든 emptyDir 볼륨은 sizeLimit를 지정해야 합니다. 선택적으로 최대 허용 크기 한도를 지정하기 위해 제약조건에 maxSizeLimit 매개변수를 제공할 수 있습니다.

이름 유형
maxSizeLimit 문자열

K8sLocalStorageRequireSafeToEvict

로컬 스토리지(emptyDir 또는 hostPath)를 사용하는 Pod에 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 주석이 있어야 합니다. 클러스터 자동 확장 처리는 이 주석이 없는 Pod를 삭제하지 않습니다.

K8sMemoryRequestEqualsLimit

Pod가 메모리 사용량이 요청된 한도를 초과하는 상태가 되지 않도록 모든 컨테이너의 요청된 메모리가 메모리 제한과 정확히 일치하게 하여 Pod 안정성을 승격합니다. Kubernetes는 메모리가 필요한 경우 이 상태의 Pod를 종료할 수 있습니다.

K8sNoExternalServices

워크로드를 외부 IP로 노출하는 게이트웨이, 인그레스, 서비스 리소스 생성을 금지합니다.

  • 게이트웨이: networking.istio.io 그룹의 모든 리소스가 금지됩니다.
  • 인그레스: extensions 또는 networking.k8s.io 그룹의 모든 리소스가 금지됩니다.
  • 서비스: 모든 LoadBalancer 유형 리소스에는 Internal 주석이 있어야 합니다. 모든 externalIPsinternalCIDRs 매개변수로 지정된 CIDR에 속해야 합니다.

이름 유형
internalCIDRs 배열

K8sRestrictLabels

리소스에 라벨이 포함되지 못하게 합니다. 예외는 그룹, 종류, 네임스페이스, 이름으로 지정할 수 있습니다.

이름 유형
예외 배열
restrictedLabels 배열

gatekeeper-general

K8sAllowedRepos

지정된 목록에서 저장소 문자열로 시작하는 컨테이너 이미지가 필요합니다.

이름 유형
repos 배열

K8sBlockNodePort

NodePort 유형이 포함된 모든 서비스를 금지합니다.

K8sContainerLimits

컨테이너에 메모리 및 CPU 제한을 설정하고 지정된 최대 용량 내에 있어야 합니다.

이름 유형
CPU 문자열
메모리 문자열

K8sContainerRatios

요청에 대한 컨테이너 리소스 한도의 최대 비율을 설정합니다.

이름 유형
비율 문자열

K8sHttpsOnly

인그레스 리소스는 HTTPS 전용이어야 합니다. TLS 구성을 설정해야 하며 kubernetes.io/ingress.allow-http 주석은 false입니다.

K8sImageDigests

다이제스트를 포함할 컨테이너 이미지가 있어야 합니다.

K8sRequiredLabels

모든 리소스에 제공된 정규 표현식과 일치하는 값이 지정된 라벨이 있어야 합니다.

이름 유형
라벨 배열
메시지 문자열

K8sRequiredProbes

Pod에 준비 상태 또는 활성 프로브가 있어야 합니다.

이름 유형
probeTypes 배열
probes 배열

K8sUniqueIngressHost

모든 인그레스 호스트는 고유해야 합니다.

K8sUniqueServiceSelector

서비스에 네임스페이스 내에서 고유한 선택기가 있어야 합니다.

cis-k8s

K8sNoEnvVarSecrets

컨테이너 정의에서 보안 비밀을 환경 변수로 사용하는 것을 금지합니다. 그 대신 마운트된 보안 정보 파일을 데이터 볼륨에 사용하세요.

K8sPodsRequireSecurityContext

모든 Pod 및 컨테이너에 Pod 또는 컨테이너 수준에서 정의된 SecurityContext가 있어야 합니다.

K8sProhibitRoleWildcardAccess

Role과 ClusterRole이 리소스 액세스를 와일드 카드('*') 값으로 설정하지 않도록 해야 합니다.

K8sRequireNamespaceNetworkPolicies

클러스터에 정의된 모든 네임스페이스에 NetworkPolicy가 있어야 합니다.

K8sRestrictNamespaces

restrictedNamespaces 매개변수에 나열된 네임스페이스를 사용하지 못하도록 제한합니다. 리소스는 labelSelector를 사용하여 이 제한을 우회할 수 있습니다.

이름 유형
restrictedNamespaces 배열

K8sRestrictRoleBindings

ClusterRoleBindings와 RoleBindings가 제약조건에서 지정된 Role 또는 ClusterRole을 참조하지 못하도록 제한합니다. 예외는 제약조건에서 allowedSubjects로 나열될 수 있습니다

이름 유형
allowedSubjects 배열
restrictedRole 객체

pod-security-policy

K8sPSPAllowPrivilegeEscalationContainer

루트 권한으로의 에스컬레이션 제한을 제어합니다.

K8sPSPAllowedUsers

컨테이너의 사용자 및 그룹 ID를 제어합니다.

이름 유형
fsGroup 객체
runAsGroup 객체
runAsUser 객체
supplementalGroups 객체

K8sPSPAppArmor

컨테이너에서 사용하는 AppArmor 프로필을 제어합니다.

이름 유형
allowedProfiles 배열

K8sPSPCapabilities

Linux 기능을 제어합니다.

이름 유형
allowedCapabilities 배열
requiredDropCapabilities 배열

K8sPSPFSGroup

Pod 볼륨을 소유한 FSGroup 할당을 제어합니다.

이름 유형
ranges 배열
규칙 문자열

K8sPSPFlexVolumes

Flexvolume 드라이버의 허용 목록을 제어합니다.

이름 유형
allowedFlexVolumes 배열

K8sPSPForbiddenSysctls

컨테이너에서 사용하는 sysctl 프로필을 제어합니다.

이름 유형
forbiddenSysctls 배열

K8sPSPHostFilesystem

호스트 파일 시스템 사용량을 제어합니다.

이름 유형
allowedHostPaths 배열

K8sPSPHostNamespace

호스트 네임스페이스의 사용량을 제어합니다.

K8sPSPHostNetworkingPorts

호스트 네트워킹 및 포트의 사용량을 제어합니다.

이름 유형
hostNetwork 부울
최대 정수
정수

K8sPSPPrivilegedContainer

권한이 있는 컨테이너의 실행을 제어합니다.

K8sPSPProcMount

컨테이너의 Allowed Proc Mount 유형을 제어합니다.

이름 유형
procMount 문자열

K8sPSPReadOnlyRootFilesystem

읽기 전용 루트 파일 시스템을 사용해야 합니다.

K8sPSPSELinuxV2

컨테이너의 SELinux 컨텍스트를 제어합니다.

이름 유형
allowedSELinuxOptions 배열

K8sPSPSeccomp

컨테이너에서 사용하는 seccomp 프로필을 제어합니다.

이름 유형
allowedProfiles 배열

K8sPSPVolumeTypes

볼륨 유형의 사용량을 제어합니다.

이름 유형
volumes 배열

pod-security-policy-deprecated

K8sPSPSELinux

컨테이너의 SELinux 컨텍스트를 제어합니다.

이름 유형
allowedSELinuxOptions 객체

다음 단계