1.3. 手动配置镜像 registry
如果使用 GCR,则必须手动创建镜像 registry 集成。
1.3.1. 手动配置 OpenShift Container Platform registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 OpenShift Container Platform 内置容器镜像 registry 集成。
先决条件
- 您需要一个用户名和密码才能通过 OpenShift Container Platform registry 进行身份验证。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Generic Docker Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名和密码.。
- 如果您在连接到 registry 时没有使用 TLS 证书,请选择 Disable TLS 证书验证(不安全)。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.2. 手动配置 Amazon Elastic Container Registry 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Advanced Cluster Security for Kubernetes 手动创建和修改 Amazon Elastic Container Registry (ECR)集成。如果您要从 Amazon ECR 部署,则通常会自动生成 Amazon ECR registry 的集成。但是,您可能希望自行创建集成,以扫描部署外部的镜像。您还可以修改自动生成的集成的参数。例如,您可以更改自动生成的 Amazon ECR 集成使用的身份验证方法,以使用 AssumeRole 身份验证或其他授权模型。
要擦除对自动生成的 ECR 集成所做的更改,请删除集成,Red Hat Advanced Cluster Security for Kubernetes 会在从 Amazon ECR 部署镜像时使用自动生成的参数创建一个新的集成。
先决条件
-
您必须有一个 Amazon Identity and Access Management (IAM) 访问密钥 ID 和 secret 访问密钥。另外,您可以使用节点级别的 IAM 代理,如
kiam
或kube2iam
。 - 访问密钥必须具有 ECR 的读取访问权限。如需更多信息,请参阅如何创建 AWS 访问密钥?
如果您在 Amazon Elastic Kubernetes Service (EKS)中运行 Red Hat Advanced Cluster Security for Kubernetes,并希望与来自单独的 Amazon 帐户的 ECR 集成,您必须首先在 ECR 中设置存储库策略声明。按照 设置存储库策略语句 和 Actions 中的说明,选择 Amazon ECR API 操作的以下范围:
- ecr:BatchCheckLayerAvailability
- ecr:BatchGetImage
- ecr:DescribeImages
- ecr:GetDownloadUrlForLayer
- ecr:ListImages
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Amazon ECR。
- 点 New integration,或者点自动生成的集成之一打开它,然后点 Edit。
输入或修改以下字段的详情:
- 更新存储的凭据 :如果您在不更新密钥和密码等凭证的情况下修改集成,请清除此框。
- 集成名称 :集成的名称。
- Registry ID :registry 的 ID。
- 端点 :registry 的地址。只有在 Amazon ECR 使用私有虚拟私有云(VPC)端点时才需要这个值。选择 AssumeRole 选项时,不会启用此字段。
-
Region:registry 的区域,如
us-west-1
。
- 如果使用 IAM,请选择 Use Container IAM role。否则,清除 Use Container IAM 角色 框并输入 Access key ID 和 Secret access key。
如果使用 AssumeRole 身份验证,请选择 Use AssumeRole 并输入以下字段的详情:
- AssumeRole ID :要假定的角色 ID。
- AssumeRole External ID (可选): 如果您使用带有 AssumeRole 的外部 ID,您可以在此处输入它。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.2.1. 将 assumerole 与 Amazon ECR 一起使用 复制链接链接已复制到粘贴板!
您可以使用 AssumeRole 授予对 AWS 资源的访问权限,而无需手动配置每个用户的权限。取而代之,您可以定义具有所需权限的角色,以便授予用户访问权限来假定角色。AssumeRole
允许您授予、撤销或通常管理更精细的权限。
1.3.2.1.1. 使用容器 IAM 配置 AssumeRole 复制链接链接已复制到粘贴板!
在 Red Hat Advanced Cluster Security for Kubernetes 中使用 AssumeRole 前,您必须首先配置它。
流程
为您的 EKS 集群启用 IAM OIDC 供应商:
eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
$ eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为您的 EKS 集群创建一个 IAM 角色。
将新创建的角色与服务帐户关联:
kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
$ kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Central 以应用更改。
kubectl -n stackrox delete pod -l app=central
$ kubectl -n stackrox delete pod -l app=central
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将角色分配给允许角色根据需要假设另一个角色的策略:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<assumerole-readonly>
替换为您要假定的角色。
更新您要假设的角色的信任关系:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<role-name>
应该与之前创建的新角色匹配。
1.3.2.1.2. 在没有容器 IAM 的情况下配置 AssumeRole 复制链接链接已复制到粘贴板!
要在没有容器 IAM 的情况下使用 AssumeRole,您必须使用访问和 secret 密钥以 AWS 用户身份进行身份验证,并具有编程访问。
流程
根据 AssumeRole 用户与 ECR registry 位于同一个帐户中或在不同的帐户中,您必须:
如果要假设角色的用户与 ECR registry 位于同一个帐户中,则创建带有所需权限的新角色。
注意在创建角色时,您可以根据需要选择任何可信实体。但是,您必须在创建后修改它。
或者,您必须提供访问 ECR registry 的权限,并在用户位于与 ECR registry 不同的帐户中时定义其信任关系:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<assumerole-readonly>
替换为您要假定的角色。
通过在 Principal 字段中包含用户 ARN 来配置角色的信任关系:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.1.3. 在 RHACS 中配置 AssumeRole 复制链接链接已复制到粘贴板!
在 ECR 中配置 AssumeRole 后,您可以使用 AssumeRole 将 Red Hat Advanced Cluster Security for Kubernetes 与 Amazon Elastic Container Registry (ECR)集成。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Amazon ECR。
- 单击 New Integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- Registry ID :registry 的 ID。
-
Region:registry 的区域,如
us-west-1
。
- 如果使用 IAM,请选择 Use container IAM role。否则,清除 Use 自定义 IAM 角色 框并输入 Access key ID 和 Secret access key。
如果使用 AssumeRole,选择 Use AssumeRole 并输入以下字段的详情:
- AssumeRole ID :要假定的角色 ID。
- AssumeRole External ID (可选): 如果您使用带有 AssumeRole 的外部 ID,您可以在此处输入它。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.3. 手动配置 Google Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes (RHACS)与 Google Container Registry (GCR)集成。
先决条件
您有一个用于身份验证的工作负载身份或服务帐户密钥。
如需更多信息,请参阅从 GKE 工作负载(Google Cloud 文档)向 Google Cloud API 进行身份验证。
您可以访问相关服务帐户的 registry。
如需更多信息,请参阅使用 IAM 的访问控制 (Google Cloud 文档)。
如果使用 GCR Container Analysis,您已为服务帐户授予以下角色:
- 容器分析备注查看器
- Container Analysis Occurrences Viewer
存储对象查看器
如需更多信息,请参阅 容器分析和漏洞扫描 (Google Cloud 文档)。
流程
-
在 RHACS 门户中,点 Platform Configuration
Integrations。 - 在 Image Integrations 部分中,点 Google Container Registry。
- 要创建新集成,请单击 New integration。
- 输入您的集成名称。
选择您要配置的适当集成类型:
- 要配置包含容器镜像 registry 的集成,请选择 Registry。
- 要配置包含 Scanner 的集成,请选择 Scanner。
- 要配置包含容器镜像 registry 和 Scanner 的集成,请选择 Registry+Scanner。
- 输入 registry 的地址。
- 可选:输入 Google Cloud 项目的名称。RHACS 将镜像与 registry 的项目匹配。如果没有指定项目名称,RHACS 会将镜像与所有项目匹配。
- 可选: 选择 Use workload identity 复选框来使用工作负载身份进行身份验证。
- 输入您的服务帐户密钥进行验证。
- 可选: 选择 Create integration without test 复选框来创建集成,而无需测试到 registry 的连接。
- 可选: 要测试您与所选 registry 的集成,请点 Test。
- 要保存集成,请点击 Save。
1.3.4. 手动配置 Google Artifact Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes (RHACS)与 Google Artifact Registry (GAR)集成。
先决条件
您有一个用于身份验证的工作负载身份或服务帐户密钥。
如需更多信息,请参阅从 GKE 工作负载(Google Cloud 文档)向 Google Cloud API 进行身份验证。
-
您有工件 registry 读取器 Identity and Access Management (IAM)角色,角色
roles/artifactregistry.reader
用于关联的服务帐户。
流程
-
在 RHACS 门户中,点 Platform Configuration
Integrations。 - 在 Image Integrations 部分中,点 Google Artifact Registry。
- 要创建新集成,请单击 New integration。
- 输入您的集成名称。
- 输入 registry 的地址。
- 可选:输入 Google Cloud 项目的名称。RHACS 将镜像与 registry 的项目匹配。如果没有指定项目名称,RHACS 会将镜像与所有项目匹配。
- 可选: 选择 Use workload identity 复选框来使用工作负载身份进行身份验证。
- 输入您的服务帐户密钥进行验证。
- 可选: 选择 Create integration without test 复选框来创建集成,而无需测试到 registry 的连接。
- 可选: 要测试您与所选 registry 的集成,请点 Test。
- 要保存集成,请点击 Save。
1.3.5. 手动配置 Microsoft Azure Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Microsoft Azure Container Registry 集成。
先决条件
您有 Azure 管理或 Azure 工作负载身份。
有关 Azure 管理身份的更多信息,请参阅 Azure 资源管理的身份是什么?(Microsoft Azure 文档)。
有关 Azure 工作负载身份的更多信息,请参阅 工作负载身份联邦 (Microsoft Azure 文档)。
- 您有包含容器 registry 的范围的 Reader 角色。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Microsoft Azure Container Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名和密码.。
- 可选:如果要使用 Azure 管理或工作负载身份进行身份验证,请选择 Use workload identity 复选框。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.6. 手动配置 JFrog Artifactory 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 JFrog Artifactory 集成。
先决条件
- 您必须有一个用户名和密码才能使用 JFrog Artifactory 进行身份验证。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 JFrog Artifactory。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名和密码.。
- 如果您在连接到 registry 时没有使用 TLS 证书,请选择 Disable TLS 证书验证(不安全)。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.7. 手动配置 Quay Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes (RHACS)与 Quay Container Registry 集成。您可以使用以下方法与 Quay 集成:
- 与 Quay 公共存储库(registry)集成:此方法不需要身份验证。
与 Quay 私有 registry 集成:
- 通过使用机器人帐户:此方法要求您创建一个机器人帐户以用于 Quay (推荐)。如需更多信息,请参阅 Quay 文档中的 Red Hat Quay Robot 帐户概述 主题。
- 使用带有外部 secret 的无密钥身份验证:此方法使用 OIDC 联邦和外部 Secret Operator (ESO)。如需更多信息,请参阅"使用外部 secret 启用 Quay registry 无密钥身份验证"。
- 与 Quay 集成以使用 Quay 扫描程序而不是 RHACS 扫描程序 :此方法使用 API 并需要一个 OAuth 令牌进行身份验证。如需更多信息,请参阅"添加资源"部分中的"与 Quay Container Registry 集成以扫描镜像"。
先决条件
- 要使用 Quay 私有 registry 进行身份验证,您需要与机器人帐户或 OAuth 令牌(已弃用)关联的凭据。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Red Hat Quay.io。
- 点 New integration。
- 输入集成名称。
输入 端点 或 registry 的地址。
- 如果您要与 Quay 公共存储库集成,在 Type 下选择 Registry,然后进入下一步。
如果您要与 Quay 私有 registry 集成,在 Type 下选择 Registry 并在以下字段中输入信息:
-
机器人 用户名 :如果您使用 Quay 机器人帐户访问 registry,以 <
namespace>+<accountname> 格式输入用户名
。 - 机器人 密码 :如果您使用 Quay 机器人帐户访问 registry,请输入机器人帐户用户名的密码。
- OAuth 令牌 :如果您使用 OAuth 令牌(已弃用)访问 registry,请在此字段中输入它。
-
机器人 用户名 :如果您使用 Quay 机器人帐户访问 registry,以 <
- 可选: 如果您在连接到 registry 时没有使用 TLS 证书,请选择 Disable TLS certificate validation (insecure)。
- 可选: 要创建集成但不测试,请选择 Create integration without testing。
- 选择 Save。
如果您要编辑 Quay 集成,但不想更新您的凭证,请验证不选择 Update 存储的凭证。
1.3.8. 使用外部 secret 启用 Quay registry 密钥身份验证 复制链接链接已复制到粘贴板!
要验证存储在 Quay 私有 registry 中的镜像,您可以将 RHACS 配置为在 Red Hat Quay registry 中使用无密钥身份验证。此方法使用外部 Secret Operator (ESO)和 OpenID Connect (OIDC)联邦。
先决条件
- 您已在 RHACS 中启用了委托扫描。如需更多信息,请参阅"添加资源"部分中的"访问委派的镜像扫描"。
-
为 Secured Cluster
centralEndpoint: central.stackrox:443
或类似配置的 Central 端点。 在 Red Hat Quay 中创建的、配置了 OIDC 联合的机器人帐户。
- Quay 机器人身份联邦配置中的签发者 URL 必须与 OpenShift Container Platform 集群的服务帐户令牌签发者匹配。
-
子声明
主题必须与集群中配置的服务帐户名称和命名空间匹配。
如需更多信息,请参阅 Quay 文档中的 Red Hat Quay Robot 帐户概述 主题。
流程
在 Quay 实例中,导航到您的机器人帐户设置并配置 OIDC 联邦。
确保正确设置 Issuer URL 和 Subject 字段,以匹配 ESO 使用的 OpenShift Container Platform 服务帐户。如需更多信息,请参阅 Red Hat Quay 文档中的 设置机器人帐户联邦 主题。
如果集群中没有 ESO,请使用 Helm 或其他首选方法安装它。
helm repo add external-secrets https://charts.external-secrets.io
$ helm repo add external-secrets https://charts.external-secrets.io helm install external-secrets \ external-secrets/external-secrets \ -n external-secrets \ --create-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义并应用以下 Kubernetes 资源:本例创建一个
ServiceAccount
资源、由 ESO 安装提供的QuayAccessToken
生成器资源,以及一个使用生成器在指定命名空间中创建kubernetes.io/dockerconfigjson
secret 的ExternalSecret
资源。重要更新
QuayAccessToken
资源中的robotAccount
字段,以匹配您的 Quay 机器人帐户的名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
keyless+account
替换为 Quay 机器人帐户的实际名称。
验证
确认 ESO 已成功创建了指定命名空间中名为
quay-credentials
的 secret,类型为kubernetes.io/dockerconfigjson
。kubectl get secret quay-credentials -n quay -o yaml
$ kubectl get secret quay-credentials -n quay -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
无密钥验证方法支持使用 委派的扫描进行镜像扫描。
运行以下命令来使用委派的镜像扫描:
roxctl image scan <image_name> --namespace=<namespace_where_secret_exists>
$ roxctl image scan <image_name> --namespace=<namespace_where_secret_exists>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定创建 secret 的镜像名称和命名空间。
1.3.9. 手动配置 GitHub Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 GitHub Container Registry (GHCR)集成。
先决条件
-
您需要一个 GitHub 帐户和个人访问令牌,至少具有
packages:read
权限。如需更多信息 ,请参阅使用容器 registry。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分中,选择 GitHub Container Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名 :GitHub 用户名。留空,以便进行匿名访问。
- GitHub Token: GitHub 个人访问令牌。留空,以便进行匿名访问。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。启用这个选项以允许匿名访问。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.10. 手动配置 IBM Cloud Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 IBM Cloud Container Registry 集成。
先决条件
- 您必须有一个 API 密钥才能使用 IBM Cloud Container Registry 进行身份验证。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 IBM Cloud Container Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- API 密钥.
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.11. 手动配置 Red Hat Container Registry 复制链接链接已复制到粘贴板!
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Red Hat Container Registry 集成。
先决条件
- 您必须有一个用户名和密码才能使用 Red Hat Container Registry 进行身份验证。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Red Hat Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名和密码.。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。