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) 创建策略:
运行以下命令来创建策略:
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.2.1.1.1. 通过 CLI 查看您的安全策略
完成以下步骤,通过 CLI 查看您的安全策略:
运行以下命令,查看具体安全策略的详情:
kubectl get securityepolicy <policy-name> -n <namespace> -o yaml
运行以下命令,查看您的安全策略的描述:
kubectl describe securitypolicy <name> -n <namespace>
2.5.2.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: 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"
- 点击 Create Policy。
从控制台创建了安全策略。
2.5.2.1.2.1. 从控制台查看您的安全策略
您可以在控制台中查看任何安全策略及其状态。
- 从控制台登录到集群。
在导航菜单中点击 Governance and risk 来查看您的策略的表列表。
注:您可以通过选择 Policies 标签页或 Cluster violations 标签页来过滤策略列表。
选择一个策略来查看更多详情。Overview 标签页、Status 标签页和 YAML 标签页会显示。
当无法决定集群或策略状态时,会显示以下信息:
无状态
.