5.4. 将策略作为代码管理
您可以通过将策略保存为 Kubernetes 自定义资源(CR)并使用 Kubernetes 原生持续交付(CD)工具(如 Argo CD)将它们应用到集群来创建和管理策略。
5.4.1. 管理策略作为代码 复制链接链接已复制到粘贴板!
您可以通过将策略保存为 Kubernetes 自定义资源(CR)并使用 Kubernetes 原生持续交付(CD)工具(如 Argo CD)将它们应用到集群来创建和管理策略。
对于希望在 YAML 或 JSON 中编写策略的 Kubernetes 安全架构师,而不是使用 RHACS 门户,策略对 Kubernetes 安全架构师很有用。已使用 GitOps 工作流管理 Kubernetes 配置的 GitOps 管理员也可以找到它很有用。
RHACS 提供了使用默认策略或为您的系统创建自定义策略的功能。使用策略作为代码功能,您可以在本地创建自定义策略,方法是下载它们并进行修改,或者从空文件创建它们。要在本地编写策略,您需要创建代表策略所需状态的 CR。然后,您可以使用 Argo CD 等持续交付工具来跟踪、管理和将策略应用到运行 RHACS 的集群。在创建或更新 CR 并使用 CI/CD 工具应用它们后,将创建或更新 RHACS 数据库中存储的策略。
使用此功能,RHACS 会在安装了 Central 的命名空间中安装一个新的 Kubernetes 控制器,通常是 stackrox 命名空间。使用 Argo CD 工作流,您可以将 Argo CD 配置为将策略作为代码资源应用到安装 RHACS 的同一命名空间。配置此连接后,RHAC 中的控制器从 Kubernetes API 接收有关作为独立 Kubernetes CR 文件管理的新、更新或删除策略的信息。RHACS 将策略 CR 协调到 RHACS 数据库中存储的策略。
使用不使用 Argo CD 的 GitOps 工作流,您可以将 GitOps 存储库配置为通过 RHACS API 在 RHACS 中连接到 RHACS 中的 Central。不使用 CR。
5.4.1.1. 关于策略偏移 复制链接链接已复制到粘贴板!
由于策略可以在 RHACS 门户中编辑、删除和创建,因此有时可能会出现 策略偏移。当 RHACS 中的策略版本与 Kubernetes 中的策略版本不匹配时,会发生 drift。
当使用 RHACS 门户或 API 应用到外部管理策略时,可能会发生偏移,而不是修改其 Kubernetes 自定义资源。RHACS 不阻止偏移,但不推荐这样做。偏移会在引入十小时内自动解决。
5.4.1.2. 使用 RHACS 门户在代码中创建策略 复制链接链接已复制到粘贴板!
您可以使用 RHACS 门户将现有策略保存为 YAML 文件来以代码创建新策略。
先决条件
- 已安装 RHACS 版本 4.6 或更高版本。
如果您使用清单安装方法(也称为
roxctl方法)安装 RHACS,则必须使用以下命令手动应用位于helm/chart/crds/的 .zip 文件中的 config.stackrox.io_securitypolicies.yaml :config.stackrox.io_securitypolicies.yamlkubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yaml
$ kubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
使用 RHACS 门户创建 CR,在代码中创建新策略:
在 Policy Management 页面中,创建新策略或克隆默认策略。
注意您必须克隆默认策略,然后才能将其保存为 CR。
-
在策略列表的行中,点 overflow 菜单
,然后选择 Save as Custom Resource。要一次保存多个策略,您可以选择它们并点 Bulk actions Save as Custom Resources。 编辑策略后,您可以通过执行以下操作之一应用保存的 CR:
-
使用
oc apply或kubectl apply命令,将 CR 直接应用到安装 Central 的 Kubernetes 命名空间。 - 使用 Argo CD 或 GitOps 工具将 CR 推送到安装 Central 的 Kubernetes 命名空间。
-
使用
5.4.1.3. 通过构建 CR 在代码中创建策略 复制链接链接已复制到粘贴板!
您可以通过为策略构建 CR,在代码中创建新策略。
使用编辑器使用以下属性为策略构建 CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示使用在线文档,例如输入
kubectl explain securitypolicy.spec命令,以了解可用于定义策略规格的字段。通过执行以下操作之一应用保存的 CR:
-
使用
oc apply或kubectl apply命令,将 CR 直接应用到安装 Central 的 Kubernetes 命名空间。 - 使用 Argo CD 或 GitOps 工具将 CR 推送到安装 Central 的 Kubernetes 命名空间。
-
使用
5.4.1.4. 禁用策略作为代码功能 复制链接链接已复制到粘贴板!
安装 RHACS 时,策略作为代码功能会自动启用,但您可以禁用它。
流程
要禁用策略作为代码功能,请完成以下任一任务,具体取决于您用来安装 RHACS 的方法:
-
如果使用 Operator 安装 RHACS,请将
spec.configAsCode.configAsCodeComponent字段设置为Disabled。 -
如果使用 Helm chart 安装 RHACS,请将
values.yaml文件中的configAsCode.enabled字段设置为false。 如果您使用清单安装方法(也称为
roxctl方法)安装 RHACS,请运行以下命令删除config-controller部署:kubectl -n stackrox delete deployment config-controller
$ kubectl -n stackrox delete deployment config-controller1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于 OpenShift Container Platform,使用
oc而不是kubectl。