什么是SSO(单点登录)?
企业通过SSO(单点登录)功能可以实现通过一套统一身份认证系统(Identity Provider),一次登录可以访问多个不同互信系统(Service Provider)。在云计算中通常使用单点登录实现企业自有身份认证系统登录云平台及各类云上运维、研发系统。
为什么需要SSO?
企业在内部管理、基础建设和生产经营上都会使用到各种系统,包括自研的/外部采购的、本地部署的/云端服务等等,每套系统又都有自己的身份系统用于管理和验证访问者身份以及权限。这意味着一个企业的员工身份分散在各个系统中,不仅配置繁琐还容易存在管理漏洞,导致员工身份泄露、不能及时收回、无法审计等安全风险。如果能用一套身份体系管理,员工经过统一的身份认证登录到各个管理系统中,对管理者和使用者而言都是兼具便捷性和安全性的理想方式。单点登录single-sign-on就是实现统一身份认证的一种解决方案。
企业将自有的身份管理系统与阿里云进行单点登录集成可获得如下收益:
统一管理,提升管理效率:通过单点登录直接集成,企业无需再为员工单独创建阿里云账号密码,可减少重复的身份管理工作。
加强安全性:一个员工在多个系统有账号密码,如果使用相同的密码将增加密码暴露的风险,而如果使用不同的密码,员工为了便于记忆,很可能使用简单的弱密码,更易被破解。统一登录系统有利于执行更强的密码策略,减少密码泄露风险。
登录便捷:员工只需要通过同一个身份认证平台,就可以登录到各种管理系统,减少不必要的登录操作。
有利于审计:企业可以通过统一的登录认证系统审计员工的访问记录,还可将员工身份和各系统平台(例如阿里云控制台)的访问身份进行对应关联。
SSO的工作原理是什么?
单点登录SSO是在企业身份提供方IdP和服务提供方SP(应用程序/服务)之间建立信任关系,通过几种主流的标准协议实现两者之间的通信,传递验证信息和验证结果,从而实现通过企业的系统登录服务提供方的平台。
SAML
Security Assertion Markup Language (SAML) 安全断言标记语言,是一种基于XML的开放标准,用于在身份提供方 (IdP) 和服务提供方 (SP)之间描述和交换数据。信息用SAML断言(SAML assertion)的形式表达,使得应用程序之间可以基于断言相互信任。
企业与阿里云进行单点登录集成主要使用SAML 2.0协议。
OAuth 2.0
OAuth 2.0是一种行业标准的授权协议,本质上并不是一种认证服务,但是可以用来实现单点登录的目的。网站或应用程序在通过OAuth协议获得授权后,不需要获取用户名密码,而是使用OAuth颁发的令牌代表用户访问授权方的资源。
阿里云访问控制将OAuth 2.0协议用于授权三方应用访问阿里云,区别于企业身份登录阿里云的SSO场景。
OIDC
OIDC(OpenID Connect)是建立在OAuth 2.0基础上的认证协议。OAuth是授权协议,而OIDC在OAuth协议上构建了一层身份层,除了OAuth提供的授权能力,它还允许客户端能够验证终端用户的身份,以及通过OIDC协议的API(HTTP RESTful形式)获取用户的基本信息。Web应用程序不是将身份验证令牌传递给第三方身份提供商,而是使用OIDC来请求附加信息并验证用户的真实性。
阿里云访问控制同样支持基于OIDC协议的角色SSO单点登录。
SSO有哪些实际应用?
例如企业员工需要使用多套不同的内部系统,例如办公系统、客户关系管理系统、HR系统等,每个系统都需要通过登录后才可使用。通过SSO,企业员工统一登录一次后,就能在不同的系统间无障碍地切换并访问这些系统。
SSO有哪些类型?
根据最终登录到服务提供方SP的身份不同,SSO可以分为用户SSO和角色SSO两种模式,但实际情况取决于SP的身份权限体系及提供的SSO服务。
用户SSO:企业自有身份的用户,通过一致的用户名匹配,登录到对应的SP用户身份。因此需要为所有需要访问SP的用户,在SP身份系统内创建一一对应的用户,或使用SCIM同步协议等方式将企业IdP的用户直接同步到SP。对用户做权限策略的分配需要在SP对映射用户进行授权管理。
角色SSO:即企业自有身份体系内的多个用户,可以登录到同一个SP的角色身份,因此不需要为所有访问SP的企业员工创建对应用户,而是创建一系列代表某些特定职责的角色。通过在IdP侧为用户分配IdP的角色,与SP角色的匹配来完成登录。权限管理可以通过IdP侧的角色分配来控制。
阿里云如何帮助您实现SSO需求?
相关产品
云SSO:
云SSO支持多账号统一身份管理与访问控制。
企业在资源目录管理账号内使用云SSO进行单点登录集成。云SSO内置了自有目录与成员账号的角色SSO能力,客户无需逐个进行账号配置,就能自动实现资源目录各个成员账号的单点登录,并且可以集中在云SSO为员工分配各个账号的权限(通过角色实现)。因此客户需要在云SSO维护一套身份,同时支持通过SCIM协议将用户同步到云SSO。
访问控制RAM支持企业通过SAM L2.0协议或OIDC协议SSO单点登录阿里云管控体系访问云资源,支持用户SSO和角色SSO两种方式:
角色SSO:企业用户登录后,使用该RAM角色访问阿里云资源。
角色SSO适用于以下情况:
熟悉角色SSO模式,有利于统一管理。
不希望在阿里云保留身份信息。
用户数量多,不希望在阿里云管控体系中再管理大量的用户身份。
选择角色SSO可以与密码登录并存,可以保留部分特权用户或不能使用SSO的用户采用密码登录。
用户SSO:企业用户登录后,使用SAML断言中指定的RAM用户访问阿里云资源。
用户SSO适用于以下情况:
有部分云产品不支持角色(即STS访问),为了便于使用这些产品选择用户SSO模式。
用户SSO一旦开启,所有RAM用户都不能再用密码登录,可以保证管理的一致性。
IdP用户与访问控制用户保持同名映射,审计时更易于分辨实际操作人身份。
支持集成的身份提供商:
支持与标准IdP服务提供商集成,包括企业自建和一些成熟的身份管理商业化产品,如Azure AD、Okta、Google Workspace等,可以直接与访问控制RAM进行单点登录集成。
支持本地部署IdP,例如LDAP、微软AD。
本地部署Azure AD,可以借助AD FS(联合身份验证服务)与阿里云进行单点登录集成。
可使用开源的软件KeyCloak、Shibboleth与阿里云进行单点登录集成。
EIAM提供多个企业应用的身份和权限管理,支持与钉钉、企业微信、AD/LDAP账户或组织、Okta/AzureAD集成并同步身份数据。
如果您的企业没有IdP,以上各类产品均可以选择。
最佳实践
使用AD FS进行用户SSO的示例:基于Windows Server 2012 R2 ECS实例搭建AD FS,实现AD FA的用户通过SSO登录到阿里云管控体系并访问阿里云资源。
Azure AD与云SSO进行单点登录的示例:企业部署了本地Azure AD,实现Azure AD的用户通过SSO登录到阿里云管控体系,访问资源目录指定成员账号中的指定资源。
在钉钉工作台单点登录到应用:将IDaaS中的应用集成到钉钉工作台,实现在钉钉工作台通过单点登录(免登)该应用。