2.2. 策略概述


使用 Red Hat Advanced Cluster Management for Kubernetes 安全策略框架创建和管理策略。Kubernetes 自定义资源定义实例用于创建策略。

每个 Red Hat Advanced Cluster Management 策略可以至少有一个或多个模板。如需有关策略元素的更多详情,请参阅此页面的 Policy YAML 表部分。

策略需要一个 PlacementRulePlacement,用于定义策略文档应用到的集群,以及将 Red Hat Advanced Cluster Management for Kubernetes 策略绑定到放置规则的 PlacementBinding。有关如何定义 PlacementRule 的更多信息,请参阅应用程序生命周期文档中的放置规则。有关如何定义 放置 的更多信息,请参阅集群生命周期文档中的 放置概述

重要:

  • 为了将策略传播到受管集群,您需要创建一个 PlacementBinding 将您的策略与 PlacementRulePlacement 进行绑定。

    最佳实践 :在使用 Placement 资源时,使用命令行界面(CLI) 来更新策略。

  • 除了受管集群命名空间外,您可以在 hub 集群上的任意命名空间中创建策略。每个受管集群在 hub 集群上都有一个命名空间,它与受管集群的名称匹配。如果在受管集群命名空间中创建了一个策略,它将被 Red Hat Advanced Cluster Management for Kubernetes 删除。因此,使用一个其他命名空间,如 policy
  • 每个客户端和供应商负责确保其受管云环境满足适用于 Kubernetes 集群上托管的工作负载的内部软件工程、安全工程、弹性、安全性以及合规性企业安全标准。使用监管和安全功能来提高可见性并对配置进行修复,以满足标准。

在以下部分了解更多有关策略组件的详细信息:

2.2.1. 策略 YAML 结构

创建策略时,必须包含所需的参数字段和值。根据您的策略控制器,您可能需要包含其他可选字段和值。查看解释的参数字段的以下 YAML 结构:

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name:
  annotations:
    policy.open-cluster-management.io/standards:
    policy.open-cluster-management.io/categories:
    policy.open-cluster-management.io/controls:
spec:
  dependencies:
  - apiVersion: policy.open-cluster-management.io/v1
    compliance:
    kind: Policy
    name:
    namespace:
  policy-templates:
    - objectDefinition:
        apiVersion:
        kind:
        metadata:
          name:
        spec:
  remediationAction:
  disabled:
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name:
placementRef:
  name:
  kind:
  apiGroup:
subjects:
- name:
  kind:
  apiGroup:
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
  name:
spec:
  clusterConditions:
  - type:
  clusterLabels:
    matchLabels:
      cloud:

2.2.2. 策略 YAML 表

表 2.1. 参数表
字段可选或必需的描述

apiVersion

必填

将值设置为 policy.open-cluster-management.io/v1

kind

必填

将值设为 Policy 以表示策略类型。

metadata.name

必填

用于标识策略资源的名称。

metadata.annotations

选填

用于指定一组描述策略试图验证的标准集合的安全详情。这里介绍的所有注解都以逗号分隔的字符串表示。

:您可以在控制台中根据您在策略页面上为策略定义的标准和类别查看策略违反。

annotations.policy.open-cluster-management.io/standards

选填

与策略相关的安全标准的名称。例如,美国国家标准与技术研究院 (NIST) 和支付卡行业 (PCI)。

annotations.policy.open-cluster-management.io/categories

选填

安全控制类别是针对一个或多个标准的具体要求。例如,系统和信息完整性类别可能表明您的策略包含一个数据传输协议来保护个人信息,符合 HIPAA 和 PCI 标准的要求。

annotations.policy.open-cluster-management.io/controls

选填

正在接受检查的安全控制名称。例如,访问控制或系统及信息完整性。

spec.dependencies

选填

用于创建与满足合规性的额外注意事项相关的依赖关系对象列表。

spec.policy-templates

必填

用于创建一个或多个应用到受管集群的策略。

spec.policy-templates.extraDependencies

选填

对于策略模板,这用于创建依赖项对象列表,以及满足合规性的额外注意事项。

spec.policy-templates.ignorePending

选填

用于在验证依赖项条件前将策略模板标记为合规。

spec.disabled

必填

将值设为 truefalsedisabled 参数提供启用和禁用策略的功能。

spec.remediationAction

可选。

指定您的策略的修复。参数值是 enforceinform。如果指定,定义的 spec.remediationAction 值会覆盖 policy-templates 部分的子策略中定义的 remediationAction 参数。例如,如果 spec.remediationAction 值被设置为 enforce,则 policy-templates 部分中的 remediationAction 会在运行时被设置为 enforce

重要:有些策略类型可能不支持 enforce 功能。

2.2.3. 策略示例文件

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-role
  annotations:
    policy.open-cluster-management.io/standards: NIST SP 800-53
    policy.open-cluster-management.io/categories: AC Access Control
    policy.open-cluster-management.io/controls: AC-3 Access Enforcement
spec:
  remediationAction: inform
  disabled: false
  policy-templates:
    - objectDefinition:
        apiVersion: policy.open-cluster-management.io/v1
        kind: ConfigurationPolicy
        metadata:
          name: policy-role-example
        spec:
          remediationAction: inform # the policy-template spec.remediationAction is overridden by the preceding parameter value for spec.remediationAction.
          severity: high
          namespaceSelector:
            include: ["default"]
          object-templates:
            - complianceType: mustonlyhave # role definition should exact match
              objectDefinition:
                apiVersion: rbac.authorization.k8s.io/v1
                kind: Role
                metadata:
                  name: sample-role
                rules:
                  - apiGroups: ["extensions", "apps"]
                    resources: ["deployments"]
                    verbs: ["get", "list", "watch", "delete","patch"]
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-policy-role
placementRef:
  name: placement-policy-role
  kind: PlacementRule
  apiGroup: apps.open-cluster-management.io
subjects:
- name: policy-role
  kind: Policy
  apiGroup: policy.open-cluster-management.io
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
  name: placement-policy-role
spec:
  clusterConditions:
  - status: "True"
    type: ManagedClusterConditionAvailable
  clusterSelector:
    matchExpressions:
      - {key: environment, operator: In, values: ["dev"]}

2.2.4. 放置 YAML 示例文件

PlacementBindingPlacement 资源可以与上一策略示例结合使用,以使用集群 Placement API 而非 PlacementRule API 部署策略。

---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-policy-role
placementRef:
  name: placement-policy-role
  kind: Placement
  apiGroup: cluster.open-cluster-management.io
subjects:
- name: policy-role
  kind: Policy
  apiGroup: policy.open-cluster-management.io
---
//Depends on if governance would like to use v1beta1
apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name: placement-policy-role
spec:
  predicates:
  - requiredClusterSelector:
      labelSelector:
        matchExpressions:
          - {key: environment, operator: In, values: ["dev"]}
  • 请参阅策略控制器
  • 请参阅管理安全策略以创建和更新策略。您还可以启用和更新 Red Hat Advanced Cluster Management 策略控制器,以验证您的策略合规性。
  • 返回 监管 文档。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.