3.4. 为 Operator 身份验证打开 ID Connect (OIDC)要求

对于使用 STS 的 ROSA 安装,您必须创建一个特定于集群的 OIDC 供应商,供集群 Operator 为您自己的 OIDC 供应商进行身份验证或创建自己的 OIDC 配置。

3.4.1. 使用 CLI 创建 OIDC 供应商

您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI 创建托管在 AWS 帐户中的 OIDC 供应商 rosa

前提条件

  • 已安装最新版本的 ROSA CLI。

流程

  • 要创建 OIDC 供应商,使用未注册或注册的 OIDC 配置。

    • 取消注册的 OIDC 配置要求您通过集群创建 OIDC 供应商。运行以下命令来创建 OIDC 供应商:

      $ rosa create oidc-provider --mode manual --cluster <cluster_name>
      注意

      使用手动模式时,aws 命令会被打印到终端中,供您查看。查看 aws 命令后,您必须手动运行。另外,您可以使用 rosa create 命令指定 --mode auto 来立即运行 aws 命令。

      命令输出

      aws iam create-open-id-connect-provider \
      	--url https://oidc.op1.openshiftapps.com/<oidc_config_id> \1
      	--client-id-list openshift sts.<aws_region>.amazonaws.com \
      	--thumbprint-list <thumbprint> 2

      1
      在集群创建后用于访问 OpenID Connect (OIDC)身份提供程序的 URL。
      2
      在运行 rosa create oidc-provider 命令时,会自动生成 thumbprint。有关在 AWS Identity and Access Management (IAM) OIDC 身份提供程序中使用 thumbprints 的更多信息,请参阅 AWS 文档
    • 注册的 OIDC 配置使用 OIDC 配置 ID。使用您的 OIDC 配置 ID 运行以下命令:

      $ rosa create oidc-provider --oidc-config-id <oidc_config_id> --mode auto -y

      命令输出

      I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName'
      I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/241rh9ql5gpu99d7leokhvkp8icnalpf'

3.4.2. 创建 OpenID 连接配置

当使用由红帽托管的集群时,您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI, rosa 创建受管或非受管 OpenID Connect (OIDC)配置。受管 OIDC 配置存储在红帽的 AWS 帐户中,而生成的非受管 OIDC 配置存储在 AWS 帐户中。OIDC 配置已注册到 OpenShift Cluster Manager。在创建非受管 OIDC 配置时,CLI 为您提供了私钥。

创建 OpenID 连接配置

当在 AWS 集群上使用 Red Hat OpenShift Service 时,您可以在创建集群时创建 OpenID Connect (OIDC)配置。此配置已注册到 OpenShift Cluster Manager。

前提条件

  • 您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa

流程

  1. 要创建 OIDC 配置和 AWS 资源,请运行以下命令:

    $ rosa create oidc-config --mode=auto --yes

    此命令返回以下信息:

    输出示例

    ? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes
    I: Setting up managed OIDC configuration
    I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice:
    	rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b
    If you are going to create a Hosted Control Plane cluster please include '--hosted-cp'
    I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName'
    ? Create the OIDC provider? Yes
    I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'

    在创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为 --mode auto 提供这个值,否则您必须根据 --mode manualaws CLI 输出来确定这些值。

  2. 可选: 您可以将 OIDC 配置 ID 保存为变量,以便稍后使用。运行以下命令来保存变量:

    $ export OIDC_ID=<oidc_config_id>1
    1
    在上面的示例输出中,OIDC 配置 ID 是 13cdr6b。
    • 运行以下命令,查看变量的值:

      $ echo $OIDC_ID

      输出示例

      13cdr6b

验证

  • 您可以列出与用户机构关联的集群可用的 OIDC 配置。运行以下命令:

    $ rosa list oidc-config

    输出示例

    ID                                MANAGED  ISSUER URL                                                             SECRET ARN
    2330dbs0n8m3chkkr25gkkcd8pnj3lk2  true     https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2
    233hvnrjoqu14jltk6lhbhf2tj11f8un  false    https://oidc-r7u1.s3.us-east-1.amazonaws.com                           aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN

创建自己的 OpenID Connect 配置的参数选项

以下选项可以添加到 rosa create oidc-config 命令中。所有这些参数都是可选的。运行没有参数的 rosa create oidc-config 命令会创建一个非受管 OIDC 配置。

注意

您需要通过 OpenShift Cluster Manager 将请求发布到 /oidc_configs 来注册非受管 OIDC 配置。您在响应中收到 ID。使用此 ID 创建集群。

raw-files

允许您为私有 RSA 密钥提供原始文件。这个密钥名为 rosa-private-key-oidc-<random_label_of_length_4>.key。您还收到名为 discovery-document-oidc-<random_label_of_length_4>.json 的发现文档,以及名为 jwks-oidc-<random_label_of_length_4>.json 的发现文档。

您可以使用这些文件来设置端点。此端点会响应 /.well-known/openid-configuration,它带有发现文档和带有 JSON Web Key Set 的 keys.json。私钥以纯文本形式存储在 Amazon Web Services (AWS) Secrets Manager Service (SMS)中。

示例

$ rosa create oidc-config --raw-files

模式

允许您指定模式来创建 OIDC 配置。使用 manual 选项,您可以接收在 S3 存储桶中设置 OIDC 配置的 AWS 命令。这个选项将私钥存储在 Secrets Manager 中。使用 手动 选项,OIDC Endpoint URL 是 S3 存储桶的 URL。您必须检索 Secret Manager ARN,以便在 OpenShift Cluster Manager 中注册 OIDC 配置。

在使用 auto 选项时,您会收到与 手动模式 相同的 OIDC 配置和 AWS 资源。两个选项之间的显著区别在于,在使用 auto 选项时,ROSA 调用 AWS,因此您不需要采取任何进一步的操作。OIDC 端点 URL 是 S3 存储桶的 URL。CLI 检索 Secrets Manager ARN,将 OIDC 配置注册到 OpenShift Cluster Manager,并报告用户可以运行的第二个 rosa 命令继续创建 STS 集群。

示例

$ rosa create oidc-config --mode=<auto|manual>

Managed

创建托管在红帽 AWS 帐户下的 OIDC 配置。这个命令会创建一个私钥,它直接使用 OIDC 配置 ID 响应,供您在创建 STS 集群时使用。

示例

$ rosa create oidc-config --managed

输出示例

W: For a managed OIDC Config only auto mode is supported. However, you may choose the provider creation mode
? OIDC Provider creation mode: auto
I: Setting up managed OIDC configuration
I: Please run the following command to create a cluster with this oidc config
rosa create cluster --sts --oidc-config-id 233jnu62i9aphpucsj9kueqlkr1vcgra
I: Creating OIDC provider using 'arn:aws:iam::242819244:user/userName'
? Create the OIDC provider? Yes
I: Created OIDC provider with ARN 'arn:aws:iam::242819244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/233jnu62i9aphpucsj9kueqlkr1vcgra'