企业身份管理实战---RAM角色单点登录(SSO)

简介: 在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。

默认标题_公众号封面首图_2019-11-27-0.png

作者 | 李智源 阿里云开放平台高级技术专家,主要负责阿里云企业级身份管理,致力于提供云上集中式、易集成、安全、合规的企业级身份认证和管理服务。

引言

在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。

背景

使用基于RAM用户的SSO到云端的控制台,企业管理员可以方便的实现本地员工身份认证到云端账号认证的打通。企业的身份管理员需要:

  • 在云端创建、管理用户;
  • 配置好员工和云端用户的映射关系或映射规则。

开启基于RAM用户的SSO后,企业员工不能再使用云端用户名和密码登录。可以将认证收口在企业本地IDP,认证收口后,可以通过本地IDP和云端的登录页面两个入口发起到本地IDP的认证请求。

在实际的企业员工身份管理过程中,企业的身份管理员可能还会遇到额外的场景:

  • 出于管理成本的考虑,不想再云端在额外的创建和管理用户,从而避免同步用户带来的工作量;
  • 期望根据用户在本地IDP中加入的组或者用户的某个特殊属性,来区分云上拥有的权限,当进行权限调整时,只需要在本地IDP进行分组或属性的更改;
  • 出于测试或容灾的需要,期望可以既能通过SSO的方式访问云端控制台,也能通过用户名和密码访问云端控制台;
  • 企业在云上有多个云账号,企业的员工使用企业的统一IDP。期望在企业IDP配置一次,就可以方便的实现到多个云账号的SSO;
  • 企业存在多个IDP,都需要访问同一个阿里云账号。期望在一个阿里云账号内配置,允许多个IDP进行SSO。

choice.jpg

图1 RAM用户SSO和RAM角色SSO

企业的身份管理员可以通过选用基于RAM角色的SSO来解决以上的问题。

原理

在上篇文章中,我们简单的介绍了SAML协议中涉及到的IDP(ID Provider)SP(Service Provider)和Trust的概念。RAM角色SSO同样基于SAML协议,但是不再通过NameID进行账号的映射登录控制台,而是通过选取的RAM角色身份提供商**,使用角色扮演的方式登录到控制台。

概念和实体

身份提供商实体

前文我们介绍了IDP的概念。那么为了建立云账号到IDP的信任关系,需要将IDP的描述文件(Metadata.xml)配置到云账号,代表了一个IDP的虚拟身份。同一个云账号可以创建多个身份提供商。

RAM角色的可信实体

RAM角色介绍可以参考阿里云的官方文档 [1]。其中,原本的RAM角色的可信实体仅有云账号和阿里云服务。新增了身份提供商作为新的可信实体,允许受信的身份提供商下的用户所扮演的角色。

流程

在基于SAML 2.0的RAM角色SSO流程中,企业员工在IDP登录后,IDP将根据SAML 2.0 HTTP-POST绑定的要求生成包含SAML Assertion的认证响应,并由浏览器(或程序)自动转发给阿里云。阿里云侧解析SAML Assertion,并验证及抽取Attribute中的元素。

SAML_ROLE_SSO.jpg

图2 通过控制台和程序,使用SAML Assertion访问阿里云

SAML Attribute元素

对于RAM角色SSO,阿里云侧对于SAML Assertion中的Attribute元素有以下的要求:

Role

字段Name为https://www.aliyun.com/SAML-Role/Attributes/Role 的元素。必须存在,可以有多个。

字段的值代表了可供扮演的角色和身份提供商。格式为扮演的RAM角色的ARN和阿里云侧身份提供商的ARN组合,使用英文逗号(,)分隔。

Role Attribute的样例如下:

  <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">      
    <AttributeValue>acs:ram::$account_id:role/roleName1,acs:ram::$account_id:saml-provider/providerName1</AttributeValue>
    <AttributeValue>acs:ram::$account_id:role/roleName2,acs:ram::$account_id:saml-provider/providerName2</AttributeValue>
  </Attribute>

RoleSessionName

字段Name为https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName的元素。必须存在且只能有一个。

字段的值将被用来作为登录用户信息的一部分显示在控制台上和操作审计日志中。如果您有多个用户使用同一个角色,请确保使用可以唯一标识用户的RoleSessionName值,以区分不同的用户,如员工ID、email地址等。长度2个字符到32个字符,只能是英文字母、数字和特殊字符:-_.@=

RoleSessionName Attribute的样例如下:

   <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
     <AttributeValue>$user_id</AttributeValue>
   </Attribute>

SessionDuration

字段Name为https://www.aliyun.com/SAML-Role/Attributes/SessionDuration的元素。可以不传,最多有1个。

字段的值在控制台登录的情况下代表了Session时长,在程序调用情况下无效。格式为数字,取值范围为900秒(15分钟)到3600秒(1个小时)。默认值为3600秒。

SessionDuration Attribute的样例如下:

   <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration">
     <AttributeValue>1800</AttributeValue>
   </Attribute>

实战

假设一家企业CompanyA在GCP上管理了企业员工的账号和身份。同时在阿里云上拥有2个账号Account1和Account2。企业的身份管理期望配置一次,可以让员工通过基于RAM角色的SSO免登到阿里云的Account1和Account2上。

STEP 1准备IDP和SP侧需要配置数据。

SP侧提供的数据

登录阿里云RAM控制台,在左侧导航栏选取SSO管理,在右侧角色SSO标签下可以看到企业IDP侧SAMP SP配置需要使用的阿里云服务提供商元数据URL:

   https://signin.aliyun.com/saml-role/sp-metadata.xml

如果使用的IDP不支持上传或填写服务提供商元数据URL,需要手动配置。

  • EntityID:urn:alibaba:cloudcomputing,表示阿里云服务提供商的EntityID
  • ACS URL:https://signin.aliyun.com/saml-role/sso,表示阿里云侧消费SAML Assertion的地址
  • RelayState: 可选,表示成功登录后跳转的阿里云侧的页面地址,默认为控制台首页。

IDP侧提供的数据

阿里云侧在创建服务提供商的时候,需要上传身份提供商的元数据。

访问Google的管理控制台,选取应用SAML应用**,点击右下角的“+”号,点击设置自己的自定义应用,下载对应的IDP元数据文件。

STEP 2阿里云侧的配置

新建身份提供商

访问阿里云RAM控制台,在左侧导航栏选取SSO管理,在右侧角色SSO标签,选择新建身份提供商按钮,在右侧窗口中填入供应商名称,备注,并上传IDP的元数据文件。例如这里的身份提供商的名称叫GCP-CompanyA。点击新创建好的身份提供商,记录下ARN:

   acs:ram::YOUR_ACCOUNT_ID:saml-provider/GCP-CompanyA

createIDP.jpg

图3 新建身份提供商

新建RAM角色并授信

选择阿里云RAM控制台左侧导航栏的RAM角色管理,在右侧点击新建RAM角色。选择身份提供商作为可信实体。


gcp_role_trusted_entity.jpg

图4 选择角色信任的可信实体类型

点击下一步,在页面中,输入角色名,例如GCP-CompanyA-Role,选择刚刚创建好的身份提供商GCP-CompanyA。点击完成并为其授权。创建完成后,点击新创建的角色名,记录角色ARN:

   acs:ram::YOUR_ACCOUNT_ID:role/gcp-companya-role

gcp_role_idp_provider.jpg

图5 选择角色的可信实体为身份提供商

同样的操作可以在多个账号内一并进行配置。

STEP 3IDP侧的配置

为用户创建自定义属性

访问GCP的管理控制台,选择用户,在上方更多下拉框中,选择管理自定义属性,添加自定义属性。自定义属性允许多个值。这里我们创建类别为SSO,名称为Role的字段。

为用户配置自定义属性

在用户列表中选择需要配置的员工账号,在用户信息中找到SSO字段,将刚刚创建好的角色及收费提供商的ARN使用英文逗号分隔填入。例如:

   acs:ram::YOUR_ACCOUNT_ID:role/gcp-companya-role,acs:ram::YOUR_ACCOUNT_ID:saml-provider/GCP-CompanyA

