企业身份管理实战—RAM用户单点登录(SSO)

简介: 企业管理者在管理企业员工账号和使用的多个云平台的账号的时候,一般采取集中式的管理。但是企业在使用一家或多家云平台的资源服务时,如何统一的管理企业员工账号和多个云平台的账号身份,并打通本地到云上控制台的访问呢?本文就将介绍如何通过业界标准的协议,来解决这些问题。

默认标题_公众号封面首图_2019-11-04-0 (1).png

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

1.场景是什么

在云平台上管理使用云资源的时候,企业管理者对于账号的管理有以下几个场景和做法:

管理单一云平台主账号:管理一个独立的开发者或工作室的账号。主要业务可能是运营一个资讯类站点或开发一个APP。需要的云资源较少,研发和运维可能就一个人或几个人,大家共享账号管控和使用云资源。因此只要管理好这一个账号密码就好。

管理单一云平台主账号,少量子账号:管理一家中小型企业,信息系统和业务系统的规模不大,企业有技术运维团队来管理企业在云上的信息系统和业务系统。但管理要求不高,企业自己的员工身份系统建设并不十分完善。技术运维团队独立管理云上账号的使用,可能在云上使用一个或多个云账号,按照使用场景分配RAM用户,每个RAM用户分配对应的权限,独享或共用RAM用户。因此用户名、密码、MFA密钥共享,且和企业本地员工系统割裂。

管理多云平台主账号,多个子账号:管理一家中大型或者超大型的跨国企业,信息系统和业务系统庞大且本地、云上均有资源。员工可能在全球各个地方使用各种设备访问企业的信息系统或管控云资源。企业管理要求严格,强合规需求,强监管需求。且技术运维团队分工细致且有管控使用强隔离的场景。本地员工系统建设完善,期望能在一个地方集中管理员工的身份认证信息,并且和单个云或多个云的控制台打通,这样可以方便的对企业云上资源的管理按照公司的组织架构进行隔离和审计。

2.痛点是什么

对于一家中型、大型和跨国企业来说,云上资源的管控需要多个岗位的员工共同参与协作,例如开发、运维、财务和审计等角色。同时企业有强合规,强监管的需求。

在云上,为了解决管理隔离,数据泄漏,审计和合规的问题,企业的身份管理员为参与协作的每个员工创建一个RAM账号,并授予相应的权限。员工使用独立的用户名、密码和多因素认证访问云服务的控制台。

看起来现状已经很美好,但是随着员工的入职、离职,且相对应在云上的的账号需要随之调整。企业规模扩大,使用了多个云平台的服务,需要完整的在多个云平台上管理员工账号,企业和员工的账号管理成本也不断的升高。
1.1.jpeg

图1 本地和多云管理多套用户身份

为了降低管理的成本,企业可能借助于云平台提供的身份API,自行开发管理平台来管理本地员工和云上账号的关系,维护云平台账号的密码。这样需要额外的团队来维护系统,且每当接入一个新平台,需要参考对应的API再做一次性开发,并不是一个标准的通用方案。当然也有CMP也为企业提供了解决此类问题的方案。

那么,有没有一个通用的协议或者标准能够解决企业集中化身份控制的需求,且能方便的和云平台账号的登录打通?

当然有!继续往下看。

3.SAML 协议

SAML is an XML-based markup language for security assertions (statements that service providers use to make access-control decisions).SAML is also:
A set of XML-based protocol messages;A set of protocol message bindings;A set of profiles (utilizing all of the above).

Security Assertion Markup Language - Wikipedia

SAML协议最重要的场景是用于SSO,目前常用的是SAML 2.0协议。SAML协议的内容不再赘述,如果想进一步了解可以参考具体协议内容。本文仅简单介绍下SAML SSO的基本过程。

SAML SSO的过程重要的两方参与者「IdP」和「SP」:

身份提供商(IdP)

一个提供身份管理服务的实体,例如:

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

服务提供商(SP)

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

IDP和SP需要先建立「信赖」,并通过传输的「SAML断言」进行认证:

SAML断言(SAML assertion)

SAML协议中用来描述认证请求和认证响应的核心元素,例如:用户的具体属性就包含在认证响应的断言里。

<saml2p:Response>
    <saml2p:Status>...</saml2p:Status>
    <saml2:Assertion>
        <saml2:Issuer>IdP.entityId</saml2:Issuer>
        <ds:Signature>...</ds:Signature>
        <saml2:Subject>
            <saml2:NameID>NameId</saml2:NameID>
            <saml2:SubjectConfirmation>...</saml2:SubjectConfirmation>
        </saml2:Subject>
        <saml2:Conditions>...</saml2:Conditions>
        <saml2:AuthnStatement >...</saml2:AuthnStatement>
        <saml2:AttributeStatement>....</saml2:AttributeStatement>
    </saml2:Assertion>
