首页 基于Azure AD实现云控制台单点登录

基于Azure AD实现云控制台单点登录

更新时间: 2024-04-02 14:14:01

集成 Azure Active Directory (Azure AD)与阿里云 RAM 角色,只需维护企业一份账号密码即可登录云控制台,避免发生数据安全风险,减少新用户管理工作量,提高管理效率。

方案概述

本文档介绍了一种将 Azure Active Directory (Azure AD)与阿里云 RAM 角色的集成的方案。该方案实现了:

  • 使用企业域账号登录阿里云,在用户转岗、离职时可以做到有效阻断,避免发生数据安全风险。
  • 减少新用户管理工作量,提高管理效率。
  • 员工只需要维护企业 IdP 一份账号密码即可完成云控制台的登录。

方案优势

集中管理云上人员身份

通过和 AD 集成实现 SSO,对于企业内任意一个员工,企业只需要在 AD 内维护该员工域账号和对应角色即可,无需单独给员工创建 RAM 用户等身份,提升管理效率。

降低云上身份泄漏风险

使用 SSO,可以有效避免员工转岗或离职时仍旧持有阿里云 RAM 用户账号密码造成的安全风险。员工只能通过域账号登录云上控制台,在员工离职时域账号被回收,该员工则无法再登录云上控制台,避免发生数据安全风险。

客户场景

客户场景:单账号内的SSO登录控制台

场景描述

在单账号内,客户可以将RAM与企业IdP进行集成,并要求企业员工使用SSO方式登录阿里云。SSO方式包括用户SSO角色SSO两种。

适用客户

  • 非RD目标客户,但有企业IdP连接需求和基础设施的客户,建议选择SSO与阿里云集成。
  • 企业已有支持SAML协议的IdP(本文特指AAD)。
  • 企业有较强的治理动力,重点希望解决人员离职的数据风险,以及提高员工登录效率。
  • 由于用户SSO和用户名密码登录是互斥关系,满足如下条件的客户建议优先选择用户SSO
  • 企业已使用的云产品中有部分暂时不支持角色访问。
  • 已经大量使用RAM用户访问,不易切换。
  • 在满足前两点的基础上,满足如下条件的客户,建议选择单账号角色SSO方案:
  • 不希望在云端创建和管理用户,从而避免用户同步带来的工作量。
  • 希望在使用SSO的同时,仍然保留一部分云上本地用户,可以在阿里云直接登录。云上本地用户的用途可以是新功能测试、网络或企业IdP出现问题时的备用登录方式等。
  • 企业存在多个IdP,都需要访问同一个阿里云账号,需要在一个阿里云账号内配置多个IdP进行SSO。

客户场景:多账号SSO登录控制台

场景描述

客户有多个云账号,可以将RAM与企业IdP进行集成,并要求企业用户使用SSO方式登录阿里云。SSO方式包括用户SSO角色SSO两种。

适用客户

  • 使用资源目录管理云上多个账号的企业客户,建议优先选择企业IdP与CloudSSO集成角色SSO,当需要使用的云产品中有不支持角色访问的产品,可以单独配置用户SSO
  • 使用多个阿里云账号的企业客户。

客户案例

客户背景

香港某知名地产企业X,集团在香港和中国内地享有尊崇地位,被公认为一家重视质量的顶级物业发展商。

客户需求

在阿里云有10多个注册账号,客户有多个团队需要管理云上资源。不同团队会有多名员工。客户希望按团队维度跟不同云账号上面的角色映射起来。员工跟团队的关系可以在AuzreAD上面做维护,一旦员工所在的组发生变更那对应阿里云的权限也会做变更。

实施方案

  • 客户员工数据在AzureAD上作维护,分成不同的Group进行管理。
  • 配置AuzreAD到阿里云联合身份认证。
  • 员工登录阿里云控制台,会自动到AzureAD进行身份信息确认。
  • 员工登录到阿里云之后,会自动带上对应的角色权限。

