以保护数据安全和考虑架构合理性为出发点,我们对基于服务如何进行开发提供了一些设计和编码建议。希望开发者在使用服务之前详细阅读这些建议,并尽可能的符合这些原则,以免造成不必要的时间浪费和带来数据安全风险。
从该结构图,我们可以看到以下几个关键组件:
服务是以方式提供非结构化资源存储服务。向业务服务器提供资源管理服务,向客户端提供资源上传和下载服务。
业务服务器
业务服务器需要开发者自行管理和维护,并且至少提供如下几个基本功能:
- 生成各种安全凭证(参考安全机制),安全凭证的创建不能在客户端进行,否则会产生极大的安全风险。
- 使用关系型数据库(例如MySQL)管理用户帐号信息。最终用户信息的管理并非服务的功能范畴。云存储服务只管理企业账号。
- 使用数据库管理资源元数据和资源之间的关联关系。
- 响应客户端的业务请求,执行业务流程并返回执行结果。
客户端
客户端通常同时是资源的生产方和消费方。客户端在展示内容时,通常需要先从业务服务器获取资源的元信息,并得到必要的下载凭证,然后使用下载凭证从服务获取待展示的资源内容,从而实现一个完整的内容展示过程。
服务器获取一个有效的上传凭证,因此需要先后和两个服务端打交道。
如果有设置回调,则上传完成时会自动发起回调到指定的业务服务器。
下载
公开资源不需要对应的下载凭证,客户端可以直接从
按照实际的使用场景,客户端对于内容的展示非常类似一个动态网页的生成过程,因此无论该页面内容是公开还是私有,均需要从业务服务器获取展示该页面的动态布局信息。所以通常显示过程也是需要先后和业务服务器及
资源管理
为了防止安全漏洞,资源管理操作应该只在业务服务器端进行。如果允许客户端进行资源管理,即使将管理凭证的生成动作放到业务服务器端进行,仍然很容易被第三方截获请求全文,从而导致重放攻击的风险。
服务器组件。
发表评论 取消回复