IAM角色联合
配置IAM角色联合
你可以通过配置企业端IdP的SAML节点和百度智能云SP的 外部账户接入 > IAM角色SSO ,从而实现以百度智能云的角色身份从企业应用到百度智能云的单点登录(SSO)。
先决条件
- 企业IdP支持SAML 2.0协议;
- 拥有百度智能云的账号并激活。
配置流程
配置基于SAML的单点登录功能,需要同时完成IdP配置和SP配置,其中IdP配置包含基本配置、用户属性配置和下载元数据等,SP配置包含创建身份服务提供商和配置角色载体(用于生成最终的信任策略)。本文以微软公司的Azure Active Directory(AAD)为IdP,介绍如何配置SAML IdP和百度智能云的SP。
配置IdP
- 按照流程,注册Azure 账号;
- 登录Azure门户,在左侧导航栏中,进入 所有服务 > Azure Active Directory ;
-
点击 企业应用程序 > 新建应用程序 ,并选择 非库应用程序 ,填写应用名称,点击 添加 完成应用程序创建;
注意:非库应用程序要求开通AAD专业版,你可以选择开通免费试用版,并在完成配置后选择是否需要关闭该试用版。
- 进入应用程序,选择 单一登录 > SAML ;
- 在基本SAML配置中,点击右上方编辑按钮,配置 标识符(实体ID) 和 回复URL(断言使用者服务URL) 字段为
urn:bce:baidu:webservices
和https://login.bce.baidu.com/saml
- 在用户属性和字段中,点击右上方编辑按钮,添加如下用户属性字段:
名称 | 源 | 源属性 | 说明 |
---|---|---|---|
https://bce.baidu.com/SAML/Attributes/Role |
属性 | accountId:role/roleName, accountId:saml-provider/providerName | 将accountId字段替换为百度智能云中的实际accountId(在百度智能云用户中心获取), roleName字段替换为联合登录时的角色名称字段(SP角色管理中配置),如“BCCAdmin”, providerName字段替换为IdP名称,如azure |
https://bce.baidu.com/SAML/Attributes/RoleSessionName |
属性 | RoleSessionName | 将RoleSessionName替换为你想要在百度智能云中显示的用户名,如User01 |
以上2个字段为必填字段,你可以根据需要添加额外的用户属性字段,详细配置参考本地身份服务的SAML断言配置说明
- 在SAML签名证书中,下载IdP SAML元数据,IdP的配置到此结束。
配置SP
新建SP身份提供者
- 登录百度智能云, 鼠标移到右上角,进入多用户访问控制 > 外部账号接入 > IAM角色联合;
-
点击添加身份提供者,填写名称、描述,并将上述IdP配置步骤7中下载的SAML元数据导入,点击确定 保存;
注意:这里的身份提供者名称必须与IdP中配置的用户属性
providerName
保持一致,案例中填写azure
;
配置IAM角色并授权
从左侧导航栏中点击角色管理,配置当以外部身份单点登录到百度智能云时可配置的角色,这里以虚拟机BCC的管理人员角色为例
- 点击创建新角色,填写角色名称如“BCCAdmin”,描述为“BCC管理人员角色”;
- 在角色载体中,选择载体类型为外部账号,载体实例选择上一步中添加的“azure”,
- 你还可以为IdP设定可切换到百度智能云的条件限制,当前百度智能云支持的属性字段有:saml:iss, saml:aud, saml:cn, saml:eduPersonAffiliation, eduPersonPrincipalName。添加限制条件的作用在于更精细化的权限控制,只有在某些条件匹配下,才可以以BCCAdmin角色的形式SSO到百度智能云;
- 在策略管理中,将“BCCFullControlAccessPolicy”授予给当前角色,点击完成;
- 如果你需要为当前IdP设置不同的角色,可以按照如上步骤继续配置,IdP内身份SSO到百度智能云时,通过
https://bce.baidu.com/SAML/Attributes/Role
属性字段roleName进行切换。
到此,你已经完成了百度智能云SAML SP的配置工作,下一步你可以回到Azure AD中测试单点登录的效果。
本地身份服务的SAML断言配置说明
基本配置
- SubjectConfirmationData中的
Recipient
字段必须配置为https://login.bce.baidu.com/saml
- AudienceRestriction中的Audience字段需要配置为
urn:bce:baidu:webservices
- 属性中需要有名称为
https://bce.baidu.com/SAML/Attributes/Role
的断言,并且格式为“accountId:role/roleName, accountId:saml-provider/providerName”,其中accountId需要替换为目标账户的实际AccountId, roleName配置为你期望SSO到百度智能云时扮演的角色, providerName配置为IAM角色联合中配置的身份提供商名称; - 属性中需要有名称为
https://bce.baidu.com/SAML/Attributes/RoleSessionName
的断言,RoleSessionName会显示在百度智能云,格式为字符串。
SAML断言属性
SAML断言的名称和IdP信任策略的属性是一一对应的,目前百度智能云支持的属性包括: saml:iss, saml:aud, saml:cn, saml:eduPersonAffiliation, saml:eduPersonPrincipalName,它们对应的SAML属性分别是:
名称 | 属性含义 |
---|---|
saml:iss | SAML断言的Issuer字段,非必填 |
saml:aud | SAML断言AudienceRestriction中的Audience字段 |
saml:cn | SAML断言中的urn:oid:2.5.4.3属性 |
saml: eduPersonAffiliation | SAML断言中的urn:oid:1.3.6.1.4.1.5923.1.1.1.1属性 |
saml: eduPersonPrincipalName | SAML断言中的urn:oid:1.3.6.1.4.1.5923.1.1.1.6属性 |
验证单点登录
先决条件
已经完成IdP和SP的SAML配置。
操作指南
- 登录Azure门户,导航到 所有服务 > Azure Active Directory > 企业应用程序 > testApp ;
- 点击 用户和组 > 新建用户 ,将需要授权单点登录的用户授权到该应用程序;
- 点击 单一登录 ,点击 Validate , 选择使用 作为当前用户登录 ,即可测试跳转到百度智能云页面;
- 如果需要将登录链接嵌入到企业应用中,可以直接在如下位置获取:
注意
开发时,在重定向到https://login.bce.baidu.com/saml
的时候需要携带SAMLResponse
中的信息,此信息中需要标明用户具体的身份断言。
<RequestedAttribute isRequired="true" Name="https://bce.baidu.com/SAML/Attributes/Role" FriendlyName="RoleEntitlement"/>
<RequestedAttribute isRequired="true" Name="https://bce.baidu.com/SAML/Attributes/RoleSessionName" FriendlyName="RoleSessionName"/>
这两个属性是必传的属性,其中
- 属性
https://bce.baidu.com/SAML/Attributes/Role
用于表示用户当前访问的账户,角色,和IdP名称,其格式为"accountId:role/roleName, accountId:saml-provider/providerName",其中accountId
为百度智能云中实际的账户ID,roleName
填写上文配置的BCCAdmin,表示通过SAML登录的用户拥有管理员权限,providerName
则为配置外部身份提供者的名称字段; - 属性
https://bce.baidu.com/SAML/Attributes/RoleSessionName
为用户百度智能云在控制台中显示的相应用户名称,此名称也会记录到操作日志中。