应用软件(SaaS)快捷申请用户资源访问授权

更新时间:

应用软件(SaaS)可以通过扮演用户身份访问和使用用户的阿里云资源,在用户使用应用软件(SaaS)时集成阿里云产品能力,如集成阿里云的云通信能力提供语音呼叫和短信发送能力。

传统的方式有两种,一种方式是用户创建RAM子账号,配置所需的权限策略,提供子账号的AccessKey和SecretKey给服务商,服务商通过AccessKey和SecretKey以用户身份调用阿里云OpenAPI。这种方式存在数据安全问题,提供的AccessKey和SecretKey难以管理,存在泄露风险。 另一种方法是由用户创建RAM角色,在信任策略中授权给服务商的阿里云账号,配置所需的权限策略。服务商使用自己的阿里云账号通过STS AssumeRole扮演用户的RAM角色以用户身份调用阿里云OpenAPI。这种方式需要用户理解RAM权限体系及语法,并操作5-7步,操作路径过长,导致技术能力欠佳的用户使用成本过高。 云市场通过SaaS加速器提供跨账号角色授权能力,支持应用软件(SaaS)快捷安全获取用户授权以访问用户云资源,提升用户体验。

云市场跨账号角色授权方案简介

入驻云市场的服务商通过创建SaaS加速计划接入跨账号角色授权能力,在完成SaaS加速计划时创建跨账号角色模板,定义跨账号角色名称、权限策略、授权主体等。当用户通过云市场或其他渠道订购应用软件(SaaS)后,引导用户访问授权页查看并授权创建跨账号角色后,服务商可以通过STS AssumeRole扮演用户角色以用户身份访问用户的阿里云资源。整体流程如下: 云资源

image

创建跨账号角色模板

服务商需先入驻云市场并做如下准备:

  • 根据应用软件(SaaS)所需权限,在RAM控制台创建并测试好权限策略。如果需要最小粒度授权,可以准备多个权限策略以创建多个跨账号角色模板。

  • 开发一个无需登录可访问的授权说明页面,向用户介绍应用软件(SaaS)所需权限和目的。在授权说明页还需要给出服务商阿里云UID,用于用户在授权时填入并核验。具体页面规范参考服务商授权说明页规范。 用户授权时会提示用户前往服务商权限说明页面查看服务商UID并输入。

image

  • 准备一个RAM子账号作为跨账号角色的授权主体,后续使用这个子账号进行角色扮演。

服务商通过创建SaaS加速计划接入跨账号角色授权能力,在完成SaaS加速计划时创建跨账号角色模板,定义跨账号角色名称、权限策略、授权主体等,参考在SaaS加速计划中创建跨账号角色模板操作指引

生成跨账号角色授权链接

创建跨账号角色模板后,参考在SaaS加速计划中创建跨账号角色模板操作指引复制对应角色模板的授权链接。根据需要可以增加参数以实现授权成功后回调、指定授权云账号等功能,参考跨账号角色授权链接规范

引导用户授权创建跨账号角色

引导用户授权有两种方式,分别是用户访问云市场买家控制台服务实例列表去授权和用户使用SaaS时服务商按需申请用户授权,下面分别进行介绍

用户访问云市场买家控制台服务实例列表去授权

用户从云市场订购应用软件(SaaS)后进入云市场买家控制台,会检查实例关联的云市场应用软件(SaaS)商品所需的跨账号角色是否已授权,这依赖于服务商关联到该商品的SaaS加速计划中配置的跨账号角色模板。如果未授权会在已购买实例列表中提示并引导用户前往授权页进行授权。

用户使用SaaS时服务商按需申请用户授权

如果用户未按照方式一从云市场买家控制台进行授权或用户是通过其他渠道订购,服务商可以在用户使用应用软件(SaaS)时按需引导用户授权,用户同意授权后回调服务商页面,可以通过回调URL参数获取授权用户信息,流程如下:

image

  • 尝试扮演跨账号角色访问用户云资源

用户使用应用软件(SaaS)时,根据是否已知用户的阿里云账号,如已知用户的阿里云账号,扮演跨账号角色访问用户云资源先进行尝试。尝试后未获取授权或用户的阿里云账号未知时,引导用户访问授权页进行授权。

  • 引导用户访问授权页进行授权

通过生成好的跨账号角色授权链接引导用户访问,查看所需权限并同意授权。需要注意用户可以对权限策略进行修改以更精准、安全得授权,因此用户授权的策略范围不一定与服务商在跨账号角色模板中指定的一致。

  • 授权成功回调服务商页面

开发授权成功回调页面,通过在授权页链接中增加returnurl参数指定回调地址,用户在同意授权后会重定向到回调地址,并增加代表用户身份的令牌token参数。服务商可以使用令牌换取授权用户阿里云账号信息,结合服务商回调地址的应用软件(SaaS)登录态完成授权用户的应用软件(SaaS)账号与阿里云账号的绑定,用于跨账号角色扮演。

  • 获取授权用户信息

用户同意授权回调后,服务商可以调用查询跨账号角色授权信息接口查询授权用户信息,包括授权用户阿里云账号名称、授权用户的阿里云账号id、授权时间戳、授权角色。

  • 再次尝试使用跨账号角色访问用户云资源

用户授权成功后,可再次尝试使用跨账号角色访问用户云资源,确认已授权成功,否则需再次引导用户授权。

扮演跨账号角色访问用户云资源

通过STS AssumeRole扮演客户的跨账号角色,需要注意跨账号角色的信任策略授权中只包含创建跨账号角色模板时授权主体指定的RAM子账号,需要使用该账号进行角色扮演。 使用角色扮演后返回的访问凭证以用户身份调用OpenApi访问用户的云资源。如果用户在授权时修改了权限策略,可能会出现权限不足,此时可以按需重新引导用户授权。