3.12. 完整性 shield 保护(技术预览)


完整性屏蔽是一种工具,它有助于为创建或更新资源的任何请求执行签名验证。完整性截图支持开放策略代理(OPA)和 Gatekeeper,验证请求是否有签名,并根据定义的约束阻止任何未授权的请求。

请参阅以下完整性盾牌功能:

  • 仅支持部署授权的 Kubernetes 清单。
  • 在资源配置中支持零偏移,除非资源已添加到 allowlist 中。
  • 在集群上执行所有完整性验证,如强制准入控制器。
  • 如果集群中部署了未经授权的 Kubernetes 资源,则持续监控资源以报告。
  • X509、GPG 和 Sigstore 签名支持为 Kubernetes 清单 YAML 文件签名。Kubernetes 完整性 shield 使用 k8s-manifest-sigstore 支持 Sigstore 签名。

3.12.1. 完整性 shield 架构

完整性屏蔽由两个主要组件组成,即 API 和 Observer。完整性 shield operator 支持在集群上安装和管理完整的 shield 组件。查看以下组件描述:

  • 完整性 shield API 从 OPA 或 gatekeeper 接收 Kubernetes 资源,验证准入请求中包含的资源,并将验证结果发送到 OPA 或 gatekeeper。shield API 在内部使用 k8s-manifest-sigstoreverify-resource 功能来验证 Kubernetes 清单 YAML 文件。完整性 shield API 根据 ManifestingIntegrityConstraint (是基于 OPA 或 gatekeeper 的约束框架的自定义资源)验证资源。
  • 完整性 shield Observer 根据 ManifestingIntegrityConstraint 资源持续验证集群中的 Kubernetes 资源,并将结果导出到名为 ManifestIntegrityState 的资源。完整性 shield Observer 还使用 k8s-manifest-sigstore 来验证签名。

3.12.2. 支持的版本

以下产品版本支持完整性 shield 保护:

如需了解更多详细信息,请参阅 启用完整性 shield 保护(技术预览)

3.12.3. 启用完整性 shield 保护(技术预览)

在 Red Hat Advanced Cluster Management for Kubernetes 集群中启用完整性 shield 保护 Kubernetes 资源的完整性。

3.12.3.1. 先决条件

在 Red Hat Advanced Cluster Management 受管集群中启用完整性 shield 保护需要以下先决条件:

  • 安装具有一个或多个受管集群的 Red Hat Advanced Cluster Management hub 集群,以及集群管理员对集群的访问权限,以使用 ockubectl 命令。
  • 安装完整性 shield.在安装完整性 shield 前,您必须在集群中安装 Open Policy Agent 或 gatekeeper。完成以下步骤以安装完整性 shield operator:

    1. 运行以下命令,在命名空间中安装完整性 shield operator 以获得完整性 shield:

      kubectl create -f https://raw.githubusercontent.com/open-cluster-management/integrity-shield/master/integrity-shield-operator/deploy/integrity-shield-operator-latest.yaml
    2. 使用以下命令安装完整性 shield 自定义资源:

      kubectl create -f https://raw.githubusercontent.com/open-cluster-management/integrity-shield/master/integrity-shield-operator/config/samples/apis_v1_integrityshield.yaml -n integrity-shield-operator-system
    3. 完整性屏蔽需要一对密钥来签名和验证集群中需要保护的资源签名。设置签名和验证密钥对:

      • 使用以下命令生成一个新的 GPG 密钥:

        gpg --full-generate-key
      • 使用以下命令将您的新 GPG 公钥导出到文件中:

        gpg --export signer@enterprise.com > /tmp/pubring.gpg
  • 安装 yq 以运行用于签署 Red Hat Advanced Cluster Management 策略的脚本。
  • 启用完整性 shield 保护和签名 Red Hat Advanced Cluster Management 包括从 integrity-shield 仓库检索和提交源。您必须安装 Git

3.12.3.2. 启用完整性 shield 保护

通过完成以下步骤,在 Red Hat Advanced Cluster Management 受管集群中启用完整性 shield:

  1. 为完整性 shield 在 hub 集群上创建一个命名空间。运行以下命令:

    oc create ns your-integrity-shield-ns
  2. 在 Red Hat Advanced Cluster Management 受管集群中部署验证密钥。提醒,您必须创建签名和验证密钥。在 hub 集群上运行 acm-verification-key-setup.sh 以设置验证密钥。运行以下命令:

    curl -s  https://raw.githubusercontent.com/stolostron/integrity-shield/master/scripts/ACM/acm-verification-key-setup.sh | bash -s \
              --namespace integrity-shield-operator-system  \
              --secret keyring-secret  \
              --path /tmp/pubring.gpg \
              --label environment=dev  |  oc apply -f -

    要删除验证密钥,请运行以下命令:

    curl -s  https://raw.githubusercontent.com/stolostron/integrity-shield/master/scripts/ACM/acm-verification-key-setup.sh | bash -s - \
              --namespace integrity-shield-operator-system  \
              --secret keyring-secret  \
              --path /tmp/pubring.gpg \
              --label environment=dev  |  oc delete -f -
  3. 在 hub 集群中创建一个名为 policy-integrity-shield 的 Red Hat Advanced Cluster Management 策略。

    1. policy-collection 存储库获取 policy-integrity-shield 策略。确定 fork 了 存储库。
    2. 通过更新 remediationAction 参数值(从 informenforce ),将命名空间配置为在 Red Hat Advanced Cluster Management 受管集群上部署完整性 shield。
    3. 通过更新 signerConfig 部分,为签名者和验证密钥配置电子邮件。
    4. 配置 PlacementRule 决定了 Red Hat Advanced Cluster Management 受管集群应该部署到哪些集群。
    5. 运行以下命令,签署 policy-integrity-shield.yaml

      curl -s  https://raw.githubusercontent.com/stolostron/integrity-shield/master/scripts/gpg-annotation-sign.sh | bash -s \
               signer@enterprise.com \
               policy-integrity-shield.yaml

      注: 每当您更改策略并应用到其他集群时,您必须创建新的签名。否则,更改会被阻止且不应用。

如需示例,请参阅 policy-integrity-shield 策略。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.