客户团队、AzureAD Group、阿里云账号、阿里云角色、权限策略关系表(部分)如下:

Team

Azure AD Group

AliCloud Cloud Account

Account: Role Name

AliCloud Role Policy

Cloud Admin

Ali-CloudAdmin-Root

Root

Root: LandingZoneIdP-CloudAdmin

AdministratorAccess

Security Team

Ali-SecurityAdmin

Root

Root:LandingZoneIdP-SecurityAdmin

AliyunYundunSASFullAccess
AliyunYundunAegisFullAccess
AliyunYundunDDosFullAccess
AliyunYundunWAFFullAccess
AliyunYundunCertFullAccess
AliyunYundunBastionHostFullAccess
AliyunYundunCloudFirewallFullAccess
AliyunYundunHighFullAccess
AliyunYundunAntiDDoSPremiumFullAccess
AliyunRAMFullAccess
AliyunKMSFullAccess
AliyunCloudMonitorFullAccess
AliyunLogFullAccess
AliyunConfigFullAccess
AliyunActionTrailFullAccess

Audit

Audit:LandingZoneIdP-SecurityAdmin

Shared

Shared:LandingZoneIdP-SecurityAdmin

Prod

Prod:LandingZoneIdP-SecurityAdmin

Non-Prod

Non-Prod:LandingZoneIdP-SecurityAdmin

Dev

Dev:LandingZoneIdP-SecurityAdmin

Infra Team

Ali-InfraAdmin

Prod

Prod:LandingZoneIdP-InfraAdmin

AliyunTAGFullAccess
AliyunECSFullAccess
AliyunFCFullAccess
AliyunECIFullAccess
AliyunWebPlusFullAccess
AliyunOSSFullAccess
AliyunVPCFullAccess
AliyunSLBFullAccess
AliyunEIPFullAccess
AliyunNATGatewayFullAccess
AliyunVPNGatewayFullAccess
AliyunCENFullAccess
AliyunYundunSASFullAccess
AliyunKMSFullAccess

Non-Prod

Non-Prod::LandingZoneIdP-InfraAdmin

Shared

Shared:LandingZoneIdP-InfraAdmin

Dev

Dev:LandingZoneIdP-InfraAdmin

Audit

Audit:LandingZoneIdP-InfraAdmin

AliyunLogFullAccess

客户收益

  • 使用企业账号登录阿里云,在用户转岗、离职时可以做到有效阻断,避免发生数据安全风险。
  • 减少新用户管理工作量,提高管理效率。
  • 员工只需要维护企业域账号密码即可完成云控制台的登录。

方案架构

本方案通过配置Azure AD和阿里云RAM的集成,实现企业员工以IdP中的身份,登录到阿里云上某账号下,并获取相应的身份权限用于访问云服务或者云资源。

客户如果用到的云产品都支持STS那推荐使用角色SSO,如果有用到不支持STS的产品,建议将这些云产品单独放在一个独立的云账号,并使用用户SSO。

产品费用及名词

产品费用

产品名称

产品说明

产品费用

访问控制RAM

访问控制RAM(Resource Access Management)是阿里云提供的一项管理用户身份与资源访问权限的服务。

免费,详情参见产品定价

名词解释

名称

说明

阿里云账号(Alibaba Cloud account)

开始使用阿里云服务前,首先需要注册一个阿里云账号。阿里云账号是阿里云资源归属、资源使用计量计费的基本主体。阿里云账号为其名下所拥有的资源付费,并对其名下所有资源拥有完全控制权限。

默认情况下,资源只能被阿里云账号所访问,任何其他用户访问都需要获得阿里云账号的显式授权。阿里云账号就是操作系统的root或Administrator,所以我们有时称它为根账号或主账号。

RAM用户(RAM user)

RAM用户也叫RAM账号,是RAM的一种实体身份类型,有确定的身份ID和身份凭证,它通常与某个确定的人或应用程序一一对应。

