合规与安全:阿里云与企业身份系统的集成

简介: 在阿里云的产品体系中,提供了免费的访问控制(RAM:Resource Access Management)服务来满足企业的合规与安全需求。正如本博客的所有文章都提到的一样,我们希望和鼓励广大阿里云客户充分使用访问控制服务提供的功能,完善企业云上IT设施的安全管理。

【更新:随着RAM 2.0的上线,阿里云官网提供了对SAML Federation的官方技术文档,读者可以参考:https://help.aliyun.com/document_detail/93684.html ,同时推荐用户使用RAM控制台进行配置,原企业控制台(公测)将逐步下线】

在阿里云的产品体系中,提供了免费的访问控制(RAM:Resource Access Management)服务来满足企业的合规与安全需求。正如本博客的所有文章都提到的一样,我们希望和鼓励广大阿里云客户充分使用访问控制服务提供的功能,完善企业云上IT设施的安全管理。

在本文中,我们将介绍如何通过阿里云RAM服务的身份管理能力,集成企业自己的身份系统,从而实现对员工身份在云上和云下的统一管理。

解决方案要点

阿里云采用了SAML这一行业标准来实现身份系统的互通。关于SAML协议,本文在附录中对其基本术语进行了简要介绍,帮助理解身份联盟中的基本角色与功能。

在阿里云跟企业身份系统的集成场景中,阿里云是服务提供商(SP),而企业自有的身份服务则是身份提供商(IdP)。下图描述了在这一架构下,企业员工通过企业自有身份服务登陆到阿里云控制台的流程

SSOFlow

在阿里云配置企业自有IdP之后,企业员工登陆阿里云控制台的流程如下,有两种方式

方式一 (SP发起的单点登录):

  1. 企业员工在浏览器里登陆阿里云,阿里云将SAML认证请求返回给浏览器
  2. 浏览器向企业IdP转发SAML认证请求
  3. 企业IdP提示用户登录(或者利用用户在IdP中的登陆session),并且在认证用户后生成SAML响应返回给浏览器
  4. 浏览器将SAML响应转发给阿里云
  5. 阿里云通过互信配置,确认响应中断言的完整性,并通过断言中的用户属性,匹配到对应的云目录中的子用户(RAM子用户)
  6. 登陆服务完成认证,向浏览器返回登陆session以及阿里云控制台的URL
  7. 浏览器重定向到阿里云控制台

方式二(IdP发起的单点登录):

这一方式和SP发起的单点登录的区别只在于第一步和第二步,在这一方式中

  1. 企业员工在企业IdP的门户页直接点击登陆到阿里云的链接,链接向企业IdP发出登陆到阿里云的SAML认证请求

接下来流程则对应SP发起单点登录流程中的第3步到第7步。

配置步骤

第一步:在阿里云目录中配置可信外部SAML IdP

为了配置云账号下的子账号采用外部SAML IdP登陆,需要提供外部SAML IdP的SAML元数据。常见的SAML IdP都提供了特定的地址下载SAML元数据。元数据包含了IdP的地址,用于验证签名的公钥以及断言格式等信息。

在准备好SAML元数据XML文件之后,按照下面的步骤将元数据文件配置到阿里云目录。

  • 登陆阿里云主账号,进入企业控制台的人员管理模块

entrypoint

  • 进入人员目录>目录设置>SSO设置,点击编辑SSO设置

directoryconfig

  • 编辑SSO设置对话框中,上传外部SAML IdP元数据文件,并打开SSO功能。

uploadfedmeta

第二步:在外部IdP中配置阿里云为可信SAML SP

在外部IdP中配置阿里云为可信SAML SP主要包括以下任务

创建一个SAML SP,并提供阿里云的配置信息。

  1. 从阿里云获取您的云账号的 SAML 服务提供方元数据 URL。

    1. 登录 RAM 控制台。
    2. 单击人员管理 > 设置 > 高级设置,在SSO 登录设置下可以查看当前云账号的SAML 服务提供方元数据 URL。
  2. 在外部 IdP 中创建一个 SAML SP,并配置阿里云的 SAML 服务提供方元数据 URL。

定制IdP向阿里云颁发的断言所包含的用户属性

IdP和SP需要对SAML断言的语义达成一致,从而使SAML断言的生产者和消费者能够一致理解对用户身份的表达。阿里云通过User Principal Name (UPN)来定位用户,因此要求外部IdP生成的SAML回应里包含用户的UPN。