</saml2p:Response>

信赖(Trust)

建立在SP和IdP之间的互信机制,通常由公钥和私钥来实现。SP通过可信的方式获取IdP的SAML元数据,元数据中包含IdP签发SAML断言的签名验证公钥,SP则使用公钥来验证断言的完整性。

SAML SSO的基本流程如图2所示:

1.2.jpeg

图2 SAML SSO 基本流程

  1. 用户在SP侧登录框输入用户名,从SP 侧触发SAML SSO;
  2. SP侧通过适配用户名对应的Trust配置,重定向客户端到IdP侧做认证,并向IdP侧发起SAML Request;
  3. 用户在IdP做认证完成后,IdP侧根据Trust的配置和SAML Request的Context内容,重定向用户到SP侧,并发送SAML Response;
  4. 客户端带着SAML Response跳转到SP侧;
  5. SP侧验证Response中的SAML Assertion,识别其中的身份字段,找到对应的云上的用户,建立Session;
  6. SP侧维护Session,重定向客户端到SAML Response中指定的页面。客户端持有云上的账号的Session,访问控制台。

阿里云平台提供了两种SAML SSO 方式:

  • 基于RAM用户的SSO
  • 基于RAM角色的SSO

1.3.jpeg

图3 阿里云提供的SAML SSO的两种方式

4.实战

假设这样一个场景。一家跨国企业CompanyA使用了GCP云平台,并在其上构建了员工体系和信息系统体系。现在业务扩展到中国想使用阿里云,但是其员工账号想统一在GCP上管理认证,需要管理云资源的时候免登到阿里云。公司的用户管理员alice@CompanyA.com想实现这个功能,需要如何操作呢?

这个场景里,GCP作为IdP,阿里云作为SP。这里我们知道GCP的租户是CompanyA.com,假设阿里云的租户是companyA.onaliyun.com

4.1 阿里云侧的配置
companyA.onaliyun.com租户账号或子用户登录RAM控制台

选择左侧导航栏的SSO管理。在用户SSO标签下,可查看当前租户的SAML SSO 配置相关信息,可用于在IdP侧的配置。
1.4.jpeg

图4 阿里云用户SAML SSO 配置控制台

SSO登录相关的设置,包括选择SSO功能状态、上传元数据文档和设置辅助域名。

1.SSO功能状态:
-默认关闭,此时RAM用户可以使用密码登录,SSO配置不生效;
-选择开启,此时RAM用户密码登录方式将会被关闭,统一跳转到企业IdP登录服务进行身份认证。

2.元数据文档,单击上传文件,上传从IdP侧获取的的元数据文档。见GCP侧配置第3步;

3.辅助域名(可选):开启辅助域名开关,可以设置一个辅助域名:
-如果设置了辅助域名,SAML断言中的NameID元素将可以使用此辅助域名作为后缀;
-如果没有设置辅助域名,SAML断言中的NameID元素将只能使用当前账号的默认域名或域别名作为后缀。

4.2 GCP侧的配置

  1. 账号登录Google Admin
  2. 点击应用 -> SAML 应用,选择右下角的新建,并点击设置自己的自定义应用;
  3. 下载IdP元数据,用来作为阿里云侧的配置上传元数据文件;
  4. 填好自定义名称后,填入阿里云侧的ACS网址和EntityId。此数据可以通过阿里云侧的用户SSO元数据文档中获取。见阿里云侧配置第二步。配置如图5所示。
  5. 为用户自定义字段,字段为阿里云RAM用户的用户名:alice@CompanyA.onaliyun.com。作为SAML Assertion中的NameID字段。(如果在阿里侧配置了辅助域或域别名,此步骤可以忽略,直接选择GCP的Email)
  6. 配置完成后,分配给alice@CompanyA.com的用户有使用权限。当发起sso的时候。可以选择配置的SAML应用。点击右上角的启动,即可发起免登到阿里云控制台。

1.5.jpeg

图5 GCP配置用户SAML SSO到阿里云配置

配置完成后,用户可以在阿里云侧的登录框输入用户名发起SP侧的SSO(SP initiated User SSO),这也是最通用的场景。也可以直接在IdP侧直接启动应用,发起免登到SP(IdP initiated User SSO)。

总结