RAM角色(RAM role)

RAM角色是一种虚拟用户,与实体用户(阿里云账号、RAM用户和云服务)和教科书式角色(Textbook role)不同。具体如下:

  • 实体用户:拥有确定的登录密码或访问密钥。
  • 教科书式角色:教科书式角色或传统意义上的角色是指一组权限集合,类似于RAM里的权限策略。如果一个用户被赋予了这种角色,也就意味着该用户被赋予了一组权限,可以访问被授权的资源。
  • RAM角色:RAM角色有确定的身份,可以被赋予一组权限策略,但没有确定的登录密码或访问密钥。RAM角色需要被一个可信的实体用户扮演,扮演成功后实体用户将获得RAM角色的安全令牌,使用这个安全令牌就能以角色身份访问被授权的资源。

服务提供商(SP)

利用IdP的身份管理功能,为用户提供具体服务的应用。SP会使用IdP提供的用户信息。一些非SAML协议的身份系统(例如:OpenID Connect),也把服务提供商称作IdP的信赖方。

身份提供商(IdP)

一个包含有关外部身份提供商元数据的RAM实体,身份提供商可以提供身份管理服务。

  • 企业本地IdP:Microsoft Active Directory Federation Service(AD FS)以及Shibboleth等。
  • Cloud IdP:Azure AD、Google G Suite、Okta以及OneLogin等。

安全断言标记语言(SAML 2.0)

实现企业级用户身份认证的标准协议,它是SP和IdP之间实现沟通的技术实现方式之一。SAML 2.0已经是目前实现企业级SSO的一种事实标准。

单点登录(SSO)

阿里云支持基于SAML 2.0和OIDC的SSO(Single Sign On,单点登录),也称为身份联合登录。

元数据文档(Metadata file)

元数据文档由企业IdP提供,一般为XML格式,包含IdP的登录服务地址、用于验证签名的公钥及断言格式等信息。

安全性

本方案基于SAML 2.0协议实现企业IdP与阿里云的SSO登录。SAML 2.0是SP和IdP之间实现沟通的技术实现方式之一,目前已经是实现企业级SSO的一种事实标准。阿里云和企业IdP之间并无直接交互(如公网传输等),SAML断言均在员工设备(如浏览器)上完成,具体过程,请查看用户SSO流程角色SSO流程

为了进一步保障企业员工账号安全,建议选择支持MFA的企业级IdP,并要求员工开启MFA。

注意事项

支持RAM/STS的云服务

阿里云RAM/STS服务已经支持大部分云产品,例如:云服务器ECS、 云数据库RDS、对象存储OSS、专有网络VPC、负载均衡和容器服务Kubernetes版等。在此基础上,RAM/STS服务也在不断扩展对其他云服务的支持。企业可以根据云服务是否支持RAM/STS,决定采用的SSO类型。更多信息,请参见支持RAM的云服务支持STS的云服务

实施步骤

实施准备

  • 确保企业已经完成Azure AD的配置。
  • 确保在需要配置SSO的账号中开通了RAM服务。
  • 角色SSO场景下提前规划好企业云上角色身份权限策略,参考此文档

操作步骤

请根据客户场景一节的说明,选择企业最适合的SSO方式。

用户SSO

在本示例中,企业拥有两个阿里云账号和一个Azure AD租户。在Azure AD租户中,有一个管理员用户(已授予全局管理员权限)和一个企业员工用户(u2)。通过以下操作步骤,使企业员工用户(u2)可以通过RAM用户身份直接访问这两个阿里云账号控制台。

多账号配置用户SSO,需要在每个云账号内做一次配置。以下步骤是以单个云账号内的配置作参数,其余账号按照该流程重复配置即可。

步骤一:在阿里云获取SAML服务提供商元数据

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,单击SSO管理
  3. SSO管理页面,单击用户SSO页签。
  4. SSO登录设置区域,复制SAML服务提供商元数据URL
  5. 在新的浏览器窗口中打开复制的链接,将元数据XML文件另存到本地。

