×

您可以将Microsoft Entra ID(以前称为Azure Active Directory)配置为AWS上的Red Hat OpenShift Service (ROSA) 的集群身份提供者。

本教程指导您完成以下任务:

  1. 在Entra ID中注册新的身份验证应用程序。

  2. 配置Entra ID中的应用程序注册以在令牌中包含可选和组声明。

  3. 配置AWS上的Red Hat OpenShift Service集群以使用Entra ID作为身份提供者。

  4. 向单个组授予额外权限。

先决条件

在Entra ID中注册新的身份验证应用程序

要在Entra ID中注册您的应用程序,首先创建OAuth回调URL,然后注册您的应用程序。

步骤
  1. 通过更改指定的变量并运行以下命令来创建集群的OAuth回调URL:

    记住保存此回调URL;稍后流程中将需要它。

    $ domain=$(rosa describe cluster -c <cluster_name> | grep "DNS" | grep -oE '\S+.openshiftapps.com')
    $ echo "OAuth callback URL: https://oauth-openshift.apps.$domain/oauth2callback/AAD"

    OAuth回调URL末尾的“AAD”目录必须与您稍后在此过程中设置的OAuth身份提供程序名称匹配。

  2. 通过登录Azure门户并选择应用程序注册边栏选项卡来创建Entra ID应用程序。然后,选择**新建注册**以创建新的应用程序。

    Azure Portal - App registrations blade

  3. 命名应用程序,例如openshift-auth

  4. 从“重定向URI”下拉菜单中选择**Web**,并输入您在上一步中检索到的OAuth回调URL的值。

  5. 提供所需信息后,单击**注册**以创建应用程序。

    Azure Portal - Register an application page

  6. 选择**证书和机密**子边栏选项卡,然后选择**新建客户端机密**。

    Azure Portal - Certificates and secrets page

  7. 完成所需详细信息并存储生成的客户端机密值。此机密在稍后流程中需要。

    初始设置后,您将无法看到客户端机密。如果您没有记录客户端机密,则必须生成一个新的。

    Azure Portal - Add a Client Secret page

  8. 选择**概述**子边栏选项卡,并记下应用程序(客户端)ID目录(租户)ID。您在未来的步骤中将需要这些值。

    Azure Portal - Copy Client Secret page

配置Entra ID中的应用程序注册以包含可选和组声明

为了让AWS上的Red Hat OpenShift Service拥有足够的创建用户帐户的信息,您必须配置Entra ID以提供两个可选声明:emailpreferred_username。有关Entra ID中可选声明的更多信息,请参阅Microsoft文档

除了单个用户身份验证之外,AWS上的Red Hat OpenShift Service还提供组声明功能。此功能允许OpenID Connect (OIDC)身份提供者(如Entra ID)提供用户的组成员身份,以便在AWS上的Red Hat OpenShift Service中使用。

配置可选声明

您可以在Entra ID中配置可选声明。

  1. 单击**令牌配置**子边栏选项卡,然后选择**添加可选声明**按钮。

    Azure Portal - Add Optional Claims Page

  2. 选择**ID**单选按钮。

    Azure Portal - Add Optional Claims - Token Type

  3. 选择**email**声明复选框。

    Azure Portal - Add Optional Claims - email

  4. 选择preferred_username声明复选框。然后,单击**添加**以配置您的Entra ID应用程序的**email**和**preferred_username**声明。

    Azure Portal - Add Optional Claims - preferred_username

  5. 页面顶部会出现一个对话框。按照提示启用必要的Microsoft Graph权限。

    Azure Portal - Add Optional Claims - Graph Permissions Prompt

配置组声明(可选)

配置Entra ID以提供组声明。

步骤
  1. 在**令牌配置**子边栏选项卡中,单击**添加组声明**。

    Azure Portal - Add Groups Claim Page

  2. 要为您的Entra ID应用程序配置组声明,请选择**安全组**,然后单击**添加**。

    在此示例中,组声明包括用户所属的所有安全组。在实际生产环境中,请确保组声明仅包含适用于AWS上的Red Hat OpenShift Service的组。

    Azure Portal - Edit Groups Claim Page

