限制条件模板库

限制条件模板允许您定义限制条件的工作原理,但可以将定义限制条件的细节委托给具有主题专业知识的个人或组。除了分离关注点之外,这还将限制条件的逻辑与其定义分离。

Anthos 政策控制器随附以下限制条件模板。您还可以在 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 资源的 locationsexemptions 列表中的存储分区名称例外。

姓名 类型
豁免项 数组
位置 数组

K8sBlockProcessNamespaceSharing

通过将 shareProcessNamespace 设置为 true 来禁止 Pod 规范。这可避免 Pod 中的所有容器共享一个 PID 命名空间和访问彼此文件系统和内存这样的场景。

K8sDisallowedRoleBindingSubjects

禁止将主题与 disallowedSubjects 匹配的 RoleBinding 或 ClusterRoleBinding 传递为参数。

名称 类型
disallowedSubjects 数组

K8sEmptyDirHasSizeLimit

要求任何 emptyDir 卷都指定 sizeLimit;您也可以视情况在限制条件中提供 maxSizeLimit 参数来指定许可的大小上限。

姓名 类型
maxSizeLimit 字符串

K8sLocalStorageRequireSafeToEvict

要求使用本地存储空间(emptyDirhostPath)的 Pod 必须具有 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 注释。集群自动扩缩器不会删除没有此注释的 Pod。

K8sMemoryRequestEqualsLimit

通过要求所有容器请求的内存与内存限制完全一致来提升 Pod 稳定性,让 Pod 绝不会处于内存用量超出所请求数量的状态。需要内存时,Kubernetes 可能会终结处于该状态的 Pod。

K8sNoExternalServices

禁止创建将工作负载公开给外部 IP 的 Gateway、Ingress 和 Service 资源。

  • Gateway:禁止使用 networking.istio.io 群组的所有资源。
  • Ingress:禁止使用 extensionsnetworking.k8s.io 群组的所有资源。
  • Service:所有 LoadBalancer 类型资源必须具有 Internal 注释;任何 externalIPs 都必须属于 internalCIDRs 参数指定的 CIDR。

名称 类型
internalCIDRs 数组

K8sRestrictLabels

禁止资源包含标签。异常可以通过组、种类、命名空间和名称指定。

姓名 类型
exceptions 数组
restrictedLabels 数组

gatekeeper-general

K8sAllowedRepos

要求容器映像以指定列表中的代码库字符串开头。

姓名 类型
repos 数组

K8sBlockNodePort

禁止类型为 NodePort 的所有 Service。

K8sContainerLimits

要求容器设置内存和 CPU 限制,且不超过指定的最大值。

姓名 类型
CPU 字符串
memory 字符串

K8sContainerRatios

设置容器资源限制与请求的最大比例。

姓名 类型
比例 字符串

K8sHttpsOnly

要求 Ingress 资源仅为 HTTPS;应设置 TLS 配置,且 kubernetes.io/ingress.allow-http 注释为 false。

K8sImageDigests

要求容器映像包含摘要。

K8sRequiredLabels

要求所有资源均包含指定的标签,且其值与提供的正则表达式匹配。

姓名 类型
标签 数组
消息 字符串

K8sRequiredProbes

要求 Pod 具有就绪和/或活跃探测。

姓名 类型
probeTypes 数组
探测 数组

K8sUniqueIngressHost

要求所有 Ingress 主机都具有唯一性。

K8sUniqueServiceSelector

要求服务在命名空间内具有唯一的选择器。

cis-k8s

K8sNoEnvVarSecrets

禁止 Secret 用作容器定义中的环境变量;相反,请在数据卷中使用装载的机密文件。

K8sPodsRequireSecurityContext

要求所有 Pod 和容器在 Pod 或容器级层定义 SecurityContext。

K8sProhibitRoleWildcardAccess

要求角色和 ClusterRoles 无法对通配符(“*”)值设置资源访问权限。

K8sRequireNamespaceNetworkPolicies

要求集群中定义的每个命名空间都具有一个 NetworkPolicy

K8sRestrictNamespaces

限制资源使用 restrictedNamespaces 参数下列出的命名空间。资源可以使用 labelSelector 绕过此限制。

姓名 类型
restrictedNamespaces 数组

K8sRestrictRoleBindings

限制 ClusterRoleBinding 和 RoleBinding 引用限制中指定的角色或 ClusterRole。异常可以在限制中作为 allowedSubject 列出。

姓名 类型
allowedSubjects 数组
restrictedRole 对象

pod-security-policy

K8sPSPAllowPrivilegeEscalationContainer

对限制升级至 root 权限这一操作进行控制。

K8sPSPAllowedUsers

控制容器的用户 ID 和组 ID。

名称 类型
fsGroup 对象
runAsGroup 对象
runAsUser 对象
supplementalGroups 对象

K8sPSPAppArmor

控制容器使用的 AppArmor 配置文件。

名称 类型
allowedProfiles 数组

K8sPSPCapabilities

控制 Linux 功能。

名称 类型
allowedCapabilities array
requiredDropCapabilities 数组

K8sPSPFSGroup

对分配拥有 Pod 卷的 FSGroup 这一操作进行控制。

姓名 类型
ranges 数组
规则 字符串

K8sPSPFlexVolumes

控制 Flexvolume 驱动程序的许可名单。

姓名 类型
allowedFlexVolumes 数组

K8sPSPForbiddenSysctls

控制容器使用的 sysctl 配置文件。

姓名 类型
forbiddenSysctls 数组

K8sPSPHostFilesystem

控制主机文件系统的使用情况。

名称 类型
allowedHostPaths 数组

K8sPSPHostNamespace

控制主机命名空间的使用情况。

K8sPSPHostNetworkingPorts

控制主机网络和端口的使用情况。

名称 类型
hostNetwork 布尔值
最大值 整数
分钟 整数

K8sPSPPrivilegedContainer

控制特权容器的运行情况。

K8sPSPProcMount

控制容器允许的 Proc 装载类型。

名称 类型
procMount 字符串

K8sPSPReadOnlyRootFilesystem

要求使用只读根文件系统。

K8sPSPSELinuxV2

控制容器的 SELinux 上下文。

名称 类型
allowedSELinuxOptions 数组

K8sPSPSeccomp

控制容器使用的 seccomp 配置文件。

名称 类型
allowedProfiles 数组

K8sPSPVolumeTypes

控制卷类型的使用情况。

名称 类型
volumes 数组

pod-security-policy-deprecated

K8sPSPSELinux

控制容器的 SELinux 上下文。

名称 类型
allowedSELinuxOptions 对象

后续步骤