说明 元数据XML文件保存了阿里云作为一个SAML服务提供商的访问信息。您需要记录该文件中的 entityIDLocation的值,以便后续在AAD的配置中使用。

步骤二:在AAD中创建应用

  1. 管理员用户登录Azure门户
  2. 单击主页的图标。
  3. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序

  1. 单击新建应用程序
  2. 浏览Azure AD库页面,单击创建你自己的应用程序

  1. 创建你自己的应用程序页面,输入应用名称(例如:AliyunSSODemo),并选择集成库中未发现的任何其他应用程序(非库),然后单击创建

步骤三:在AAD中配置SAML

  1. AliyunSSODemo页面,单击左侧导航栏的单一登录
  2. 选择单一登录方法页面,单击SAML

  1. 设置SAML单一登录页面进行以下配置。
  • 在页面左上角,单击上载元数据文件,选择文件后,单击添加

说明 此处上传 步骤一:在阿里云获取SAML服务提供商元数据 中获取的XML文件。

  • 基本SAML配置页面,配置以下信息,然后单击保存
  • 标识符(实体 ID):从上一步的元数据文件中自动读取entityID的值。
  • 回复 URL(断言使用者服务 URL):从上一步的元数据文件中自动读取Location的值。
  • 中继状态:用来配置用户SSO登录成功后跳转到的阿里云页面。

说明 出于安全原因,您只能填写阿里巴巴旗下的域名URL作为 中继状态的值,例如:*.aliyun.com、*.hichina.com、*.yunos.com、*.taobao.com、*.tmall.com、*.alibabacloud.com、*.alipay.com,否则配置无效。

若不配置,默认跳转到阿里云控制台首页。

  • SAML签名证书区域,单击下载,获取联合元数据XML

步骤四:在AAD分配用户

  1. 单击AAD主页的图标。
  2. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序
  3. 名称列,单击AliyunSSODemo
  4. 在左侧导航栏,单击用户和组
  5. 单击左上角的添加用户/组
  6. 单击用户,从用户列表中选择用户(u2),然后单击选择

如何在AAD中添加新用户,请查看链接

  1. 单击分配

步骤五:在阿里云创建RAM用户

  1. 在RAM控制台的左侧导航栏,选择人员管理 > 用户
  2. 用户页面,单击创建用户
  3. 创建用户页面的用户账号信息区域,输入登录名称显示名称请确保RAM用户登录名称前缀与AAD中的用户名前缀保持一致。本示例中为u2。
  4. 访问方式区域,选择控制台访问。
  5. 单击确定

步骤六:在阿里云开启用户SSO

  1. 在RAM控制台的左侧导航栏,单击SSO管理
  2. SSO管理页面,单击用户SSO页签。
  3. SSO登录设置区域,单击编辑
  4. 编辑SSO登录设置面板的SSO功能状态区域,单击开启

说明 用户SSO是一个全局功能,开启后,所有RAM用户都需要使用SSO登录。如果您是通过RAM用户配置的,请先保留为关闭状态,您需要先完成RAM用户的创建,以免配置错误导致自己无法登录。您也可以通过阿里云账号进行配置来规避此问题。

  1. 元数据文档区域,单击上传文件,上传从步骤三:在AAD中配置SAML中获取的XML文件。
  2. 辅助域名区域,单击开启,并配置辅助域名为AAD中的用户名Email后缀。例如:本示例中AAD用户(u2)的完整用户名为u2@example.onmicrosoft.com,则此处填写example.onmicrosoft.com
  3. 单击确定

验证结果

完成SSO登录配置后,您可以从阿里云或AAD发起SSO登录。

