摘要:当阿里云客户使用云存储服务来保存来自其客户端的用户数据时,现有的解决方案都存在一些问题。针对这一场景及问题,本文介绍了一种轻量级的安全解决方案,即使用STS服务授权客户端直接访问云存储。本文阐述了STS方案的基本原理,并且结合具体应用场景,对实施步骤进行了详细的描述。
1 引言
假设您是阿里云客户,您打算使用公共云服务来构建应用系统,比如为您的用户提供安防监控视频存储解决方案。当您使用云存储服务来保存来自客户端的用户数据(如支持Wifi功能的摄像头所记录的数据)时,一种典型设计模式是让客户端通过一个前端代理服务来实现数据的上传下载,如图1所示。
这个代理服务需要实现对您的客户端的身份验证、业务规则验证,并提供数据缓存与中转功能。这种设计模式存在一个缺点,当客户端规模较大时,设计这种满足规模扩展且支持大批量事务处理的代理服务是非常困难的,而且研发成本也非常昂贵。
一种改造方案是实现一个轻量级的前端服务(本文称之为AppServer),它只需要实现对客户端的身份认证,并为客户端读写OSS数据的调用请求提供签名授权。如图2所示。
这种改造方案使代理服务能有效避免进行数据中转,能让客户端有权限直接操作您的云存储。但这一改造方案也存在一个不足,就是这个代理服务会成为整个解决方案的单点,因为您所有的客户端到OSS的访问请求都需要通过这个代理服务进行签名授权。为了避免单点故障,您需要将这个代理服务设计成支持高并发和高可用的在线服务,这个设计和研发成本也比较昂贵。
针对这一场景及现有方案存在的问题,本文将介绍一种更轻量、更安全的基于STS (Security Token Service)的解决方案——使用STS授权您的客户端直接访问云存储。
2 阿里云STS服务简介
STS是阿里云为客户提供的一种安全令牌管理服务,它是资源访问管理(RAM)产品家族中的一员。通过STS,获得许可的云服务或RAM用户可以自主颁发自定义时效和子权限的一个访问令牌。获得访问令牌的应用程序可以使用令牌直接调用阿里云服务API操作资源。关于STS的更多内容请参考RAM在线文档:https://docs.aliyun.com/#/pub/ram
3 使用STS授权您的客户端直接访问云存储
基于STS方案的一个顶层描述如图3所示。AppServer是一个轻量级的前端服务。它不必做数据中转工作,也不必为所有的客户端