搜索

2.2. 策略概述

download PDF

要创建和管理策略,请获得可见性和修复以满足标准的配置,请使用 Red Hat Advanced Cluster Management for Kubernetes 安全策略框架。Kubernetes 自定义资源定义实例用于创建策略。除了受管集群命名空间外,您可以在 hub 集群上的任意命名空间中创建策略。如果在受管集群命名空间中创建策略,它将由 Red Hat Advanced Cluster Management 删除。每个 Red Hat Advanced Cluster Management 策略都可以被组织到一个或多个策略模板定义中。有关策略元素的详情,请查看此页面的 Policy YAML 表 部分。

您需要确保受管云环境满足针对 Kubernetes 集群上托管的工作负载的软件工程、安全工程、弹性、安全性和法规合规性的内部企业安全标准。

2.2.1. 先决条件

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

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

2.2.2. 策略 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:
    policy.open-cluster-management.io/description:
spec:
  disabled:
  remediationAction:
  dependencies:
  - apiVersion: policy.open-cluster-management.io/v1
    compliance:
    kind: Policy
    name:
    namespace:
  policy-templates:
    - objectDefinition:
        apiVersion:
        kind:
        metadata:
          name:
        spec:
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
bindingOverrides:
  remediationAction:
subFilter:
  name:
placementRef:
  name:
  kind: Placement
  apiGroup: cluster.open-cluster-management.io
subjects:
- name:
  kind:
  apiGroup:
---
apiVersion: cluster.open-cluster-management.io/v1beta1
kind: Placement
metadata:
  name:
spec:

2.2.3. 策略 YAML 表

查看以下策略参数描述表:

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

apiVersion

必填

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

kind

必填

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

metadata.name

必填

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

metadata.annotations

选填

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

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

bindingOverrides.remediationAction

选填

当此参数设置为 enforce 时,它为您提供了覆盖配置策略相关 PlacementBinding 资源的补救操作。默认值为 null

subFilter

选填

将此参数设置为 restriction,以选择绑定策略的子集。默认值为 null

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.disabled

必填

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

spec.remediationAction

选填

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

spec.copyPolicyMetadata

选填

指定在将策略复制到受管集群时是否应复制策略的标签和注解。如果设置为 true,策略的所有标签和注解都会复制到复制策略中。如果设置为 false,则只有策略框架特定的策略标签和注解被复制到复制策略中。

spec.dependencies

选填

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

spec.policy-templates

必填

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

spec.policy-templates.extraDependencies

选填

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

spec.policy-templates.ignorePending

选填

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

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

2.2.4. 策略示例文件

查看以下 YAML 文件,它是角色的配置策略:

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
    policy.open-cluster-management.io/description:
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: Placement
  apiGroup: cluster.open-cluster-management.io
subjects:
- name: policy-role
  kind: Policy
  apiGroup: policy.open-cluster-management.io
---
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"]}

2.2.5. 其他资源

  • 请参阅策略控制器
  • 请参阅管理安全策略以创建和更新策略。您还可以启用和更新 Red Hat Advanced Cluster Management 策略控制器,以验证您的策略合规性。
  • 返回 监管 文档。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.