云原生AI套件通过对接外部LDAP(Lightweight Directory Access Protocol),借助企业内部账号体系登录云原生AI运维控制台,无需通过RAM账号密码登录。本文介绍如何通过对接外部LDAP登录云原生AI控制台。
前提条件
安装云原生AI套件。具体操作,请参见安装云原生AI套件。
拥有LDAP。具体操作,请参见ACK对接外部LDAP验证源的步骤一。
部署Keycloak。具体操作,请参见部署KeyCloak应用。
基础概念
LDAP(Lightweight Directory Access Protocol):账号管理及访问协议,有以下两种主流的实现方式:
AD(Active Directory):Microsoft出品,支持LDAP 2.0和3.0。
Open LDAP:Open source LDAP,支持LDAP 2.0和LDAP 3.0。
更多信息,请参见LDAP。
IDaaS(Alibaba Cloud Identity as a Service):应用身份服务IDaaS是阿里云为企业用户提供的一套集中式身份、权限、应用管理服务,帮助您整合部署在本地或云端的内部办公系统、业务系统及第三方SaaS系统的所有身份,实现一个账号打通所有应用服务。提供接入第三方认证源(IdP)以及数据的交换同步。
RAM(Resource Access Management):阿里云资源访问控制,提供用户、角色、权限管理以及SSO能力。
SSO(Single-Sign On):单点登录,也称为身份联合登录。在多个应用系统中,您只需要登录一次,就可以访问所有相互信任的应用系统。
OAuth2.0(Authorization Protocol):授权访问用户资源的协议。更多信息,请参见OAuth2.0。
OIDC(OpenID Connect):基于OAuth的ID交换协议。
SAML(Security Assertion Markup Language):实现企业级用户身份认证的标准协议,它是SP和IdP之间实现沟通技术的一种方式。SAML 2.0已经成为目前实现企业级SSO的一种事实标准。
SP(Service Provider): 即业务提供方,SP会使用IdP提供的用户信息。一些非SAML协议的身份系统(例如:OpenID Connect),也把服务提供商称作IdP的信赖方。
IdP(Identity Provider):登录时的身份提供方,认证源。
SAML同时支持由IdP发起和SP发起的登录, 即在登录IdP后,可以跳转到任意一个应用。也可以从一个应用发起登录,跳转到IdP,登录认证后,再跳转回这个应用,继续SSO。
SCIM(System for Cross-domain Identity Management):主要用于多用户的云应用身份管理。阿里云通过SCIM标准协议,结合OAuth应用的安全授权,可以将企业内部系统中的账号数据同步到阿里云访问控制(RAM)中。更多信息,请参见SCIM。
实现原理
云原生AI运维控制台对接的是阿里云访问控制(RAM)的用户单点登录(SSO),非角色SSO。而用户SSO需要同步LDAP用户信息(不包含密码)到RAM作为RAM子账号(RAM用户),同步之后配置RAM第三方SSO认证源,即可在登录RAM时,跳转至第三方IdP做登录认证。
共涉及三种角色:
云原生AI套件安装者:拥有集群操作权限,安装者默认是第一个管理员且不可删除。
云原生AI套件管理员(Admin):拥有AI运维控制台登录、操作权限。
云原生AI套件研发人员(Researcher):拥有AI开发控制台登录、操作权限。
实现原理的整体流程如下:
云原生AI安装者同步LDAP用户信息到RAM,具体操作,请参见步骤一: 同步LDAP账号到RAM。
安装云原生AI套件。具体操作,请参见安装云原生AI套件。
云原生AI管理员创建管理员或者研发人员,具体操作,请参见步骤二:在AI运维控制台新建管理员。
管理员登录AI运维控制台,具体操作,请参见步骤三:LDAP用户登录AI运维控制台。
说明研发人员登录AI开发控制台与管理员登录AI运维控制台流程相同。
下图为实现管理员登录云原生AI运维控制台的具体交互流程:
步骤一: 同步LDAP账号到RAM
同步LDAP账号到RAM的方法有手动同步和自动同步两种,您可以根据实际情况选择相应的同步方式:
如果企业账号较少,您可以通过手动同步,为每个用户创建RAM子账号。
如果企业账号较多,您可以借助IDaaS自动全量或增量同步。
方法一:手动同步LDAP账号到RAM
登录 RAM 控制台。
在RAM控制台左侧导航栏中,选择 。
在用户页面,单击创建用户。
在创建用户页面,输入登录名称和显示名称,单击确定。
说明登录名称与LDAP中的用户名需保持一致。
方法二:通过IDaaS同步LDAP账号到RAM
创建具有AliyunRAMFullAccess权限的RAM账号(即RAM用户)。具体操作,请参见RAM账号准备。
说明如果您已经拥有AliyunRAMFullAccess权限的RAM账号,该步骤可跳过。
将生成的AccessKey ID和AccessKey Secret安全保存到本地。
IDaaS添加阿里云控制台。具体操作, 请参见IDaaS添加阿里云控制台。
上图红框中的参数配置需要用到步骤一中的AccessKey ID和AccessKey Secret。
如果在配置完成后,您需要修改阿里云控制台应用的信息,在应用列表页面,关闭应用状态开关,然后单击修改应用即可。
同步LDAP账号到IDaaS。
新建LDAP对接配置。
登录应用身份管理控制台,单击免费创建实例。
在创建实例面板中,输入实例描述,并勾选相应协议,然后单击创建。
在实例列表中,选择已创建的目标实例进入云身份服务快速入门页面,然后单击绑定 OpenLDAP。
在绑定 OpenLDAP的连接 LDAP页面,设置LDAP的配置信息,然后单击下一步。
关于绑定OpenLDAP的更多信息,请参见绑定OpenLDAP。
从AD导入账户及组织机构。具体操作,请参见从AD导入账户及组织机构。
结果验证
在账户与组织页面,可以在右侧查看详情区域的账户页签,查看到从LDAP同步到IDaaS的账号。
说明从LDAP同步用户到IDaaS时,如果有用户已同步,您可以一键移除处理。
从IDaaS同步账号到RAM。
说明通过上述3个操作步骤,LDAP中的用户信息已经同步到IDaaS的阿里云RAM-用户SSO应用中,您还需要通过SCIM协议把IDaaS应用中的用户,同步到RAM即可。
配置SCIM同步。具体操作,请参见配置SCIM同步。
相关参数配置获取方法:
SCIM同步地址=IDaaS实例域名+用户获取API。例如,IDaaS实例域名为
pvfjoa****.login.aliyunidaas.com
,用户获取API为/api/application/plugin_aliyun/scim/account/fdeba622128415bb6da37e0915341d46AEklnKK****
,则SCIM同步地址为pvfjoa****.login.aliyunidaas.com/api/application/plugin_aliyun/scim/account/fdeba622128415bb6da37e0915341d46AEklnKK****。登录云盾IDaaS管理平台,获取当前IDaaS实例域名。
用户获取API的方法如下:
在IDaaS实例详情的左侧导航中,选择
。单击应用名称为阿里云RAM-用户SSO右侧操作列下的详情。
在应用信息区域,单击查看详情。在应用详情(阿里云RAM-用户SSO)面板中,账户同步地址即为用户获取API。
用户账户同步接口认证的client_id和client_secret。
在API区域,打开API开关,分别单击API Key和API Secret,将API Key和API Secret安全保存到本地。
对新应用授权。
在IDaaS实例详情的左侧导航栏中,选择
。在应用授权页面,单击组织机构页签,选中目标应用和目标组织机构,单击保存。
在系统提示对话框功能,单击确定。
同步IDaaS用户信息到RAM。
在IDaaS实例详情的左侧导航中,选择
。在机构及组页面,单击dev,您可以在右侧查看详情区域的账户页签。
单击步骤3中从LDAP同步到IDaaS的用户右侧操作列下的账户同步。
在账户同步面板,单击同步。
说明您也可以配置自动同步,这样每次从LDAP导入用户到IDaaS时,IDaaS会自动同步用户到RAM。具体操作请参见自动同步账户配置。
结果验证
登录 RAM 控制台。
在RAM控制台左侧导航栏中,选择
。在用户页面,如果能查看到步骤3中从LDAP同步到IDaaS的用户信息,则说明您已成功从IDaaS同步用户信息到RAM。反之,则说明同步失败。
步骤二:在AI运维控制台新建管理员
同步LDAP用户信息到RAM后,您可以在AI运维控制台看到对应的用户信息。
步骤三:LDAP用户登录AI运维控制台
同步LDAP用户信息到RAM,并在AI运维控制台创建完用户后,您只需要通过配置RAM的用户SSO认证源,就能达到通过LDAP登录到AI运维控制台的目的:
通过IDaaS接入第三方LDAP认证源。
通过RAM对接支持SAML协议的IdP登录。
通过RAM对接OpenLDAP登录。
方法一:LDAP用户通过IDaaS接入第三方LDAP认证源登录AI运维控制台
用IDaaS SSO接管RAM SSO。具体操作,请参见阿里云控制台中配置SSO单点登录和从IDaaS单点登录到阿里云控制台的步骤1~4。
说明SAML元数据配置metadata.xml文件需从应用详情(阿里云RAM-用户SSO)面板中的IDaaS IdentityId参数位置下载。
通过IDaaS接入第三方LDAP认证源具体操作,请参见LDAP认证登录的步骤1~3。
重要在认证源页面,请确保LDAP的状态是打开。
认证源详情(LDAP)面板中的相关参数说明如下:
LDAP URL:需要用到LDAP配置面板中的服务器地址和端口号,具体格式为:
ldap://<服务器地址>:<端口号>/
。LDAP Base:即为LDAP配置面板中的Base DN参数值。
LDAP账户:即为LDAP配置面板中的管理员DN参数值。
过滤条件:
cn=$username$
。LDAP加密方式:MD5。
显示:选中。
方法二:LDAP用户通过RAM对接支持SAML协议的IdP登录AI运维控制台
阿里云与企业进行用户SSO时,阿里云是服务提供商(SP),而企业自有的身份管理系统则是身份提供商(IdP)。通过用户SSO,企业员工在登录后,将以RAM用户身份访问阿里云。
当管理员在完成用户SSO的相关配置后,企业员工Alice可以通过如下图所示的方法登录到阿里云。更多信息,请参见基本流程。
通过配置相应元数据来建立阿里云对企业IdP的信任,实现企业IdP通过用户SSO登录阿里云。具体操作,请参见进行用户SSO时阿里云SP的SAML配置。
在企业身份提供商中配置阿里云为可信SAML服务提供商。具体操作,请参见进行用户SSO时企业IdP的SAML配置。
如果您的IdP是AD FS,则关于如何使用AD FS进行用户SSO的示例,请参见使用AD FS进行用户SSO的示例。
如果您的IdP是Okta,则关于如何使用Okta进行用户SSO的示例,请参见使用Okta进行用户SSO的示例。
如果您的IdP是Azure AD,则关于如何使用Azure AD进行用户SSO的示例,请参见使用Azure AD进行用户SSO的示例。
方法三:LDAP用户通过RAM对接OpenLDAP登录AI运维控制台
OpenLDAP自身不支持SAML协议,不能作为独立IdP对外提供认证服务,所以需要借助Keycloak等封装。本文以OpenLDAP和Keycloak的组合,介绍LDAP用户如何通过RAM对接OpenLDAP登录AI运维控制台。
可选:部署OpenLDAP环境,具体操作,请参见ACK对接外部LDAP验证源的步骤一。
可选:搭建Keycloak。具体操作,请参见部署KeyCloak应用。
配置Keycloak对接OpenLDAP,并同步用户信息至Keycloak。具体操作,请参见配置Keycloak应用。
在KeyCloak中添加阿里云为SAML服务提供商。具体操作,请参见添加阿里云为SAML服务提供商。
重要Name ID Format为
email
。配置RAM用户SSO,用Keycloak接管RAM登录认证。具体操作,请参见阿里云控制台中配置SSO单点登录。
SAML元数据配置Metadata.xml文件需从Keycloak下载,且必须是
xml
格式。需开启辅助域名,辅助域名设置为本方法操作步骤3中(添加
test.com
域)的名称的值。
常见问题
问题现象
当配置Keycloak对接OpenLDAP,并同步用户至Keycloak时,出现以下报错:
keycloak sync faild Failed during import user from LDAP: org.keycloak.models.ModelException: User returned from LDAP has null username! Check configuration of your LDAP mappings.
解决方法
检查Keycloak的报错日志,且排查Users DN字段是否缺失或有空格。
问题现象
当认证完成后,不能正常跳转,出现以下报错:
unknown sp_code
解决方法
重新登录AI运维控制台。
问题现象
当LDAP用户通过RAM对接OpenLDAP登录AI运维控制台时,出现以下报错:
该用户不存在 {"UserPrincipalName":"newldapuser@198370611786****.onaliyun.com"}
解决方法
确认以下几点:
用户是否在RAM中存在。
Keycloak中Name ID Format是否为
email
。SSO登录设置需要开启辅助域名,且辅助域名与Keycloak中需保持一致。