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
- 为您的 EKS 集群创建一个 IAM 角色。
将新创建的角色与服务帐户关联:
$ kubectl -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role-name>
重启 Central 以应用更改。
$ kubectl -n stackrox delete pod -l app=central
将角色分配给允许角色根据需要假设另一个角色的策略:
{ "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>
替换为您要假定的角色。
更新您要假设的角色的信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<ecr-registry>:role/<role-name>" 1 ] }, "Action": "sts:AssumeRole" } ] }
- 1
<role-name>
应该与之前创建的新角色匹配。
1.3.2.1.2. 在没有容器 IAM 的情况下配置 AssumeRole
要在没有容器 IAM 的情况下使用 AssumeRole,您必须使用访问和 secret 密钥以 AWS 用户身份进行身份验证,并具有编程访问。
流程
根据 AssumeRole 用户与 ECR registry 位于同一个帐户中或在不同的帐户中,您必须:
如果要假设角色的用户与 ECR registry 位于同一个帐户中,则创建带有所需权限的新角色。
注意在创建角色时,您可以根据需要选择任何可信实体。但是,您必须在创建后修改它。
或者,您必须提供访问 ECR registry 的权限,并在用户位于与 ECR registry 不同的帐户中时定义其信任关系:
{ "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>
替换为您要假定的角色。
通过在 Principal 字段中包含用户 ARN 来配置角色的信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<ecr-registry>:user/<role-name>" ] }, "Action": "sts:AssumeRole" } ] }
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 与 Google Container Registry (GCR)集成。
先决条件
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Google Container Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 键入 :选择 Registry。
- registry 端点 :registry 的地址。
- 项目 :Google Cloud 项目名称。
- 使用工作负载身份 :检查 使用工作负载身份进行身份验证。
- 服务帐户密钥(JSON) :用于身份验证的服务帐户密钥。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.4. 手动配置 Google Artifact Registry
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Google Artifact Registry 集成。
先决条件
- 您需要 工作负载身份 或服务帐户密钥进行身份验证。
-
关联的服务帐户必须具有 Artifact Registry Reader Identity and Access Management (IAM)角色
roles/artifactregistry.reader
。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Google Artifact Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- Registry 端点 :registry 的地址。
- 项目 :Google Cloud 项目名称。
- 使用工作负载身份 :检查 使用工作负载身份进行身份验证。
- 服务帐户密钥(JSON) :用于身份验证的服务帐户密钥。
- 选择 Create integration without testing 来创建集成,而不测试到 registry 的连接。
- 选择 Test 来测试与所选 registry 的集成是否正常工作。
- 选择 Save。
1.3.5. 手动配置 Microsoft Azure Container Registry
您可以将 Red Hat Advanced Cluster Security for Kubernetes 与 Microsoft Azure Container Registry 集成。
先决条件
- 您必须有用户名和密码进行验证。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Integrations。 - 在 Image Integrations 部分下,选择 Microsoft Azure Container Registry。
- 点 New integration。
输入以下字段的详情:
- 集成名称 :集成的名称。
- 端点 :registry 的地址。
- 用户名和密码.。
- 选择 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 文档。
- 与 Quay 集成以使用 Quay 扫描程序而不是 RHACS 扫描程序 :此方法使用 API 并需要一个 OAuth 令牌进行身份验证。请参阅"Additional Resources"部分的"与 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 存储的凭证。