2.5. 管理安全策略
使用监管和风险仪表板来创建、查看和管理安全策略和策略违反情况。您可以通过 CLI 和控制台为您的策略创建 YAML 文件。
在Governance and risk 页面中,您可以通过按类别或标准过滤违反情况来自定义概述视图,折叠概述以查看较少的信息,您可以搜索策略。您还可以根据策略或集群违反过滤违反表视图。
策略表列出了策略的以下详情:策略名称、命名空间、Remediation、集群违反、标准、Catego ries 和 Controls。您可以选择 Actions 图标来编辑、禁用、通知或删除策略。
当您在表列表中选择一个策略时,控制台中会显示以下信息标签页:
- 详情 :选择 Details 选项卡来查看 Policy details、Placement details 和 Policy templates 表格列表。
- status :选择 Status 选项卡来查看违反情况的表列表。您可以根据集群或模板过滤您的视图。要查看您的策略的合规状态,请选择 Status 选项卡。点 View history 链接查看违反信息列表。
- YAML :选择 YAML 选项卡来查看,或使用编辑器编辑您的策略。选择 YAML 切换来查看或隐藏编辑器。
查看以下主题以了解更多有关创建和更新您的安全策略的信息。
更多主题请参阅监管和风险。
2.5.1. 使用 GitOps 部署策略 复制链接链接已复制到粘贴板!
您可以使用监管框架在一组受管集群中部署一组策略。您可以通过添加到开源社区的 policy-collection
,贡献并使用软件仓库中的策略。如需更多信息,请参阅贡献自定义策略。来自开源社区的、位于 stable
和 community
目录中的策略会进一步根据 NIST Special Publication 800-53 进行组织。
继续阅读以了解使用 GitOps 通过 Git 存储库自动化和跟踪策略更新和创建的最佳做法。
先决条件:在开始之前,请务必分叉 policy-collection
存储库。
2.5.1.1. 自定义本地存储库 复制链接链接已复制到粘贴板!
通过将 stable
和 community
策略整合到单个文件夹中,自定义您的本地存储库。删除您不想使用的策略。完成以下步骤以自定义您的本地存储库:
在存储库中创建一个新目录,以存放您要部署的策略。确保您位于 GitOps 的主要默认分支的本地
policy-collection
存储库中。运行以下命令:mkdir my-policies
mkdir my-policies
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将所有
stable
和community
策略复制到您的my-policies
目录中。首先,如果stable
文件夹包含community
中可用内容的副本,则首先从社区策略开始。运行以下命令:cp -R community/* my-policies/ cp -R stable/* my-policies/
cp -R community/* my-policies/ cp -R stable/* my-policies/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您在一个父目录结构中已有所有策略,您可以在 fork 中编辑策略。
提示:
- 最佳做法是删除您不打算使用的策略。
从以下列表中了解策略和策略定义:
- 目的:了解策略的作用.
补救操作:策略是否仅通知您合规性,或强制执行策略并进行更改?请参阅
spec.remediationAction
参数。如果强制进行更改,请确保您了解功能预期。记得检查哪些策略支持执行。如需更多信息,请参阅 Validate 部分。注:策略的
spec.remediationAction
设置会覆盖在单个spec.policy-templates
中设置的任何补救操作。-
placement:策略部署到哪些集群?默认情况下,大多数策略都以带有
environment: dev
标签的集群为目标。有些策略可能针对 OpenShift Container Platform 集群或其他标签。您可以更新或添加附加标签来包括其他集群。如果没有特定值,策略会应用到所有集群。您还可以创建策略的多个副本并为每个副本自定义,如果您想要使用一组集群配置的一种策略,并为另一组集群配置另一种方式。
2.5.1.2. 提交到您的本地存储库 复制链接链接已复制到粘贴板!
在您对目录所做的更改满意后,提交您的更改并将其推送到 Git,以便集群可以访问它们。
注:本例用于显示如何在 GitOps 中使用策略的基础知识,因此您可能有不同的工作流来更改您的分支。
完成以下步骤:
在终端中运行
git status
,以查看您之前创建的目录中的最近更改。将您的新目录添加到要使用以下命令提交的更改列表中:git add my-policies/
git add my-policies/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提交更改并自定义您的消息。运行以下命令:
git commit -m “Policies to deploy to the hub cluster”
git commit -m “Policies to deploy to the hub cluster”
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将更改推送到用于 GitOps 的已分叉存储库的分支。运行以下命令:
git push origin <your_default_branch>master
git push origin <your_default_branch>master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您的更改已提交。
2.5.1.3. 在集群中部署策略 复制链接链接已复制到粘贴板!
在推送更改后,您可以将策略部署到 Red Hat Advanced Cluster Management for Kubernetes 安装中。部署后,您的 hub 集群与您的 Git 仓库同步。对 Git 存储库所选分支的任何其他更改都会反映在集群中。
deploy.sh
脚本在 hub 集群中创建 Channel
和 Subscription
资源。频道连接到 Git 仓库,订阅指定要通过频道传递给集群的数据。因此,在您的 hub 上会创建指定子目录中定义的所有策略。
在订阅创建策略后,Red Hat Advanced Cluster Management 会根据定义的放置规则分析策略,并在与策略应用到的每个受管集群关联的命名空间中创建额外的策略资源。
该策略随后从 hub 集群上对应的受管集群命名空间中复制到受管集群。因此,Git 仓库中的策略推送到具有与策略放置规则中定义的 clusterSelector
匹配的所有受管集群。
完成以下步骤:
在
policy-collection
文件夹中运行以下命令来更改目录:cd deploy
cd deploy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请确定将命令行界面(CLI)配置为使用以下命令在正确的集群中创建资源:
oc cluster-info
oc cluster-info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令的输出显示集群的 API 服务器详情,其中安装了 Red Hat Advanced Cluster Management。如果没有显示正确的 URL,请将 CLI 配置为指向正确的集群。如需更多信息,请参阅使用 OpenShift CLI。
创建一个命名空间,创建您的策略以控制访问和组织策略。运行以下命令:
oc create namespace policy-namespace
oc create namespace policy-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令将策略部署到集群中:
./deploy.sh -u https://github.com/<your-repository>/policy-collection -p my-policies -n policy-namespace
./deploy.sh -u https://github.com/<your-repository>/policy-collection -p my-policies -n policy-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
your-repository
替换为您的 Git 用户名或存储库名称。注:作为参考,deploy
.sh
脚本的完整参数列表使用以下语法:./deploy.sh [-u <url>] [-b <branch>] [-p <path/to/dir>] [-n <namespace>] [-a|--name <resource-name>]
./deploy.sh [-u <url>] [-b <branch>] [-p <path/to/dir>] [-n <namespace>] [-a|--name <resource-name>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看每个参数的以下解释:
-
URL:从主
policy-collection
仓库中分叉的存储库的 URL。默认 URL 是https://github.com/stolostron/policy-collection.git
。 -
分支:Git 存储库要指向的分支。默认分支为
main
。 -
子目录路径:您为包含要使用的策略而创建的子目录路径。在前面的示例中,我们使用了
my-policies
子目录,但您也可以指定您想要从哪个文件夹开始。例如,您可以使用my-policies/AC-Access-Control
。默认文件夹为stable
。 -
Namespace:在 hub 集群中创建资源和策略的命名空间。这些说明使用
policy-namespace
命名空间。默认命名空间是policies
。 -
名称前缀:
Channel
和Subscription
资源的前缀。默认为demo-stable-policies
。运行deploy.sh
脚本后,有权访问存储库的任何用户都可以提交更改到分支,该分支会将更改推送到集群上执行策略。
-
URL:从主
2.5.1.4. 从控制台验证 GitOps 策略部署 复制链接链接已复制到粘贴板!
从控制台验证您的更改是否已应用于您的策略。您还可以从控制台对策略进行更多更改。完成以下步骤:
- 登录您的 Red Hat Advanced Cluster Management 集群。
- 在导航菜单中选择 Govern risk。
检查以下策略详情:
- 为什么一个特定的策论在所分发的集群中合规或不合规?
- 策略是否应用到正确的集群?
- 如果此策略没有分发到任何集群,为什么?
识别您创建或修改的 GitOps 部署策略。GitOps 部署的策略可以通过自动应用的注解来标识。GitOps 部署的策略的注解类似以下路径:
apps.open-cluster-management.io/hosting-deployable: policies/deploy-stable-policies-Policy-policy-role9 apps.open-cluster-management.io/hosting-subscription: policies/demo-policies apps.open-cluster-management.io/sync-source: subgbk8s-policies/demo-policies
apps.open-cluster-management.io/hosting-deployable: policies/deploy-stable-policies-Policy-policy-role9 apps.open-cluster-management.io/hosting-subscription: policies/demo-policies apps.open-cluster-management.io/sync-source: subgbk8s-policies/demo-policies
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps 注解可用于查看哪一订阅创建了该策略。您还可以在策略中添加自己的标签,以便可以编写基于标签选择策略的运行时查询。
例如,您可以使用以下命令在策略中添加标签:
oc label policy <policy-name> -n <policy-namespace> <key>=<value>
oc label policy <policy-name> -n <policy-namespace> <key>=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,您可以使用以下命令查询带有标签的策略:
oc get policies -n <policy-namespace> -l <key>=<value>
oc get policies -n <policy-namespace> -l <key>=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 GitOps 部署了您的策略。