$ 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"
您可以将Microsoft Entra ID(以前称为Azure Active Directory)配置为AWS上的Red Hat OpenShift Service (ROSA) 的集群身份提供者。
本教程指导您完成以下任务:
在Entra ID中注册新的身份验证应用程序。
配置Entra ID中的应用程序注册以在令牌中包含可选和组声明。
配置AWS上的Red Hat OpenShift Service集群以使用Entra ID作为身份提供者。
向单个组授予额外权限。
您已按照Microsoft文档创建了一组安全组并分配了用户。
要在Entra ID中注册您的应用程序,首先创建OAuth回调URL,然后注册您的应用程序。
通过更改指定的变量并运行以下命令来创建集群的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身份提供程序名称匹配。
通过登录Azure门户并选择应用程序注册边栏选项卡来创建Entra ID应用程序。然后,选择**新建注册**以创建新的应用程序。
命名应用程序,例如openshift-auth
。
从“重定向URI”下拉菜单中选择**Web**,并输入您在上一步中检索到的OAuth回调URL的值。
提供所需信息后,单击**注册**以创建应用程序。
选择**证书和机密**子边栏选项卡,然后选择**新建客户端机密**。
完成所需详细信息并存储生成的客户端机密值。此机密在稍后流程中需要。
初始设置后,您将无法看到客户端机密。如果您没有记录客户端机密,则必须生成一个新的。 |
选择**概述**子边栏选项卡,并记下应用程序(客户端)ID
和目录(租户)ID
。您在未来的步骤中将需要这些值。
为了让AWS上的Red Hat OpenShift Service拥有足够的创建用户帐户的信息,您必须配置Entra ID以提供两个可选声明:email
和preferred_username
。有关Entra ID中可选声明的更多信息,请参阅Microsoft文档。
除了单个用户身份验证之外,AWS上的Red Hat OpenShift Service还提供组声明功能。此功能允许OpenID Connect (OIDC)身份提供者(如Entra ID)提供用户的组成员身份,以便在AWS上的Red Hat OpenShift Service中使用。
您可以在Entra ID中配置可选声明。
单击**令牌配置**子边栏选项卡,然后选择**添加可选声明**按钮。
选择**ID**单选按钮。
选择**email**声明复选框。
选择preferred_username
声明复选框。然后,单击**添加**以配置您的Entra ID应用程序的**email**和**preferred_username**声明。
页面顶部会出现一个对话框。按照提示启用必要的Microsoft Graph权限。
配置Entra ID以提供组声明。
在**令牌配置**子边栏选项卡中,单击**添加组声明**。
要为您的Entra ID应用程序配置组声明,请选择**安全组**,然后单击**添加**。
在此示例中,组声明包括用户所属的所有安全组。在实际生产环境中,请确保组声明仅包含适用于AWS上的Red Hat OpenShift Service的组。 |
您必须配置AWS上的Red Hat OpenShift Service以使用Entra ID作为其身份提供者。
尽管ROSA允许使用OpenShift集群管理器配置身份提供者,但请使用ROSA CLI将集群的OAuth提供者配置为使用Entra ID作为其身份提供者。在配置身份提供者之前,请设置身份提供者配置所需的变量。
通过运行以下命令来创建变量:
$ 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。 |
通过运行以下命令来配置集群的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提供者不会自动为创建的组创建RoleBindings
和ClusterRoleBindings
;您有责任使用您自己的流程来创建这些绑定。
要授予自动生成的组对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 服务文档。