(一)从阿里云侧发起登录

  1. RAM控制台概览页,复制RAM用户的登录地址。
  2. 将鼠标悬停在右上角头像的位置,单击退出登录或使用新的浏览器打开复制的RAM用户登录地址。
  3. 单击使用企业账号登录,系统会自动跳转到AAD的登录页面。

  1. 使用用户(u2)的用户名和密码登录。系统将自动SSO登录并重定向到您指定的中继状态页面。如果未指定中继状态或超出允许范围,则系统会访问以下阿里云控制台首页。

(二)从AAD侧发起登录

  • 获取用户访问URL
  1. 管理员用户登录Azure门户
  2. 单击主页的图标。
  3. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序
  4. 单击应用程序AliyunSSODemo
  5. 在左侧导航栏,单击属性,获取用户访问URL用户访问URL是用户直接从其浏览器访问此应用程序的链接。
  • 用户(u2)从管理员用户处获取上述用户访问URL在浏览器中输入该URL,使用自己的账号登录。

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

单账号角色SSO

在本示例中,企业拥有一个阿里云账号(Account1)和一个Azure AD租户。在Azure AD租户中,有一个管理员用户(已授予全局管理员权限)和一个企业员工用户(u2)。通过以下配置,使得企业员工用户(u2)在登录Azure AD后,通过角色SSO访问阿里云账号(Account1)。

以下操作需要通过管理员用户(已授予全局管理员权限)执行本示例AAD中的操作。关于如何在AAD中创建用户和为用户授权,请参见AAD文档

注意事项:

进入Active Directory -> 管理租户 查看当前租户的域名。需要确保当前登录的账号 @ 后面的内容跟这个域名是一致的,否则无法在AAD Graph浏览器 里面进行审批。

步骤一:在AAD库中添加应用程序

  1. 管理员用户登录Azure门户
  2. 单击主页的图标。
  3. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序
  4. 单击新建应用程序
  5. 搜索Alibaba Cloud Service (Role-based SSO)并单击选择。
  6. 输入应用名称,然后单击创建本示例中,使用默认应用名称 Alibaba Cloud Service (Role-based SSO),您也可以自定义应用名称。
  7. Alibaba Cloud Service (Role-based SSO)页面,单击左侧导航栏的属性,复制并保存对象ID

步骤二:配置AAD SSO

  • Alibaba Cloud Service (Role-based SSO)页面,单击左侧导航栏的单一登录
  • 选择单一登录方法页面,单击SAML
  • 设置SAML单一登录页面,配置SSO信息。
  1. 在页面左上角,单击上传元数据文件,选择文件后,单击添加

说明 您可以通过以下URL获取元数据文件: https://signin.aliyun.com/saml-role/sp-metadata.xml

  1. 基本SAML配置页面,配置以下信息,然后单击保存
  • 标识符(实体 ID):从上一步的元数据文件中自动读取entityID的值。
  • 回复 URL(断言使用者服务 URL):从上一步的元数据文件中自动读取Location的值。
  • 中继状态:用来配置角色SSO登录成功后跳转到的阿里云页面。
  • 用户属性和声明区域,单击图标。
  • 单击添加新的声明,配置以下信息,然后单击保存
  • 名称区域,输入Role
  • 命名空间区域,输入https://www.aliyun.com/SAML-Role/Attributes
  • 区域,选择属性
  • 源属性区域,从下拉列表中选择user.assignedroles
  • 重复上述步骤,添加一个新的声明。
  • 名称区域,输入RoleSessionName
  • 命名空间区域,输入https://www.aliyun.com/SAML-Role/Attributes
  • 区域,选择属性
  • 源属性区域,从下拉列表中选择user.userprincipalname
  • SAML签名证书区域,单击下载,获取联合元数据XML

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

  1. 阿里云账号(Account1)登录RAM控制台
  2. 在左侧导航栏,单击SSO管理
  3. 角色SSO页签下,单击创建身份提供商
  4. 输入身份提供商名称AAD备注
  5. 元数据文档区域,单击上传文件
  6. 单击确定