企业管理员可以通过简单的配置,就可以方便、快捷、安全、合规的打通企业和阿里云平台间的控制台登录。降低了企业人员的管理和研发成本的同时,也保持了安全和合规的特性。下一篇文章,将介绍企业身份管理SSO的另一种方式--基于RAM角色的SAML SSO,敬请期待。

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
机器学习/深度学习 弹性计算 安全
阿里云 RAM 企业上云实战
RAM 背景由来 给予 AWS 上的 Code space (代码与软件管理平台)系统数据和备份数据一并被攻击者删除。 企业上云的安全威胁排名 part1 - 云账号及其安全 云平台上多租户隔离的基本主体 阿里云现在所有云产品彼此之前都是隔离,主账号和 RAM 子账号也都是隔离的,彼此不能>互访 同一个主账号 UID 下,不同的云产品默认不能互访,需要在主账号授权的跨产品授权的权限下才能访问 未经过主账号授权的情况下,其他主账号 uid 是不能访问用户自己的云产品和控制台。
阿里云 RAM 企业上云实战
|
数据安全/隐私保护
企业身份管理实战---RAM角色单点登录(SSO)
在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。
2281 0
企业身份管理实战---RAM角色单点登录(SSO)
|
机器学习/深度学习 弹性计算 安全
阿里云 RAM 企业上云实战
RAM 背景由来 给予 AWS 上的 Code space (代码与软件管理平台)系统数据和备份数据一并被攻击者删除。 企业上云的安全威胁排名 part1 - 云账号及其安全 云平台上多租户隔离的基本主体 阿里云现在所有云产品彼此之前都是隔离,主账号和 RAM 子账号也都是隔离的,彼此不能>互访 同一个主账号 UID 下,不同的云产品默认不能互访,需要在主账号授权的跨产品授权的权限下才能访问 未经过主账号授权的情况下,其他主账号 uid 是不能访问用户自己的云产品和控制台。
2617 0
|
4月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
520 3
|
4月前
阿里云RAM角色和自定义角色
阿里云RAM角色和自定义角色
71 1
|
6月前
|
安全 API 数据安全/隐私保护
云安全中心-云平台配置检查CIEM查询到的Ram相关的检查项,能否在阿里云OpenAPI查到同样的?
云安全中心-云平台配置检查CIEM查询到的Ram相关的检查项,能否在阿里云OpenAPI查到同样的?
65 1
|
6月前
[笔记]阿里云创建RAM用户
[笔记]阿里云创建RAM用户
|
安全 Cloud Native 数据可视化
阿里云通信相应服务RAM用户授权Quick Start
通信与每个人息息相关。云通信即基于云计算平台,将传统通信能力进行云化,为客户提供便捷高效的触达能力。在教育行业,“通知”必须在15分钟内到达,而“验证码”则要求在3秒内到达,这对通信的并发跟调度都提出了更高的要求。阿里云云通信采用云原生化的方式,通过低代码、组件化以及可视化编排,为客户提供安全可信、场景化、智能化的定制服务。在主账号开通云通信相应服务后,您可以创建RAM用户,并为RAM用户授予不同的权限,提供给您企业的员工用来管理服务资源,从而让您避免与其他用户共享云账号密钥,降低企业的信息安全风险。本文针对云通信下相应服务授予的RAM权限做一下总结,以便使用过程中可以快速参考引用。
320 0
|
安全 API 数据安全/隐私保护
阿里云短信服务RAM用户授权Quick Start
短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。在主账号开通短信服务后,您可以创建RAM用户,并为RAM用户授予不同的权限,提供给您企业的员工用来管理短信服务资源,从而让您避免与其他用户共享云账号密钥,降低您企业的信息安全风险。本文以子账号使用短信服务报错为例,简单介绍主账号授予RAM用户访问使用短信服务的操作步骤,以供参考。
552 1
阿里云短信服务RAM用户授权Quick Start
|
安全
阿里云RAM用户访问用户中心授权Quick Start
用户中心提供用户上云所涉及到的企业财务经营管理全链路能力,包括但不限于企业财务、账号中心、资金管理、卡券管理、账单管理、订单管理、分账管理、发票管理、合同管理、成本管理、资源实例管理、节省计划、SLA赔付等相关服务。目前多数企业在使用云上服务时,出于安全和管理考虑都是使用RAM账号。然而RAM用户常常在控制台进入用户中心查看近期的消费数据时往往遇到无权访问的权限问题。本文简单介绍主账号授予RAM用户访问费用中心的操作步骤,以供参考。
883 1
阿里云RAM用户访问用户中心授权Quick Start