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

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

默认标题_公众号封面首图_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,敬请期待。

目录
相关文章
|
6月前
|
缓存 运维 Devops
云效产品使用报错问题之提示需要创建一个 RAM用户名的企业如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
域名解析 网络协议 数据安全/隐私保护
DNS解析问题之授权RAM子账号管理指定域名如何解决
DNS解析是指将人类可读的域名转换成机器可读的IP地址的过程,它是互联网访问中不可或缺的一环;本合集将介绍DNS解析的机制、类型和相关问题的解决策略,以确保域名解析的准确性和高效性。
419 1
|
数据安全/隐私保护
企业身份管理实战---RAM角色单点登录(SSO)
在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。
2375 0
企业身份管理实战---RAM角色单点登录(SSO)
|
弹性计算 网络安全 数据安全/隐私保护
RAM角色集成企业OpenLDAP身份认证
企业OpenLDAP用户以KeyCloak实现用户/用户组映射为RAM角色的SSO。
RAM角色集成企业OpenLDAP身份认证
|
弹性计算 网络安全 数据安全/隐私保护
RAM角色集成企业AD FS身份认证
企业AD用户组与RAM角色映射,实现与阿里云的角色SSO。
RAM角色集成企业AD FS身份认证
|
弹性计算 网络安全 数据安全/隐私保护
RAM用户集成企业AD FS身份认证
企业 AD用户与RAM用户映射,实现与阿里云的用户SSO。
RAM用户集成企业AD FS身份认证
|
机器学习/深度学习 弹性计算 安全
阿里云 RAM 企业上云实战
RAM 背景由来 给予 AWS 上的 Code space (代码与软件管理平台)系统数据和备份数据一并被攻击者删除。 企业上云的安全威胁排名 part1 - 云账号及其安全 云平台上多租户隔离的基本主体 阿里云现在所有云产品彼此之前都是隔离,主账号和 RAM 子账号也都是隔离的,彼此不能>互访 同一个主账号 UID 下,不同的云产品默认不能互访,需要在主账号授权的跨产品授权的权限下才能访问 未经过主账号授权的情况下,其他主账号 uid 是不能访问用户自己的云产品和控制台。
阿里云 RAM 企业上云实战
|
安全 API 对象存储
企业上云最佳实践:账号安全管理之 RAM 访问控制
企业上云往往会面临各种各样的安全威胁,数据丢失、系统漏洞、账号共享、外部攻击等等不一而足。
6267 0
|
Web App开发 安全 数据安全/隐私保护
RAM SSO功能重磅发布 —— 满足客户使用企业本地账号登录阿里云
阿里云RAM (Resource Access Management)为客户提供身份与访问控制管理服务。使用RAM,可以轻松创建并管理您的用户(比如雇员、企业开发的应用程序),并控制用户对云资源的访问权限。
3727 0
|
Web App开发 测试技术