搜索

第 18 章 使用简短令牌集成 RHACS

download PDF

使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS),您可以使用简短的令牌对所选云供应商 API 进行身份验证。RHACS 支持以下云供应商集成:

  • 使用安全令牌服务(STS)的 Amazon Web Services (AWS)
  • 使用工作负载身份联邦的 Google Cloud Platform (GCP)

RHACS 仅在以下平台上安装 RHACS 时支持短期令牌集成:

  • AWS 上的 Elastic Kubernetes Service (EKS)
  • GCP 上的 Google Kubernetes Engine (GKE)
  • OpenShift Container Platform

要激活短期身份验证,您必须在 Kubernetes 或 OpenShift Container Platform 集群和云供应商之间建立信任。对于 EKS 和 GKE 集群,请使用云供应商元数据服务。对于 OpenShift Container Platform 集群,需要一个包括 OpenShift Container Platform 服务帐户 signer 密钥的公开可用的 OpenID Connect (OIDC)供应商存储桶。

注意

您必须为每个使用短期令牌集成的 Central 集群建立对云供应商的信任。但是,如果您将委托扫描与短实时令牌镜像集成结合使用,还必须为 Sensor 集群建立信任。

18.1. 配置 AWS 安全令牌服务

RHACS 集成可以使用 安全令牌服务 对 Amazon Web Services 进行身份验证。在集成中启用 Use container IAM role 选项前,您必须使用 RHACS 配置 AssumeRole

重要

验证与 RHACS pod 关联的 AWS 角色必须具有集成所需的 IAM 权限。例如,若要设置与 Elastic Container Registry 集成的容器角色,请启用对 registry 的完整读取访问权限。如需有关 AWS IAM 角色的更多信息,请参阅 IAM 角色

18.1.1. 配置 Elastic Kubernetes Service (EKS)

当在 EKS 上运行 Red Hat Advanced Cluster Security for Kubernetes (RHACS)时,您可以通过 Amazon Secure Token Service 配置简短的令牌。

流程

  1. 运行以下命令,为您的 EKS 集群启用 IAM OpenID Connect (OIDC)供应商:

    $ eksctl utils associate-iam-oidc-provider --cluster <cluster_name> --approve
  2. 为您的 EKS 集群创建一个 IAM 角色
  3. 编辑角色的权限策略,并授予集成所需的权限。例如:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:BatchGetImage",
                    "ecr:DescribeImages",
                    "ecr:DescribeRepositories",
                    "ecr:GetAuthorizationToken",
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:ListImages"
                ],
                "Resource": "arn:aws:iam::<ecr_registry>:role/<role_name>"
            }
        ]
    }
  4. 更新您要假设的角色的信任关系:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::<ecr-registry>:role/<role_name>" 1
            ]
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    1
    & lt;role_name > 应该与您在前面的步骤中创建的新角色匹配。
  5. 输入以下命令将新创建的角色与服务帐户关联:

    $ oc -n stackrox annotate sa central eks.amazonaws.com/role-arn=arn:aws:iam::67890:role/<role_name> 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc
  6. 输入以下命令重启 Central pod 并应用更改:

    $ oc -n stackrox delete pod -l "app in (central,sensor)" 1
    1
    如果使用 Kubernetes,请输入 kubectl 而不是 oc

18.1.2. 配置 OpenShift Container Platform

在 OpenShift Container Platform 上运行 Red Hat Advanced Cluster Security for Kubernetes (RHACS)时,您可以通过 Amazon Secure Token Service 配置简短的令牌。

前提条件

  • 您必须使用 OpenShift Container Platform 服务帐户 signer 密钥有一个公共 OpenID Connect (OIDC)配置存储桶。要获取 OpenShift Container Platform 集群的 OIDC 配置,红帽建议 以手动模式为短期凭证使用 Cloud Credential Operator 的说明。
  • 您必须有权访问 AWS IAM 和创建和更改角色的权限。

流程

  1. 按照 创建 OpenID Connect (OIDC)身份提供程序 中的说明,创建 OpenShift Container Platform 集群的 Web 身份。使用 openshift 作为 Audience 的值。
  2. 为 OpenShift Container Platform 集群的 Web 身份 创建一个 IAM 角色
  3. 编辑角色的权限策略,并授予集成所需的权限。例如:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:BatchGetImage",
                    "ecr:DescribeImages",
                    "ecr:DescribeRepositories",
                    "ecr:GetAuthorizationToken",
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:ListImages"
                ],
                "Resource": "arn:aws:iam::<ecr_registry>:role/<role_name>"
            }
        ]
    }
  4. 更新您要假设的角色的信任关系:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "<oidc_provider_arn>"
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "<oidc_provider_name>:aud": "openshift"
                    }
                }
            }
        ]
    }
  5. 在 Central 或 Sensor 部署中设置以下 RHACS 环境变量:

    AWS_ROLE_ARN=<role_arn>
    AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/openshift/serviceaccount/token
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.