说明 上传在 步骤二:配置AAD SSO中下载的 联合元数据XML

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

  1. 创建身份提供商后,单击前往新建RAM角色
  2. 单击创建RAM角色
  3. 选择可信实体类型为身份提供商,单击下一步
  4. 输入角色名称AADrole备注
  5. 在下拉列表中选择身份提供商AAD,单击完成
  6. 单击关闭

说明 这一步的角色就是当用户通过SSO联合登录上来之后所扮演的角色具有什么样的权限

步骤五:将阿里云RAM角色与AAD用户进行关联

一、在AAD中创建角色。

  1. 管理员用户登录AAD Graph浏览器。(注意!需要使用具有全局管理员身份的账号并且 @ 后面的域名要跟当前租户的域名保持一致。来登录AAD Graph浏览器,默认是一个测试账号)
  2. 单击账号右侧的图标。
  3. 单击选择权限
  4. 权限页面,选择以下权限并单击同意
  5. Graph浏览器页面,第一个下拉列表中选择GET,第二个下拉列表中选择beta。在搜索框中输入https://graph.microsoft.com/beta/servicePrincipals/<objectID>,其中objectID是您在AAD属性页面保存的对象ID,然后单击运行查询
  6. 响应预览页签下,提取出appRoles属性并保存。
"appRoles": [
   {
     "allowedMemberTypes": [
       "User"
     ],
     "description": "msiam_access",
     "displayName": "msiam_access",
     "id": "7dfd756e-8c27-4472-b2b7-38c17fc5****",
     "isEnabled": true,
     "origin": "Application",
     "value": null
   }
 ],
  1. 返回Graph浏览器,将第一个下拉列表改为PATCH,第二个下拉列表中选择beta。在搜索框中输入https://graph.microsoft.com/beta/servicePrincipals/<objectID>,其中objectID是您在AAD属性页面保存的对象ID,将以下内容复制到请求正文中并选择运行查询
{ 
  "appRoles": [
    { 
      "allowedMemberTypes":[
        "User"
      ],
      "description": "msiam_access",
      "displayName": "msiam_access",
      "id": "7dfd756e-8c27-4472-b2b7-38c17fc5****",  // 步骤6中的值,直接复制
      "isEnabled": true,
      "origin": "Application",
      "value": null
    },
    { 
      "allowedMemberTypes": [
        "User"
    ],
    "description": "Admin,AzureADProd",
    "displayName": "Admin,AzureADProd",
    "id": "68adae10-8b6b-47e6-9142-6476078c****", //自定义ID
    "isEnabled": true,
    "origin": "ServicePrincipal",
    "value": "acs:ram::187125022722****:role/aadrole,acs:ram::187125022722****:saml-provider/AAD" //身份提供商和RAM角色的ARN
    }
  ]
}

二、将角色添加到用户(u2)中。

  1. 管理员用户登录Azure门户
  2. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序
  3. 名称列表下,单击Alibaba Cloud Service (Role-based SSO)
  4. 在左侧导航栏,单击用户和组
  5. 单击左上角的添加用户/组
  6. 单击用户,从用户列表中选择用户(u2),单击选择
  7. 单击分配
  8. 查看分配的角色。

步骤六:验证效果

1、获取用户访问URL。

  1. 管理员用户登录Azure门户
  2. 在左侧导航栏,选择Azure Active Directory > 企业应用程序 > 所有应用程序
  3. 名称列表下,单击Alibaba Cloud Service (Role-based SSO)
  4. 在左侧导航栏,选择属性,获取用户访问URL

2、用户(u2)从管理员用户处获取上述用户访问URL在浏览器中输入该URL,使用自己的账号登录。

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

多账号角色SSO

在本示例中,企业拥有两个阿里云账号(Account1与Account2)和一个Azure AD租户。在Azure AD租户中,有一个管理员用户(已授予全局管理员权限)和一个企业员工用户(u2)。通过以下配置,使得企业员工用户(u2)在登录Azure AD后,通过角色SSO访问阿里云账号(Account1与Account2)。

