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 代理,如 kiamkube2iam
  • 访问密钥必须具有 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

流程

  1. 在 RHACS 门户网站中,导航至 Platform Configuration Integrations
  2. Image Integrations 部分下,选择 Amazon ECR
  3. 单击 New integration,或者点击自动生成的集成之一将其打开,然后单击 Edit
  4. 输入或修改以下字段的详情:

    1. 更新已存储的凭据 :在修改集成时没有更新凭证(如访问密钥和密码)时清除此框。
    2. 集成名称 :集成的名称。
    3. Registry ID :registry 的 ID。
    4. 端点 :registry 的地址。选择 AssumeRole 选项时不启用此字段。
    5. region :registry 的区域,如 us-west-1
  5. 如果使用 IAM,请选择 Use Container IAM role。否则,清除 Use Container IAM 角色 框,并输入 Access key IDSecret access key
  6. 如果使用 AssumeRole 身份验证,请选择 Use AssumeRole,并输入以下字段的详情:

    1. AssumeRole ID: 要假定的角色 ID。
    2. AssumeRole External ID (可选):如果您使用 外部 ID 和 AssumeRole,您可以在这里输入它。
  7. 选择 Create integration without testing 来创建集成,而不测试与 registry 的连接。
  8. 选择 Test 以测试与所选 registry 集成是否正常工作。
  9. 选择 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 之前,您必须首先对其进行配置。

流程

  1. 为您的 EKS 集群启用 IAM OIDC 供应商:

    $ eksctl utils associate-iam-oidc-provider --cluster <cluster name> --approve
    Copy to Clipboard Toggle word wrap
  2. 为您的 EKS 集群 创建一个 IAM 角色
  3. 将新创建的角色与服务帐户关联:

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

    $ kubectl -n stackrox delete pod -l app=central
    Copy to Clipboard Toggle word wrap
  5. 将角色分配给允许角色根据需要假定另一个角色的策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "arn:aws:iam::<ecr-registry>:role/<assumerole-readonly>" 
    1
    
            }
        ]
    }
    Copy to Clipboard Toggle word wrap
    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"
        }
      ]
    }
    Copy to Clipboard Toggle word wrap
    1
    & lt;role-name > 应与之前创建的新角色匹配。

要在没有容器 IAM 的情况下使用 AssumeRole,您必须使用一个 access 和一个 secret 密钥作为 带有编程访问的 AWS 用户进行身份验证

流程

  1. 根据 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
      
              }
          ]
      }
      Copy to Clipboard Toggle word wrap
      1
      <assumerole-readonly > 替换为您要假定的角色。
  2. 通过在 Principal 字段中包含用户 ARN 来配置角色的信任关系:

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

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

流程

  1. 在 RHACS 门户网站中,导航至 Platform Configuration Integrations
  2. Image Integrations 部分下,选择 Amazon ECR
  3. New Integration
  4. 输入以下字段的详情:

    1. 集成名称 :集成的名称。
    2. Registry ID :registry 的 ID。
    3. region :registry 的区域,如 us-west-1
  5. 如果使用 IAM,请选择 Use container IAM role。否则,清除 Use custom IAM 角色 框,并输入 Access key IDSecret access key
  6. 如果使用 AssumeRole,请选择 Use AssumeRole,并输入以下字段的详情:

    1. AssumeRole ID: 要假定的角色 ID。
    2. AssumeRole External ID (可选):如果您使用 外部 ID 和 AssumeRole,您可以在这里输入它。
  7. 选择 Test 以测试与所选 registry 集成是否正常工作。
  8. 选择 Save
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat