使用Microsoft Entra ID进行角色SSO的示例

本文提供一个以Microsoft Entra ID(原Azure AD)与阿里云进行角色SSO的示例。配置完成后,您将可以使用Microsoft Entra ID中的用户账号通过SAML SSO的方式登录到阿里云,并临时扮演阿里云RAM角色。

说明

在决定是否要在您的环境中配置角色SSO之前,请确认您要使用的云服务是否支持使用RAM角色:支持STS的云服务

应用场景

在本示例中,企业拥有一个阿里云账号和一个Microsoft Entra ID租户。在Microsoft Entra ID租户中,您有一个管理员用户(已授予全局管理员权限)和一个企业员工用户(UPNssotest01@example.onmicrosoft.com)。您希望经过配置,使企业员工用户(ssotest01@example.onmicrosoft.com)在登录Microsoft Entra ID后,通过角色SSO访问阿里云。

说明

配置角色SSO不影响RAM用户的正常登录,这意味着用户可以从IdP进行角色SSO登录到阿里云的RAM角色,也可以继续使用RAM用户登录(包括密码、用户SSO等登录方式)。当需要使用角色SSO进行登录时,您需要从IdP侧发起登录(这被称之为IdP发起的SSO)。角色SSO不支持从SP侧(即阿里云)发起登录。

另外需要注意的是,使用角色SSO并不需要在阿里云预先创建与IdP中匹配的用户。用户通过IdP发起SSO登录后,阿里云会根据SAML断言中指定的RAM角色,临时扮演该角色进行访问。

关于更多用户SSO与角色SSO的比较,请参见:SSO方式比较

准备工作

  • 您需要通过RAM管理员(已授予AliyunRAMFullAccess权限)执行本示例阿里云RAM中的操作。关于如何在RAM中创建用户并授权,请参见创建RAM用户RAM用户授权

  • 您需要通过Microsoft Entra ID管理员用户(已授予全局管理员权限)执行本示例Microsoft Entra ID中的操作。关于如何在Microsoft Entra ID中创建用户并授权,请参见Microsoft Entra ID文档

配置流程

在本示例中,Microsoft Entra ID是身份提供商(IdP),阿里云RAM是服务提供商(SP)。我们的配置核心是在IdPSP之间建立双向的信任关系,并将Microsoft Entra ID上的应用程序角色映射为在阿里云上配置的RAM角色。

  1. 步骤一:在 Microsoft Entra ID 创建企业应用。从Microsoft Entra ID应用程序库中使用Alibaba Cloud Service (Role-based SSO)应用模板来创建企业应用程序。

  2. 步骤二:在Microsoft Entra ID中配置SAML。在Microsoft Entra ID中将阿里云角色SSO配置为受信的SAML服务提供商

  3. 步骤三:在阿里云创建身份提供商。在阿里云RAM中将Microsoft Entra ID配置为受信的SAML身份提供商

  4. 步骤四:在阿里云创建RAM角色。在阿里云RAM中创建信任主体类型为身份提供商RAM角色。

  5. 步骤五:在 Microsoft Entra ID 创建应用角色并分配用户。在Microsoft Entra ID中为阿里云角色SSO应用程序创建和配置应用角色,并将测试用户分配给企业应用程序。

  6. 验证 SSO 登录。验证角色SSO登录是否可以正常工作。

步骤一:在 Microsoft Entra ID 创建企业应用

  1. 使用Microsoft Entra ID管理员用户登录Azure门户

  2. 在主页左上角,单击SSO_AAD_icon图标。

  3. 在左侧导航栏,选择Microsoft Entra ID > 管理 > 企业应用程序 > 所有应用程序

  4. 单击新建应用程序

  5. 搜索Alibaba Cloud Service (Role-based SSO)并单击选择。

  6. 输入应用名称,然后单击创建

    本示例中,使用默认应用名称Alibaba Cloud Service (Role-based SSO),您也可以自定义应用名称。