参考前面「单账号角色SSO」一节的配置,完成如下几步:

步骤一:在AAD库中添加应用程序

步骤二:配置AAD SSO

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

参考单账号角色SSO一节中完成Account1的身份提供商的配置,再将Account2的配置完成。

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

在该步骤中需要在两个阿里云账号(Account1和Account2)中分别创建RAM角色。

本示例中假设在阿里云账号(Account1)中创建1个RAM角色,在阿里云账号(Account2)中创建两个RAM角色。具体如下:每个阿里云账号内的具体操作,请参见「单账号角色SSO」中的步骤四。

  • 阿里云账号(Account1)的RAM角色:AADrole
  • 阿里云账号(Account2)的RAM角色:financeaad 和 readrole

步骤五:将阿里云RAM角色与AAD用户进行关联

具体操作参考「单账号角色SSO」中的步骤五。差异点如下:

一、在第7个子步骤中需要将AAD Graph浏览器中配置的信息替换为如下代码:

{
  "appRoles": [
    {
      "allowedMemberTypes":[
        "User"
      ],
      "description": "msiam_access",
      "displayName": "msiam_access",
      "id": "7dfd756e-8c27-4472-b2b7-38c17fc5****",
      "isEnabled": true,
      "origin": "Application",
      "value": null
    },
    { "allowedMemberTypes": [
        "User"
    ],
    "description": "Accout1Admin,AzureADProd",
    "displayName": "Accout1Admin,AzureADProd",
    "id": "68adae10-8b6b-47e6-9142-6476078c****", //自定义ID
    "isEnabled": true,
    "origin": "ServicePrincipal",
    "value": "acs:ram::187125022711****:role/AADrole,acs:ram::187125022711****:saml-provider/AAD" //阿里云账号(Account1)的身份提供商和RAM角色的ARN
    },
    { "allowedMemberTypes": [
        "User"
    ],
    "description": "Accout2Read,readrole",
    "displayName": "Accout2Read,readrole",
    "id": "68adae10-8b6b-47e6-9142-6476077c****", //自定义ID
    "isEnabled": true,
    "origin": "ServicePrincipal",
    "value": "acs:ram::177125022722****:role/readrole,acs:ram::177125022722****:saml-provider/AAD" //阿里云账号(Account2)的身份提供商和RAM角色的ARN
    },
    { "allowedMemberTypes": [
        "User"
    ],
    "description": "Accout2Finance,financeaad",
    "displayName": "Accout2Finance,financeaad",
    "id": "68adae10-8b6b-47e6-9142-6476046c****", //自定义ID
    "isEnabled": true,
    "origin": "ServicePrincipal",
    "value": "acs:ram::177125022722****:role/financeaad,acs:ram::177125022722****:saml-provider/AAD" //阿里云账号(Account2)的身份提供商和另一RAM角色的ARN
    }
  ]
}

二、将角色添加到用户(u2)中。

  1. 需要将角色Accout1Admin,AzureADProdAccout2Read,readroleAccout2Finance,financeaad分别添加到用户(u2)中。
  2. 如果上一步无法给这个用户选择多个角色的话,那可以通过创建多个组的方式实现。分别给每个组赋上权限,然后再将这个用户添加到对应的组里面。

步骤六:验证效果

参考「单账号角色SSO」里面的验证步骤,因为该用户绑定了两个阿里云账号下的多个角色,因此在登录过程中,阿里云会提示使用哪个账号下的哪个角色进行登录。

故障排除

为什么SSO跳转到阿里云时显示登录失败?

一般情况下,均为SAML断言校验失败,建议在浏览器上安装SAML断言查看插件(Chrome浏览器中可安装SAML Chrome Panel插件)。在该插件中,可以查看IdP生成的SAML断言,并根据SSO类型,查看角色SSO的SAML响应用户SSO的SAML响应,并进行比对,找到出现问题的配置项并进行修正。

相关内容