配置AWS上的Red Hat OpenShift Service集群以使用Entra ID作为身份提供者

您必须配置AWS上的Red Hat OpenShift Service以使用Entra ID作为其身份提供者。

尽管ROSA允许使用OpenShift集群管理器配置身份提供者,但请使用ROSA CLI将集群的OAuth提供者配置为使用Entra ID作为其身份提供者。在配置身份提供者之前,请设置身份提供者配置所需的变量。

步骤
  1. 通过运行以下命令来创建变量:

    $ CLUSTER_NAME=example-cluster (1)
    $ IDP_NAME=AAD (2)
    $ APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy (3)
    $ CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (4)
    $ TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz (5)
    1 将其替换为您的ROSA集群的名称。
    2 将其替换为您在此过程中前面生成的OAuth回调URL中使用的名称。
    3 将其替换为应用程序(客户端)ID。
    4 将其替换为客户端机密。
    5 将其替换为目录(租户)ID。
  2. 通过运行以下命令来配置集群的OAuth提供者。如果您启用了组声明,请确保使用--group-claims groups参数。

    • 如果您启用了组声明,请运行以下命令:

      $ rosa create idp \
      --cluster ${CLUSTER_NAME} \
      --type openid \
      --name ${IDP_NAME} \
      --client-id ${APP_ID} \
      --client-secret ${CLIENT_SECRET} \
      --issuer-url https://login.microsoftonline.com/${TENANT_ID}/v2.0 \
      --email-claims email \
      --name-claims name \
      --username-claims preferred_username \
      --extra-scopes email,profile \
      --groups-claims groups
    • 如果您没有启用组声明,请运行以下命令:

      $ rosa create idp \
      --cluster ${CLUSTER_NAME} \
      --type openid \
      --name ${IDP_NAME} \
      --client-id ${APP_ID} \
      --client-secret ${CLIENT_SECRET} \
      --issuer-url https://login.microsoftonline.com/${TENANT_ID}/v2.0 \
      --email-claims email \
      --name-claims name \
      --username-claims preferred_username \
      --extra-scopes email,profile

几分钟后,集群身份验证操作符将协调您的更改,您可以使用Entra ID登录到集群。

向单个用户和组授予额外权限

第一次登录时,您可能会注意到您的权限非常有限。默认情况下,AWS上的Red Hat OpenShift Service仅允许您在集群中创建新的项目或命名空间。其他项目无法查看。

您必须向单个用户和组授予这些额外权限。

向单个用户授予额外权限

AWS上的Red Hat OpenShift Service包含大量预配置的角色,包括授予对集群的完全访问权限和控制权的cluster-admin角色。

步骤
  • 通过运行以下命令来授予用户对cluster-admin角色的访问权限:

    $ rosa grant user cluster-admin \
        --user=<USERNAME> (1)
        --cluster=${CLUSTER_NAME}
    1 提供您希望拥有集群管理员权限的Entra ID用户名。

向单个组授予额外权限

如果您选择启用组声明,则集群OAuth提供者将使用组ID自动创建或更新用户的组成员身份。集群OAuth提供者不会自动为创建的组创建RoleBindingsClusterRoleBindings;您有责任使用您自己的流程来创建这些绑定。

要授予自动生成的组对cluster-admin角色的访问权限,您必须向组ID创建ClusterRoleBinding

步骤
  • 通过运行以下命令来创建ClusterRoleBinding

    $ oc create clusterrolebinding cluster-admin-group \
    --clusterrole=cluster-admin \
    --group=<GROUP_ID> (1)
    1 提供您希望拥有集群管理员权限的Entra ID组ID。

    现在,指定组中的任何用户都会自动获得cluster-admin访问权限。

其他资源

有关如何在 AWS 上的 Red Hat OpenShift 服务中使用 RBAC 定义和应用权限的更多信息,请参阅AWS 上 Red Hat OpenShift 服务文档