步骤二:在Microsoft Entra ID中配置SAML

  1. Alibaba Cloud Service (Role-based SSO)页面的左侧导航栏,选择管理 > 单一登录

  2. 单击SAML

  3. 配置SSO信息。

    1. 在页面左上角,单击上传元数据文件,选择阿里云的角色SSO元数据文件后,单击添加

      说明

      您可以在新的浏览器窗口中通过以下URL获取元数据文件: https://signin.aliyun.com/saml-role/sp-metadata.xml,并将元数据XML文件另存到本地。

    2. 基本SAML配置页面,配置以下信息,然后单击保存

      • 标识符(实体 ID):从上一步的元数据文件中自动读取entityID的值。

      • 回复 URL(断言使用者服务 URL):从上一步的元数据文件中自动读取Location的值。

      • 中继状态:用来配置角色SSO登录成功后跳转到的阿里云页面。此配置为可选项。

        说明

        出于安全原因,您只能填写阿里巴巴旗下的域名URL作为中继状态的值,例如:*.aliyun.com、*.hichina.com、*.yunos.com、*.taobao.com、*.tmall.com、*.alibabacloud.com、*.alipay.com,否则配置无效。若不配置,默认跳转到阿里云控制台首页。

    3. 属性和声明区域,单击编辑图标,检查是否存在以下两条声明。

      image

      如果不存在,请单击添加新的声明,按下表信息依次添加两条声明。

      名称

      命名空间

      源属性

      Role

      https://www.aliyun.com/SAML-Role/Attributes

      属性

      user.assignedroles

      RoleSessionName

      https://www.aliyun.com/SAML-Role/Attributes

      属性

      user.userprincipalname

    4. SAML证书区域,单击下载,获取联合元数据XML

步骤三:在阿里云创建身份提供商

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择集成管理 > SSO管理

  3. 角色SSO页签,单击SAML页签,然后单击创建身份提供商

  4. 创建身份提供商页面,输入身份提供商名称AAD

  5. 单击上传元数据,上传在步骤二:在Microsoft Entra ID中配置SAML中下载的联合元数据XML

  6. 单击创建身份提供商

  7. 点击创建好的身份提供商AAD基本信息中找到身份提供商的ARN并复制,方便后续配置。

步骤四:在阿里云创建RAM角色

  1. RAM控制台的左侧导航栏,选择身份管理 > 角色

  2. 角色页面,单击创建角色

  3. 创建角色页面的右上角,单击切换编辑器

  4. 在编辑器中指定具体的SAML身份提供商。

    编辑器支持可视化编辑和脚本编辑两种模式,您可以任选其一。以可视化编辑模式为例,您需要在主体中选择身份提供商类型,点击编辑。然后指定AAD为身份提供商,身份提供商类型选择SAML

  5. 创建角色对话框,输入角色名称(AADrole),然后单击确定完成角色创建。

  6. 点击创建好的RAM角色,在基本信息中找到角色的ARN并复制,方便后续配置。

说明

您可以根据需要为RAM角色添加权限。具体操作,请参见RAM角色授权

步骤五:在 Microsoft Entra ID 创建应用角色并分配用户

  1. Microsoft Entra ID中创建角色。

    1. 管理员用户登录Azure门户

    2. 在左侧导航栏,选择Microsoft Entra ID > 管理 > 应用注册

    3. 单击所有应用程序页签,然后单击Alibaba Cloud Service (Role-based SSO)

    4. 在左侧导航栏,选择管理 > 应用角色

    5. 单击创建应用程序角色

    6. 创建应用程序角色页面,配置以下角色信息,然后单击应用

      • 显示名称:本示例中输入Admin

      • 允许的成员类型:本示例中选中用户/组+应用程序

      • :输入RAM角色ARN和身份提供商ARN,两者之间用半角逗号(,)分隔。本示例中输入acs:ram::187125022722****:role/aadrole,acs:ram::187125022722****:saml-provider/AAD

        说明

        请注意这里的输入顺序必须是RAM角色ARN,身份提供商ARN。顺序错误会导致角色SSO登录失败。

      • 说明:输入备注信息。

      • 选中是否要启用此应用程序角色

    说明

    如果您需要在Microsoft Entra ID中创建多个角色,请重复上述步骤并设置不同的显示名称和应用程序角色值。

  2. 将用户分配给企业应用并指定角色。

    1. 在左侧导航栏,选择Microsoft Entra ID > 管理 > 企业应用程序 > 所有应用程序

    2. 名称列表下,单击Alibaba Cloud Service (Role-based SSO)

    3. 在左侧导航栏,选择管理 > 用户和组

    4. 单击左上角的添加用户/组

    5. 添加分配页面,选择目标用户,然后单击选择

    6. 确认选择的角色是否为Admin,如果不是请更换为Admin。然后单击分配

      说明

      在实际生产环境中,更加推荐您在Microsoft Entra ID中将用户加入到用户组,然后将用户组分配给企业应用程序。

      在设置了多个角色的情况下,您可以将不同的用户组关联到不同的角色(例如:创建ecs-admin组关联到ecs-admin角色,oss-admin组关联到oss-admin角色),以实现更精细化的权限管控和更高效的用户管理。

