2.5. 管理安全策略

使用监管和风险仪表板来创建、查看和管理安全策略和策略违反情况。您可以通过 CLI 和控制台为您的策略创建 YAML 文件。

Governance and risk 页面中,您可以通过按类别或标准过滤违反情况来自定义概述视图,折叠概述以查看较少的信息,您可以搜索策略。您还可以根据策略或集群违反过滤违反表视图。

策略表列出了策略的以下详情:策略名称命名空间Remediation集群违反标准、Catego ries 和 Controls。您可以选择 Actions 图标来编辑、禁用、通知或删除策略。

当您在表列表中选择一个策略时,控制台中会显示以下信息标签页:

  • 详情 :选择 Details 选项卡来查看策略详情、放置详情和 _Policy 模板表列表。
  • status :选择 Status 选项卡来查看违反情况的表列表。您可以根据集群模板过滤您的视图。要查看您的策略的合规状态,请选择 Status 选项卡。点 View history 链接查看违反信息列表。
  • YAML :选择 YAML 选项卡来查看,或使用编辑器编辑您的策略。选择 YAML 切换来查看或隐藏编辑器。

查看以下主题以了解更多有关创建和更新您的安全策略的信息。

更多主题请参阅监管和风险

2.5.1. 管理安全策略

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

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

2.5.1.1. 创建安全策略

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

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

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

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

2.5.1.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.1.1.1.1. 通过 CLI 查看您的安全策略

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

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

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

    kubectl describe securitypolicy <name> -n <namespace>
2.5.1.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: nginx1
           spec:
             containers:
             - name: nginx
               image: 'nginx:1.7.9'
               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.1.1.2.1. 从控制台查看您的安全策略

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

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

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

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

2.5.1.2. 更新安全策略

查看以下部分以了解如何更新安全策略。

2.5.1.2.1. 禁用安全策略

您的策略默认是启用的。您可以通过完成以下步骤禁用您的策略:

  1. 登录您的 Red Hat Advanced Cluster Management for Kubernetes 控制台。
  2. 在导航菜单中点击 Govern risk 来查看您的策略的表列表。
  3. Actions 图标 > Disable policy 来禁用您的策略。此时会出现 Disable Policy 对话框。
  4. 点击 Disable policy

您的策略已禁用。

2.5.1.2.2. 删除安全策略

通过 CLI 或控制台删除安全策略。

  • 通过 CLI 删除安全策略:

    1. 运行以下命令来删除安全策略:
    kubectl delete policy <securitypolicy-name> -n <open-cluster-management-namespace>

    + 删除策略后,它会从目标集群或集群中删除。运行以下命令验证您的策略是否已移除: kubectl get policy <securitypolicy-name> -n <open-cluster-management-namespace>

  • 从控制台删除安全策略:

    1. 在导航菜单中点击 Govern risk 来查看您的策略的表列表。
    2. 在策略违反表中点击您要删除的策略的 Actions 图标。
    3. 点击 Remove
    4. Remove policy 对话框中点击 Remove policy

要管理其他策略,请参阅管理安全策略以了解更多信息。有关策略的更多主题,请参阅监管和风险