×

Red Hat Advanced Cluster Security for Kubernetes (RHACS) 集成多种镜像仓库,以便您可以了解您的镜像并为镜像使用应用安全策略。

当您与镜像仓库集成时,您可以查看重要的镜像详细信息,例如镜像创建日期和Dockerfile详细信息(包括镜像层)。

与您的仓库集成RHACS后,您可以在部署之前或之后扫描镜像、查看镜像组件并对镜像应用安全策略。

当您与镜像仓库集成时,RHACS不会扫描仓库中的所有镜像。只有当您:

  • 在部署中使用镜像

  • 使用`roxctl` CLI 检查镜像

  • 使用持续集成 (CI) 系统强制执行安全策略

您可以将RHACS与主要的镜像仓库集成,包括:

自动配置

Red Hat Advanced Cluster Security for Kubernetes包含与标准注册表(例如Docker Hub和其他注册表)的默认集成。它还可以根据在受监控集群中找到的工件(例如镜像拉取密钥)自动配置集成。通常,您不需要手动配置注册表集成。

  • 如果您使用Google Container Registry (GCR),Red Hat Advanced Cluster Security for Kubernetes不会自动创建注册表集成。

  • 如果您使用 Red Hat Advanced Cluster Security Cloud Service,则自动配置不可用,您必须手动创建注册表集成。

Amazon ECR 集成

对于 Amazon ECR 集成,如果满足以下条件,Red Hat Advanced Cluster Security for Kubernetes 会自动生成 ECR 注册表集成

  • 集群的云提供商为 AWS。

  • 集群中的节点具有实例身份和访问管理 (IAM) 角色关联,并且节点中可用实例元数据服务。例如,当使用 Amazon Elastic Kubernetes Service (EKS) 管理您的集群时,此角色被称为 EKS 节点 IAM 角色。

  • 实例 IAM 角色具有 IAM 策略,这些策略授予对您从中部署的 ECR 注册表的访问权限。

如果满足列出的条件,Red Hat Advanced Cluster Security for Kubernetes 将监控从 ECR 注册表提取的部署,并自动为其生成 ECR 集成。您可以在自动生成后编辑这些集成。

手动配置镜像注册表

如果您使用 GCR,则必须手动创建镜像注册表集成。

手动配置 OpenShift Container Platform 注册表

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 OpenShift Container Platform 内置容器镜像注册表集成。

先决条件
  • 您需要用户名和密码才能使用 OpenShift Container Platform 注册表进行身份验证。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 在**镜像集成**部分,选择**通用 Docker 注册表**。

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. **端点**: 注册表的地址。

    3. **用户名**和**密码**。

  5. 如果您在连接到注册表时未使用 TLS 证书,请选择**禁用 TLS 证书验证(不安全)**。

  6. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  7. 选择**测试**以测试与所选注册表的集成是否正常工作。

  8. 选择**保存**。

手动配置 Amazon Elastic Container Registry

您可以使用 Red Hat Advanced Cluster Security for Kubernetes 手动创建和修改 Amazon Elastic Container Registry (ECR) 集成。如果您从 Amazon ECR 部署,Amazon ECR 注册表的集成通常会自动生成。但是,您可能希望自行创建集成以扫描部署之外的镜像。您还可以修改自动生成的集成的参数。例如,您可以更改自动生成的 Amazon ECR 集成使用的身份验证方法,以使用 AssumeRole 身份验证或其他授权模型。

要删除您对自动生成的 ECR 集成的更改,请删除该集成,当您从 Amazon ECR 部署镜像时,Red Hat Advanced Cluster Security for Kubernetes 会为您创建一个新的集成,并使用自动生成的參數。

先决条件
  • 您必须拥有 Amazon Identity and Access Management (IAM) 访问密钥 ID 和秘密访问密钥。或者,您可以使用节点级 IAM 代理,例如kiamkube2iam

  • 访问密钥必须具有对 ECR 的读取权限。有关更多信息,请参阅如何创建 AWS 访问密钥?

  • 如果您在 Amazon Elastic Kubernetes Service (EKS) 中运行 Red Hat Advanced Cluster Security for Kubernetes 并想要与来自单独 Amazon 帐户的 ECR 集成,则必须首先在您的 ECR 中设置存储库策略语句。请按照设置存储库策略语句中的说明进行操作,对于**操作**,请选择以下 Amazon ECR API 操作的范围

    • ecr:BatchCheckLayerAvailability

    • ecr:BatchGetImage

    • ecr:DescribeImages

    • ecr:GetDownloadUrlForLayer

    • ecr:ListImages

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 在**镜像集成**部分,选择**Amazon ECR**。

  3. 单击**新建集成**,或单击自动生成的集成之一以将其打开,然后单击**编辑**。

  4. 输入或修改以下字段的详细信息

    1. **更新存储的凭据**: 如果您在不更新凭据(例如访问密钥和密码)的情况下修改集成,请清除此框。

    2. **集成名称**: 集成的名称。

    3. **注册表 ID**: 注册表的 ID。

    4. **端点**: 注册表的地址。仅当您使用 Amazon ECR 的私有虚拟私有云 (VPC) 端点时,才需要此值。选择 AssumeRole 选项时,此字段将被禁用。

    5. **区域**: 注册表的区域;例如,us-west-1

  5. 如果您使用 IAM,请选择**使用容器 IAM 角色**。否则,请清除**使用容器 IAM 角色**框并输入**访问密钥 ID**和**秘密访问密钥**。

  6. 如果您使用 AssumeRole 身份验证,请选择**使用 AssumeRole**并输入以下字段的详细信息

    1. **AssumeRole ID**: 要承担的角色的 ID。

    2. **AssumeRole 外部 ID**(可选): 如果您正在使用带有 AssumeRole 的外部 ID,您可以将其输入在此处。

  7. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  8. 选择**测试**以测试与所选注册表的集成是否正常工作。

  9. 选择**保存**。

