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/ config.stackrox.io _securitypolicies.yaml 的 .zip 文件中的 config.stackrox.io_securitypolicies.yaml :

    $ kubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yaml
    Copy to Clipboard Toggle word wrap

流程

使用 RHACS 门户创建 CR,在代码中创建新策略:

  1. Policy Management 页面中,创建新策略或克隆默认策略。

    注意

    您必须克隆默认策略,然后才能将其保存为 CR。

  2. 在策略列表的行中,点 overflow 菜单 kebab ,然后选择 Save as Custom Resource。要一次保存多个策略,您可以选择它们并点 Bulk actions Save as Custom Resources
  3. 编辑策略后,您可以通过执行以下操作之一应用保存的 CR:

    • 使用 oc applykubectl apply 命令,将 CR 直接应用到安装 Central 的 Kubernetes 命名空间。
    • 使用 Argo CD 或 GitOps 工具将 CR 推送到安装 Central 的 Kubernetes 命名空间。

5.4.1.3. 通过构建 CR 在代码中创建策略

您可以通过为策略构建 CR,在代码中创建新策略。

  1. 使用编辑器使用以下属性为策略构建 CR:

    kind: SecurityPolicy
    apiVersion: config.stackrox.io/v1alpha1
    metadata:
      name: short-name
    spec:
      policyName: A longer form name
    # ...
    Copy to Clipboard Toggle word wrap
    提示

    使用在线文档,例如输入 kubectl explain securitypolicy.spec 命令,以了解可用于定义策略规格的字段。

  2. 通过执行以下操作之一应用保存的 CR:

    • 使用 oc applykubectl 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 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat