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) 创建策略:
运行以下命令来创建策略:
kubectl create -f policy.yaml -n <namespace>
定义策略使用的模板。要编辑
.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"]
定义
PlacementRule
。务必更改PlacementRule
,以通过clusterNames
或clusterLabels
指定需要应用策略的集群。查看创建和管理放置规则。您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
定义一个
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 查看您的安全策略:
运行以下命令,查看具体安全策略的详情:
kubectl get securitypolicy <policy-name> -n <namespace> -o yaml
运行以下命令,查看您的安全策略的描述:
kubectl describe securitypolicy <name> -n <namespace>
2.5.1.1.2. 从控制台创建集群安全策略
从控制台创建新策略时,也会在 YAML 编辑器中创建 YAML 文件。
- 在导航菜单中点击 Govern risk。
- 要创建策略,请点击 Create policy。
为以下参数输入或选择值:
- Name
- Specifications
- Cluster selector
- Remediation action
- Standards
- Categories
- Controls
查看以下 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"
- 点击 Create Policy。
从控制台创建了安全策略。
2.5.1.1.2.1. 从控制台查看您的安全策略
您可以在控制台中查看任何安全策略及其状态。
- 从控制台登录到集群。
在导航菜单中点击 Governance and risk 来查看您的策略的表列表。
注:您可以通过选择 Policies 标签页或 Cluster violations 标签页来过滤策略列表。
- 选择一个策略来查看更多详情。Overview 标签页、Status 标签页和 YAML 标签页会显示。
2.5.1.2. 更新安全策略
查看以下部分以了解如何更新安全策略。
2.5.1.2.1. 禁用安全策略
您的策略默认是启用的。您可以通过完成以下步骤禁用您的策略:
- 登录您的 Red Hat Advanced Cluster Management for Kubernetes 控制台。
- 在导航菜单中点击 Govern risk 来查看您的策略的表列表。
- 点 Actions 图标 > Disable policy 来禁用您的策略。此时会出现 Disable Policy 对话框。
- 点击 Disable policy。
您的策略已禁用。
2.5.1.2.2. 删除安全策略
通过 CLI 或控制台删除安全策略。
通过 CLI 删除安全策略:
- 运行以下命令来删除安全策略:
kubectl delete policy <securitypolicy-name> -n <open-cluster-management-namespace>
+ 删除策略后,它会从目标集群或集群中删除。运行以下命令验证您的策略是否已移除:
kubectl get policy <securitypolicy-name> -n <open-cluster-management-namespace>
从控制台删除安全策略:
- 在导航菜单中点击 Govern risk 来查看您的策略的表列表。
- 在策略违反表中点击您要删除的策略的 Actions 图标。
- 点击 Remove。
- 在 Remove policy 对话框中点击 Remove policy