临时账号权限(STS)

更新时间:2017-07-04 15:02:53

使用场景

对于您本地身份系统所管理的用户,比如您的App的用户、您的企业本地账号、第三方App,也有直接访问OSS资源的可能,这部分用户称为联盟用户。此外,用户还可以是您创建的能访问您的阿里云资源的应用程序。

对于这部分联盟用户,通过阿里云STS (Security Token Service) 服务为阿里云账号(或RAM用户)提供短期访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个短期访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,访问凭证过期后会自动失效。

用户通过STS生成的凭证包括安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)。使用AccessKey方法与您在使用阿里云账户或RAM用户AccessKey发送请求时的方法相同。此外还需要注意的是在每个向OSS发送的请求中必须携带安全令牌。

以一个移动App举例。假设您是一个移动App开发者,打算使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离,防止一个App用户获取到其它App用户的数据。您使用STS让用户直接访问OSS。

"ClientApp使用STS凭证访问云资源"

上图方案的详细描述如下:

  1. App用户登录。

    App用户和云账号无关,它是App的终端用户,AppServer支持App用户登录。对于每个有效的App用户来说,需要AppServer能定义出每个App用户的最小访问权限。

  2. AppServer请求STS服务获取一个安全令牌(SecurityToken)。

    在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌,角色管理与使用相关内容请参考RAM用户指南中的角色管理

  3. STS返回给AppServer一个有效的访问凭证。

    包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间。

  4. AppServer将访问凭证返回给ClientApp。

    ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证。

  5. ClientApp使用本地缓存的访问凭证去请求Aliyun Service API。

    云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求。

具体实现

STS安全令牌详情,请参考RAM用户指南中的角色管理。关键是调用STS服务接口AssumeRole来获取有效访问凭证即可。也可以直接使用STS SDK来调用该方法,单击查看。角色管理与使用相关内容请参考RAM用户指南中的角色管理部分。对于授权中需要的Policy的配置方式请参考*RAM和STS授权策略(Policy)配置