使用 AssumeRole 与 Amazon ECR

您可以使用AssumeRole授予对 AWS 资源的访问权限,而无需手动配置每个用户的权限。相反,您可以定义一个具有所需权限的角色,以便授予用户承担该角色的权限。AssumeRole使您可以授予、撤销或通常更精细地管理权限。

使用容器 IAM 配置 AssumeRole

在您可以将 AssumeRole 与 Red Hat Advanced Cluster Security for Kubernetes 一起使用之前,您必须先对其进行配置。

步骤
  1. 为您的 EKS 集群启用 IAM OIDC 提供程序

    $ eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
  2. 为您的 EKS 集群创建 IAM 角色

  3. 将新创建的角色与服务帐户关联

    $ kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
  4. 重新启动 Central 以应用更改。

    $ kubectl -n stackrox delete pod -l app=central
  5. 将角色分配给允许角色根据需要承担另一个角色的策略

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "arn:aws:iam::<ecr-registry>:role/<assumerole-readonly>" (1)
            }
        ]
    }
    1 <assumerole-readonly>替换为您要承担的角色。
  6. 更新您要承担的角色的信任关系

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::<ecr-registry>:role/<role-name>" (1)
            ]
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    1 <role-name>应与您之前创建的新角色匹配。
在没有容器 IAM 的情况下配置 AssumeRole

要在没有容器 IAM 的情况下使用 AssumeRole,您必须使用访问密钥和秘密密钥来验证具有编程访问权限的AWS 用户的身份。

步骤
  1. 根据 AssumeRole 用户是否与 ECR 注册表位于同一帐户或不同帐户,您必须:

    • 如果要为其承担角色的用户与 ECR 注册表位于同一帐户中,请创建一个具有所需权限的新角色。

      创建角色时,您可以根据需要选择任何受信任的实体。但是,您必须在创建后对其进行修改。

    • 或者,如果用户与 ECR 注册表位于不同的帐户中,则必须提供访问 ECR 注册表的权限并定义其信任关系

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": "arn:aws:iam::<ecr-registry>:role/<assumerole-readonly>" (1)
              }
          ]
      }
      1 <assumerole-readonly>替换为您要承担的角色。
  2. 通过在**主体**字段下包含用户 ARN 来配置角色的信任关系

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::<ecr-registry>:user/<role-name>"
            ]
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
在 RHACS 中配置 AssumeRole

在配置 ECR 中的 AssumeRole 后,您可以使用 AssumeRole 将 Red Hat Advanced Cluster Security for Kubernetes 与 Amazon Elastic Container Registry (ECR) 集成。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 在**镜像集成**部分,选择**Amazon ECR**。

  3. 点击新建集成

  4. 输入以下字段的详细信息

    1. 集成名称:集成的名称。

    2. **注册表 ID**: 注册表的 ID。

    3. **区域**: 注册表的区域;例如,us-west-1

  5. 如果您使用 IAM,请选择使用容器 IAM 角色。否则,请取消选中使用自定义 IAM 角色框并输入访问密钥 ID密钥访问密钥

  6. 如果您使用 AssumeRole,请选择使用 AssumeRole并输入以下字段的详细信息

    1. **AssumeRole ID**: 要承担的角色的 ID。

    2. **AssumeRole 外部 ID**(可选): 如果您正在使用带有 AssumeRole 的外部 ID,您可以将其输入在此处。

  7. 选择**测试**以测试与所选注册表的集成是否正常工作。

  8. 选择**保存**。

手动配置 Google Container Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Google Container Registry (GCR) 集成。

先决条件
  • 您需要工作负载身份或服务帐号密钥进行身份验证。

  • 关联的服务帐号必须具有对注册表的访问权限。有关向用户和其他项目授予对 GCR 的访问权限的信息,请参阅配置访问控制

  • 如果您使用GCR 容器分析,还必须向服务帐号授予以下角色

    • 容器分析笔记查看者

    • 容器分析事件查看者

    • 存储对象查看者

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择Google Container Registry

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. 类型:选择注册表

    3. 注册表端点:注册表的地址。

    4. 项目:Google Cloud 项目名称。

    5. 使用工作负载身份:选中以使用工作负载身份进行身份验证。

    6. 服务帐号密钥 (JSON):您的服务帐号密钥用于身份验证。

  5. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  6. 选择**测试**以测试与所选注册表的集成是否正常工作。

  7. 选择**保存**。