阿里云解析SAML断言中的NameID节点,在阿里云目录中匹配用户的UPN从而实现SSO用户的认证。

因此在外部IdP里创建的阿里云SP中,需要将对应于阿里云子用户UPN的字段映射为SAML断言中的NameID。

第三步:用户配置(User Provisioning)

用户配置可以通过以下几种方式来实现,分别适用于不同的场景

  • 在阿里云目录中手动创建对应于企业目录用户的子用户
  • 通过目录同步工具从企业目录中读取用户信息,并通过阿里云Open API向阿里云目录自动同步子用户信息

接下来的文章会以Microsoft AD为例,对在AD中配置阿里云为SAML SP,从而实现AD用户登陆到阿里云进行Walkthrough。

附录

为了理解方便,简要介绍几个术语

  • IdP: Identity Provider, 身份提供商,是指提供身份管理的服务。常见的企业自有IdP有AD FS,Shibboleth等,Cloud IdP有Azure AD,Okta,OneLogin等。
  • SP: Service Provider,服务提供商,是指利用IdP的身份管理功能,为用户提供具体服务的应用。SP会消费IdP提供的用户信息。在一些非SAML协议的身份系统(比如OIDC)里,也把Service Provider称作Relying Party,也就是IdP的依赖方。
  • SAML: Security Assertion Markup Language,是一个实现企业级用户身份认证的标准协议。是SP和IdP之间实现沟通的技术实现方式之一。是目前企业身份联盟的的事实标准(SAML 2.0)。
  • SAML Assertion: 简称Assertion,SAML断言,是SAML协议中用来描述认证请求(Request)和认证响应(Response)的核心元素。例如用户的具体属性就包含在认证响应的断言里面。
  • Trust: 信赖,是指建立在SP和IdP之间的互信机制,通常由公私钥来实现。SP通过可信的方式获取IdP的的身份联盟元数据,元数据中包括了IdP用来给SAML Assertion签名的私钥的对应公钥,SP则可以使用公钥来验证Assertion的完整性(Integrity)。
目录
相关文章
|
26天前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
46 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
21天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute 生态系统中的数据集成工具
【8月更文第31天】在大数据时代,数据集成对于构建高效的数据处理流水线至关重要。阿里云的 MaxCompute 是一个用于处理大规模数据集的服务平台,它提供了强大的计算能力和丰富的生态系统工具来帮助用户管理和处理数据。本文将详细介绍如何使用 DataWorks 这样的工具将 MaxCompute 整合到整个数据处理流程中,以便更有效地管理数据生命周期。
39 0
|
15天前
|
机器学习/深度学习 DataWorks 数据挖掘
基于阿里云Hologres和DataWorks数据集成的方案
基于阿里云Hologres和DataWorks数据集成的方案
36 7
|
17天前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
20天前
|
存储 SQL 分布式计算
Hologres 与阿里云生态的集成:构建高效的数据处理解决方案
【9月更文第1天】随着大数据时代的到来,数据处理和分析的需求日益增长。阿里云作为国内领先的云计算平台之一,提供了多种数据存储和处理的服务,其中Hologres作为一款实时数仓产品,以其高性能、高可用性以及对标准SQL的支持而受到广泛关注。本文将探讨Hologres如何与阿里云上的其他服务如MaxCompute、DataHub等进行集成,以构建一个完整的数据处理解决方案。
47 2
|
23天前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
97 1
|
20天前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
29 0
|
23天前
|
机器学习/深度学习 开发工具 git
Jupyter 与版本控制系统的集成
【8月更文第29天】在数据科学和机器学习项目中,Jupyter Notebook 提供了一个强大的环境来编写代码、执行实验和记录结果。然而,随着项目的复杂度增加以及团队规模的扩大,版本控制变得至关重要。Git 是最常用的版本控制系统之一,它可以帮助团队协作、追踪变更历史、管理分支等。本文将探讨如何将 Git 与 Jupyter Notebook 集成起来,从而更好地管理代码和文档。
16 0
|
26天前
|
机器学习/深度学习 运维 搜索推荐
项目管理和持续集成系统搭建问题之云效在项目管理方面如何解决
项目管理和持续集成系统搭建问题之云效在项目管理方面如何解决
28 0
|
2月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
171 6