这里如果有多个云端的身份提供商,多个角色,可以新增添入多个值。配置完成后点击保存

STEP 4配置SAML SSO应用

访问Google的管理控制台,选取应用,SAML应用,点击右下角的“+”号,点击设置自己的自定义应用。配置SP侧的信息:

gcp_config.jpg

图6 配置SAML 应用中的SP 元数据

配置好字段的映射,其中RoleSessionName字段选择GCP用户的电子邮件,Role选择自定义的SSO的role的字段。配置完成后保存应用。并对用户开启应用。

gcp_role_field.jpg

图7 配置Attribute中的Role和RoleSessionName

STEP 5在IDP侧发起SSO

使用需要SSO的企业员工账号登录GCP,访问配置好的SAML应用,启用应用。开始基于RAM角色的SAML SSO流程。如果配置了多个角色字段,可以在页面中选择需要的角色,完成SSO到控制台的流程。

gcp-role-select.jpg

图8 选择对应的角色完成SSO

结束语

本文介绍了基于SAML 2.0的RAM角色SSO,将企业IDP认证和阿里云SP控制台认证打通。和RAM用户的SSO相比,两种基于SAML 2.0的SSO的方式有以下不同:

RAM用户SSO RAM角色SSO
SP侧发起SSO Yes No
IDP侧发起SSO Yes Yes
使用RAM用户名密码登录 No Yes
多IDP SSO到一个云账号 No Yes
单个IDP SSO到多个云账号 No Yes
需要用户同步 Yes No
支持的云服务 支持RAM的服务列表[2] 支持STS的服务列表[3]

企业的身份管理员,可以根据企业的实际应用的场景,选择合适的SSO方式,将企业IDP的用户认证和云端的身份认证打通,从而实现到云端控制台的SSO。

目录
相关文章
|
7月前
|
机器学习/深度学习 API 数据安全/隐私保护
视觉智能平台常见问题之一直提示ram没有权限但是我在角色中已经有添加相应的权限如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
5月前
|
分布式计算 自然语言处理 DataWorks
MaxCompute产品使用合集之在DataWorks中,当涉及到MC的投递功能时,所指的自定义RAM角色是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
SQL DataWorks 数据管理
DataWorks操作报错合集之在查找支持实例错误的时候提示:无法承担用户的角色,请检查RAM角色配置,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
缓存 运维 Devops
云效产品使用报错问题之提示需要创建一个 RAM用户名的企业如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
7月前
|
域名解析 网络协议 数据安全/隐私保护
DNS解析问题之授权RAM子账号管理指定域名如何解决
DNS解析是指将人类可读的域名转换成机器可读的IP地址的过程,它是互联网访问中不可或缺的一环;本合集将介绍DNS解析的机制、类型和相关问题的解决策略,以确保域名解析的准确性和高效性。
462 1
阿里云RAM角色和自定义角色
阿里云RAM角色和自定义角色
148 1
|
弹性计算 运维 监控
基于ECS实例RAM角色的SLS与Splunk集成方案
阿里云日志服务(SLS)通过提供一个Splunk插件(Add-on)实现SLS与Splunk的日志对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到客户的安全运维中心(SOC)中。本文主要介绍如何在该Splunk Add-on中使用ECS实例RAM角色的鉴权方式,完成日志服务(SLS)到Splunk的日志投递过程。
1468 0
配置流转的时候提示非法RAM 角色如何处理
原因 : 流转的目的地产品的角色不符合需要 解决办法 : 删除原来访问控制里面的建的角色 ,重新通过流转页面提示自动建一个对应的角色
166 0
配置流转的时候提示非法RAM 角色如何处理
|
弹性计算 网络安全 数据安全/隐私保护
RAM角色集成企业OpenLDAP身份认证
企业OpenLDAP用户以KeyCloak实现用户/用户组映射为RAM角色的SSO。
RAM角色集成企业OpenLDAP身份认证
|
弹性计算 网络安全 数据安全/隐私保护
RAM角色集成企业AD FS身份认证
企业AD用户组与RAM角色映射,实现与阿里云的角色SSO。
RAM角色集成企业AD FS身份认证