手动配置 Google Artifact Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Google Artifact Registry 集成。

先决条件
  • 您需要工作负载身份或服务帐号密钥进行身份验证。

  • 关联的服务帐号必须具有Artifact Registry 读取者身份和访问管理 (IAM) 角色 `roles/artifactregistry.reader`。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择Google Artifact Registry

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. 注册表端点:注册表的地址。

    3. 项目:Google Cloud 项目名称。

    4. 使用工作负载身份:选中以使用工作负载身份进行身份验证。

    5. 服务帐号密钥 (JSON):您的服务帐号密钥用于身份验证。

  5. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  6. 选择**测试**以测试与所选注册表的集成是否正常工作。

  7. 选择**保存**。

手动配置 Microsoft Azure Container Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Microsoft Azure Container Registry 集成。

先决条件
  • 您必须拥有用户名和密码才能进行身份验证。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择Microsoft Azure Container Registry

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. **端点**: 注册表的地址。

    3. **用户名**和**密码**。

  5. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  6. 选择**测试**以测试与所选注册表的集成是否正常工作。

  7. 选择**保存**。

手动配置 JFrog Artifactory

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 JFrog Artifactory 集成。

先决条件
  • 您必须拥有用户名和密码才能使用 JFrog Artifactory 进行身份验证。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择JFrog Artifactory

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. **端点**: 注册表的地址。

    3. **用户名**和**密码**。

  5. 如果您在连接到注册表时未使用 TLS 证书,请选择**禁用 TLS 证书验证(不安全)**。

  6. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  7. 选择**测试**以测试与所选注册表的集成是否正常工作。

  8. 选择**保存**。

手动配置 Quay Container Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes (RHACS) 与 Quay Container Registry 集成。您可以使用以下方法与 Quay 集成

  • 与 Quay 公共存储库 (注册表) 集成:此方法不需要身份验证。

  • 使用机器人帐户与 Quay 私有注册表集成:此方法要求您创建一个用于与 Quay 集成的机器人帐户(推荐)。有关更多信息,请参阅Quay 文档

  • 与 Quay 集成以使用 Quay 扫描程序而不是 RHACS 扫描程序:此方法使用 API 并需要 OAuth 令牌进行身份验证。请参阅“附加资源”部分中的“与 Quay Container Registry 集成以扫描镜像”。

先决条件
  • 对于使用 Quay 私有注册表的身份验证,您需要与机器人帐户或 OAuth 令牌(已弃用)关联的凭据。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择Red Hat Quay.io

  3. 单击**新建集成**。

  4. 输入集成名称

  5. 输入端点,或注册表的地址。

    1. 如果您正在与 Quay 公共存储库集成,请在类型下选择注册表,然后转到下一步。

    2. 如果您正在与 Quay 私有注册表集成,请在类型下选择注册表并在以下字段中输入信息

      • 机器人用户名:如果您正在使用 Quay 机器人帐户访问注册表,请以<namespace>+<accountname>格式输入用户名。

      • 机器人密码:如果您正在使用 Quay 机器人帐户访问注册表,请输入机器人帐户用户名对应的密码。

      • OAuth 令牌:如果您正在使用 OAuth 令牌(已弃用)访问注册表,请在此字段中输入它。

  6. 可选:如果您在连接到注册表时未使用 TLS 证书,请选择禁用 TLS 证书验证(不安全)

  7. 可选:要创建集成而不进行测试,请选择创建集成而不进行测试

  8. 选择**保存**。

如果您正在编辑 Quay 集成,但不想更新您的凭据,请验证更新存储的凭据是否未被选中。

附加资源

手动配置 IBM Cloud Container Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 IBM Cloud Container Registry 集成。

先决条件
  • 您必须拥有 API 密钥才能使用 IBM Cloud Container Registry 进行身份验证。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择IBM Cloud Container Registry

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. **端点**: 注册表的地址。

    3. API 密钥.

  5. 选择**测试**以测试与所选注册表的集成是否正常工作。

  6. 选择**保存**。

手动配置 Red Hat Container Registry

您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Red Hat Container Registry 集成。

先决条件
  • 您必须拥有用户名和密码才能使用 Red Hat Container Registry 进行身份验证。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集成**。

  2. 镜像集成部分,选择Red Hat Registry

  3. 单击**新建集成**。

  4. 输入以下字段的详细信息

    1. **集成名称**: 集成的名称。

    2. **端点**: 注册表的地址。

    3. **用户名**和**密码**。

  5. 选择**无需测试创建集成**以在不测试与注册表的连接的情况下创建集成。

  6. 选择**测试**以测试与所选注册表的集成是否正常工作。

  7. 选择**保存**。