云服务器内容精选

  • 策略定义库概述 UCS为您提供了预置的策略定义库,通过这个库,您可以创建具体的策略实例,进而将策略实例定义细节的任务委托给具备专业知识的个人或团队。这种做法不仅实现了关注点的隔离,还将策略实例的逻辑与定义进行了分离。 为了帮助您更好地理解策略定义的工作原理,每个预置策略定义都包含以下三个部分:一个示例策略实例,用于展示如何使用该策略定义;一个违反策略实例的资源定义,用于说明不符合该策略要求的资源样例;一个符合策略实例的资源定义,用于展示满足策略要求的资源样例。这些内容将帮助您更清晰地了解各种策略定义的应用场景及其执行标准。 所有策略实例都包含一个“match”部分,这部分定义了策略实例应用的目标对象。通过“match”部分,您可以精准指定策略实例适用的资源类型、命名空间或其他特定条件,从而确保策略实例仅对满足这些条件的对象起作用。 表1为安全类策略定义,共16个,它们专注于确保集群和资源的安全性;表2为合规类策略定义,总共17个,它们针对不同方面的合规要求。 表1 安全类策略定义 策略定义名称 类型 推荐级别 生效对象 参数 k8spspvolumetypes 安全 L3 Pod volumes:数组 k8spspallowedusers 安全 L3 Pod exemptImages:字符串数组 runAsUser rule:字符串 ranges min:整型 max:整型 runAsGroup rule:字符串 ranges min:整型 max:整型 supplementalGroups rule:字符串 ranges min:整型 max:整型 fsGroup rule:字符串 ranges min:整型 max:整型 k8spspselinuxv2 安全 L3 Pod allowedSELinuxOptions:对象数组,包含level、role、type、user四个字符串对象 exemptImages:字符串数组 k8spspseccomp 安全 L3 Pod allowedLocalhostFiles:数组 allowedProfiles:数组 exemptImages:字符串数组 k8spspreadonlyrootfilesystem 安全 L3 Pod exemptImages:字符串数组 k8spspprocmount 安全 L3 Pod exemptImages:字符串数组 procMount:字符串 k8spspprivilegedcontainer 安全 L3 Pod exemptImages:字符串数组 k8spsphostnetworkingports 安全 L3 Pod exemptImages:字符串数组 hostNetwork max:整型 min:整型 k8spsphostnamespace 安全 L3 Pod 无 k8spsphostfilesystem 安全 L3 Pod allowedHostPaths pathPrefix:字符串 k8spspfsgroup 安全 L3 Pod rule:字符串,支持MayRunAs、MustRunAs和RunAsAny ranges max:整型 min:整型 k8spspforbiddensysctls 安全 L3 Pod allowedSysctls:数组 forbiddenSysctls:数组 k8spspflexvolumes 安全 L3 Pod allowedFlexVolumes:数组 k8spspcapabilities 安全 L3 Pod allowedCapabilities:数组 exemptImages:字符串数组 requiredDropCapabilities:数组 k8spspapparmor 安全 L3 Pod allowedProfiles:数组 exemptImages:字符串数组 k8spspallowprivilegeescalationcontainer 安全 L3 Pod exemptImages:字符串数组 表2 合规类策略定义 策略定义名称 类型 推荐级别 生效对象 参数 k8srequiredprobes 合规 L1 Pod probes:数组 probeTypes:数组 k8srequiredlabels 合规 L1 Deployment labels key / allowedRegex:键值对数组 message:字符串 k8srequiredannotations 合规 L1 Pod annotations key / allowedRegex:键值对数组 message:字符串 k8sreplicalimits 合规 L1 Deployment、ReplicaSet、CronJob ranges min_replicas:整型 max_replicas:整型 noupdateserviceaccount 合规 L1 Pod allowedGroups:数组 allowedUsers:数组 k8simagedigests 合规 L1 Pod exemptImages:字符串数组 k8sexternalips 合规 L1 Service allowedIPs:字符串数组 k8sdisallowedtags 合规 L1 Pod tags:字符串数组 exemptImages:字符串数组 k8srequiredresources 合规 L1 Pod exemptImages:字符串数组 limits cpu memory requests cpu memory k8scontainerratios 合规 L1 Pod ratio:字符串 cpuRatio:字符串 exemptImages:字符串数组 k8scontainerrequests 合规 L1 Pod cpu:字符串 memory:字符串 exemptImages:字符串数组 k8scontainerlimits 合规 L1 Pod cpu:字符串 memory:字符串 exemptImages:字符串数组 k8sblockwildcardingress 合规 L1 Ingress 无 k8sblocknodeport 合规 L1 Service 无 k8sblockloadbalancer 合规 L1 Pod 无 k8spspautomountserviceaccounttokenpod 合规 L1 Pod 无 k8sallowedrepos 合规 L1 Pod repos:字符串数组 父主题: 使用策略定义库
  • 基本信息 策略类型:安全 推荐级别:L3 生效资源类型:Pod 参数: exemptImages: 字符串数组 runAsUser: rule: 字符串 ranges: - min: 整型 max: 整型 runAsGroup: rule: 字符串 ranges: - min: 整型 max: 整型 supplementalGroups: rule: 字符串 ranges: - min: 整型 max: 整型 fsGroup: rule: 字符串 ranges: - min: 整型 max: 整型
  • 符合策略实例的资源定义 示例中runAsUser等参数均在范围内,符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-users-allowed labels: app: nginx-users spec: securityContext: supplementalGroups: - 199 fsGroup: 199 containers: - name: nginx image: nginx securityContext: runAsUser: 199 runAsGroup: 199
  • 不符合策略实例的资源定义 示例中runAsUser等参数不在范围内,不符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-users-disallowed labels: app: nginx-users spec: securityContext: supplementalGroups: - 250 fsGroup: 250 containers: - name: nginx image: nginx securityContext: runAsUser: 250 runAsGroup: 250
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中定义了对runAsUser、runAsGroup、supplementalGroups和fsGroup等字段的约束。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sPSPAllowedUsers metadata: name: psp-pods-allowed-user-ranges spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: runAsUser: rule: MustRunAs # MustRunAsNonRoot # RunAsAny ranges: - min: 100 max: 200 runAsGroup: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200 supplementalGroups: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200 fsGroup: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200
  • 符合策略实例的资源定义 externalIPs中的IP为允许列表中的IP,符合策略实例。 apiVersion: v1 kind: Service metadata: name: allowed-external-ip spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 8080 externalIPs: - 203.0.113.0
  • 不符合策略实例的资源定义 externalIPs中的IP不为允许列表中的IP,不符合策略实例。 apiVersion: v1 kind: Service metadata: name: disallowed-external-ip spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 8080 externalIPs: - 1.1.1.1
  • 策略实例示例 服务的externalIP仅允许allowedIPs中定义的IP。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sExternalIPs metadata: name: external-ips spec: match: kinds: - apiGroups: [""] kinds: ["Service"] parameters: allowedIPs: - "203.0.113.0"