2.5.2. 管理安全策略


创建一个安全策略,根据您指定的安全标准、类别和控制,报告并验证您的集群合规性。要为 Red Hat Advanced Cluster Management for Kubernetes 创建策略,您必须在受管集群上创建 YAML 文件。

:您可以将现有策略复制到 Policy YAML 中。当您粘贴现有策略时,会自动输入参数字段的值。您还可以使用搜索功能搜索策略 YAML 文件中的内容。

2.5.2.1. 创建安全策略

您可以使用命令行界面 (CLI) 或者从控制台创建安全策略。需要集群管理员访问权限。

重要:您必须定义一个 PlacementPolicy 和 PlacementBinding,才能将您的策略应用到特定的集群。为 Cluster selector 字段输入值以定义 PlacementPolicy 和 PlacementBinding。查看 Red Hat Advanced Cluster Management 策略所需的对象定义:

  • PlacementRule:定义必须部署策略 的集群选择器
  • PlacementBinding:将放置绑定到 PlacementPolicy。

策略概述中查看策略 YAML 文件的更多描述。

2.5.2.1.1. 使用命令行界面创建安全策略

完成以下步骤,使用命令行界面 (CLI) 创建策略:

  1. 运行以下命令来创建策略:

    kubectl create -f policy.yaml -n <namespace>
  2. 定义策略使用的模板。要编辑 .yaml 文件,请添加 templates 字段来定义模板。您的策略可能类似以下 YAML 文件:

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy1
    spec:
      remediationAction: "enforce" # or inform
      disabled: false # or true
      namespaces:
        include: ["default"]
        exclude: ["kube*"]
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              namespace: kube-system # will be inferred
              name: operator
            spec:
              remediationAction: "inform"
              object-templates:
                complianceType: "musthave" # at this level, it means the role must exist and must have the following rules
                apiVersion: rbac.authorization.k8s.io/v1
                kind: Role
                metadata:
                  name: example
                objectDefinition:
                  rules:
                    - complianceType: "musthave" # at this level, it means if the role exists the rule is a musthave
                      apiGroups: ["extensions", "apps"]
                      resources: ["deployments"]
                      verbs: ["get", "list", "watch", "create", "delete","patch"]
  3. 定义 PlacementRule。务必更改 PlacementRule,以通过 clusterNamesclusterLabels 指定需要应用策略的集群。查看创建和管理放置规则。您 PlacementRule 可能类似如下内容:

    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement1
    spec:
      clusterConditions:
        - type: ManagedClusterConditionAvailable
          status: "True"
      clusterNames:
      - "cluster1"
      - "cluster2"
      clusterLabels:
        matchLabels:
          cloud: IBM
  4. 定义一个 PlacementBinding 来绑定您的策略和 PlacementRule。您 PlacementBinding 可能类似以下 YAML 示例:

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding1
    placementRef:
      name: placement1
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
    subjects:
    - name: policy1
      apiGroup: policy.mcm.ibm.com
      kind: Policy
2.5.2.1.1.1. 通过 CLI 查看您的安全策略

完成以下步骤,通过 CLI 查看您的安全策略:

  1. 运行以下命令,查看具体安全策略的详情:

    kubectl get securityepolicy <policy-name> -n <namespace> -o yaml
  2. 运行以下命令,查看您的安全策略的描述:

    kubectl describe securitypolicy <name> -n <namespace>
2.5.2.1.2. 从控制台创建集群安全策略

从控制台创建新策略时,也会在 YAML 编辑器中创建 YAML 文件。

  1. 在导航菜单中点击 Govern risk
  2. 要创建策略,请点击 Create policy
  3. 为以下参数输入或选择值:

    • Name
    • Specifications
    • Cluster selector
    • Remediation action
    • Standards
    • Categories
    • Controls
  4. 查看以下 Red Hat Advanced Cluster Management for Kubernetes 安全策略定义示例。复制并粘贴策略的 YAML 文件。

    您的 YAML 文件可能类似以下策略:

     apiVersion: policy.open-cluster-management.io/v1
     kind: Policy
     metadata:
       name: policy-pod
       annotations:
         policy.open-cluster-management.io/categories: 'SystemAndCommunicationsProtections,SystemAndInformationIntegrity'
         policy.open-cluster-management.io/controls: 'control example'
         policy.open-cluster-management.io/standards: 'NIST,HIPAA'
     spec:
       complianceType: musthave
       namespaces:
         exclude: ["kube*"]
         include: ["default"]
       object-templates:
       - complianceType: musthave
         objectDefinition:
           apiVersion: v1
           kind: Pod
           metadata:
             name: pod1
           spec:
             containers:
             - name: pod-name
               image: 'pod-image'
               ports:
               - containerPort: 80
       remediationAction: enforce
       disabled: false
    
     ---
     apiVersion: apps.open-cluster-management.io/v1
     kind: PlacementBinding
     metadata:
       name: binding-pod
     placementRef:
       name: placement-pod
       kind: PlacementRule
       apiGroup: apps.open-cluster-management.io
     subjects:
     - name: policy-pod
       kind: Policy
       apiGroup: policy.mcm.ibm.com
    
     ---
     apiVersion: apps.open-cluster-management.io/v1
     kind: PlacementRule
     metadata:
       name: placement-pod
     spec:
       clusterConditions:
         - type: ManagedClusterConditionAvailable
           status: "True"
       clusterLabels:
         matchLabels:
           cloud: "IBM"
  5. 点击 Create Policy

从控制台创建了安全策略。

2.5.2.1.2.1. 从控制台查看您的安全策略

您可以在控制台中查看任何安全策略及其状态。

  1. 从控制台登录到集群。
  2. 在导航菜单中点击 Governance and risk 来查看您的策略的表列表。

    :您可以通过选择 Policies 标签页或 Cluster violations 标签页来过滤策略列表。

  3. 选择一个策略来查看更多详情。Overview 标签页、Status 标签页和 YAML 标签页会显示。

    当无法决定集群或策略状态时,会显示以下信息:无状态.

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.