×

OpenID Connect (OIDC) 使用安全令牌服务 (STS) 允许客户端提供 Web 身份令牌以访问多个服务。当客户端使用 STS 登录服务时,令牌会针对 OIDC 身份提供程序进行验证。

OIDC 协议使用包含身份验证客户端身份所需信息的配置 URL。该协议会使用提供程序验证客户端并使其登录所需的凭据来响应提供程序。

AWS 上的 Red Hat OpenShift 服务集群使用 STS 和 OIDC 向集群内操作员授予访问必要 AWS 资源的权限。

了解 OIDC 验证选项

OIDC 验证有三种选项

  • 未注册的,托管的 OIDC 配置

    在集群安装过程中会为您创建一个未注册的托管 OIDC 配置。该配置托管在 Red Hat 的 AWS 帐户下。此选项不会为您提供链接到 OIDC 配置的 ID,因此您只能在一个集群上使用此类型的 OIDC 配置。

  • 已注册的,托管的 OIDC 配置

    在开始创建集群之前,您可以创建一个已注册的托管 OIDC 配置。此配置与未注册的托管 OIDC 配置一样,托管在 Red Hat 的 AWS 帐户下。当您将此选项用于您的 OIDC 配置时,您将收到一个链接到 OIDC 配置的 ID。Red Hat 使用此 ID 来识别颁发者 URL 和私钥。然后,您可以使用此 URL 和私钥来创建身份提供程序和 Operator 角色。这些资源是使用 Identity and Access Management (IAM) AWS 服务在您的 AWS 帐户下创建的。您还可以在集群创建过程中使用 OIDC 配置 ID。

  • 已注册的,非托管的 OIDC 配置

    您可以在开始创建集群之前创建已注册的非托管 OIDC 配置。此配置托管在您的 AWS 帐户下。当您使用此选项时,您负责管理私钥。您可以通过使用 AWS Secrets Manager (SM) 服务将私钥存储在 AWS 密钥文件中以及托管配置的颁发者 URL 来向 Red Hat OpenShift 集群管理器注册配置。您可以使用 AWS 上的 Red Hat OpenShift 服务 (ROSA) CLI,`rosa`,使用 `rosa create oidc-config --managed=false` 命令创建已注册的非托管 OIDC 配置。此命令会在您的帐户下创建和托管配置,并创建必要的文 件和私有密钥。此命令还会向 OpenShift 集群管理器注册配置。

已注册的选项可在您开始创建集群之前用于创建所需的 IAM 资源。此选项可缩短安装时间,因为在集群创建过程中存在一个等待期,在此期间安装会暂停,直到您创建 OIDC 提供程序和 Operator 角色。

对于 ROSA Classic,您可以使用任何 OIDC 配置选项。如果您使用的是带有 HCP 的 ROSA,则必须创建已注册的 OIDC 配置,无论是托管的还是非托管的。您可以将已注册的 OIDC 配置与其他集群共享。此共享配置的功能还允许您共享提供程序和 Operator 角色。

不建议在生产集群之间重用 OIDC 配置、OIDC 提供程序和 Operator 角色,因为身份验证验证将贯穿所有这些集群。Red Hat 建议仅在非生产测试环境中重用资源。

创建 OpenID Connect 配置

当使用 Red Hat 托管的集群时,您可以使用 AWS 上的 Red Hat OpenShift 服务 (ROSA) CLI,`rosa`,创建托管的或非托管的 OpenID Connect (OIDC) 配置。托管的 OIDC 配置存储在 Red Hat 的 AWS 帐户中,而生成的非托管 OIDC 配置存储在您的 AWS 帐户中。OIDC 配置已注册以用于 OpenShift 集群管理器。创建非托管 OIDC 配置时,CLI 会为您提供私钥。

创建 OpenID Connect 配置

当使用 AWS 上的 Red Hat OpenShift 服务集群时,您可以在创建集群之前创建 OpenID Connect (OIDC) 配置。此配置已注册以用于 OpenShift 集群管理器。

先决条件
  • 您已在安装主机上安装并配置了最新的 AWS 上的 Red Hat OpenShift 服务 (ROSA) CLI,`rosa`。

步骤
  1. 要与 AWS 资源一起创建您的 OIDC 配置,请运行以下命令

    $ 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` 提供此值,否则必须根据 `aws` CLI 输出确定这些值才能使用 `--mode manual`。

  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集群管理器向/oidc_configs发出请求来注册未管理的OIDC配置。您会在响应中收到一个ID。使用此ID创建集群。

raw-files

允许您提供私有RSA密钥的原始文件。此密钥名为rosa-private-key-oidc-<长度为4的随机标签>.key。您还会收到一个发现文档,名为discovery-document-oidc-<长度为4的随机标签>.json,以及一个JSON Web密钥集,名为jwks-oidc-<长度为4的随机标签>.json

您可以使用这些文件来设置端点。此端点使用发现文档响应/.well-known/openid-configuration,使用JSON Web密钥集响应keys.json。私钥以明文形式存储在Amazon Web Services (AWS) Secrets Manager Service (SMS)中。

示例
$ rosa create oidc-config --raw-files
mode

允许您指定创建OIDC配置的模式。使用manual选项,您将收到在S3存储桶中设置OIDC配置的AWS命令。此选项将私钥存储在Secrets Manager中。使用manual选项时,OIDC端点URL是S3存储桶的URL。您必须检索Secrets Manager ARN才能向OpenShift集群管理器注册OIDC配置。

使用auto选项时,您会收到与manual模式相同的OIDC配置和AWS资源。这两个选项之间的一个显著区别是,使用auto选项时,ROSA会调用AWS,因此您无需执行任何其他操作。OIDC端点URL是S3存储桶的URL。CLI会检索Secrets Manager ARN,向OpenShift集群管理器注册OIDC配置,并报告用户可以运行的第二个rosa命令以继续创建STS集群。

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

创建一个托管在Red Hat的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'

使用CLI创建OIDC提供程序

您可以使用Red Hat OpenShift Service on AWS (ROSA) CLI,rosa,在您的AWS账户中创建一个托管的OIDC提供程序。

先决条件
  • 您已安装最新版本的ROSA CLI。

步骤
  • 要创建OIDC提供程序,可以使用未注册或已注册的OIDC配置。

    • 未注册的OIDC配置要求您通过集群创建OIDC提供程序。运行以下命令以创建OIDC提供程序

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

      使用manual模式时,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命令时,会自动生成指纹。有关将指纹与AWS Identity and Access Management (IAM) OIDC身份提供程序一起使用的更多信息,请参阅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'

其他资源