验证 SSO 登录

角色SSO仅支持从IdP侧发起SSO登录,因此您需要从Microsoft Entra ID侧进行登录来验证结果。

  1. 获取用户访问URL。

    1. 管理员用户登录Azure门户

    2. 在左侧导航栏,选择Microsoft Entra ID > 管理 > 企业应用程序 > 所有应用程序

    3. 名称列表下,单击Alibaba Cloud Service (Role-based SSO)

    4. 在左侧导航栏,选择管理 > 属性,获取用户访问URL

      用户访问URL

  2. 用户(ssotest01@example.onmicrosoft.com)从管理员用户处获取上述用户访问URL,然后在浏览器中输入该URL,使用自己的账号登录。登录成功后,默认用户会登录到阿里云控制台。可以在账号名前面看到我们定义的RAM角色(aadrole)。

    74AD0757-1D76-4AA9-BE1B-CEA53CD9219A

    系统将自动SSO登录并重定向到您指定的中继状态页面。如果未指定中继状态或超出允许范围,则系统会访问阿里云控制台首页。

进阶:配置Microsoft Entra ID与多个阿里云账号的角色SSO

假设您有两个阿里云账号(Account1Account2),您希望经过配置,使得企业员工用户(ssotest01@example.onmicrosoft.com)在登录Microsoft Entra ID后,通过角色SSO既能访问阿里云账号(Account1),也能访问阿里云账号(Account2)。

  1. Microsoft Entra ID库中添加应用程序Alibaba Cloud Service (Role-based SSO)

  2. 配置Microsoft Entra ID SSO。

  3. 在阿里云创建身份提供商。

    您需要在两个阿里云账号(Account1Account2)中分别创建身份提供商AAD

    每个阿里云账号内的具体操作,请参见步骤三:在阿里云创建身份提供商

  4. 在阿里云创建RAM角色。

    您需要在两个阿里云账号(Account1Account2)中分别创建RAM角色,本示例中假设在阿里云账号(Account1)中创建两个RAM角色,在阿里云账号(Account2)中创建一个RAM角色。具体如下:

    • 阿里云账号(Account1)的RAM角色:adminaadreadaad

    • 阿里云账号(Account2)的RAM角色:financeaad

    每个阿里云账号内的具体操作,请参见步骤四:在阿里云创建RAM角色

  5. 将阿里云RAM角色与Microsoft Entra ID用户进行关联。

    Microsoft Entra ID中创建三个应用程序角色,将三个角色分配给用户(ssotest01@example.onmicrosoft.com)。三个角色的值分别为:

    • acs:ram::<Account1_ID>:role/adminaad,acs:ram::<Account1_ID>:saml-provider/AAD

    • acs:ram::<Account1_ID>:role/readaad,acs:ram::<Account1_ID>:saml-provider/AAD

    • acs:ram::<Account2_ID>:role/financeaad,acs:ram::<Account2_ID>:saml-provider/AAD

    具体操作,请参见步骤五:在 Microsoft Entra ID 创建应用角色并分配用户

  6. Microsoft Entra ID用户通过角色SSO访问阿里云。

    用户(ssotest01@example.onmicrosoft.com)登录Azure我的应用页面,单击应用程序Alibaba Cloud Service (Role-based SSO)。然后在阿里云界面上,您需要根据提示选择要访问的阿里云账号(Account1Account2)及其角色,从而以角色SSO方式访问阿里云。

问题排查

请参见单点登录(SSO)常见问题