移动应用客户端安全访问AWS服务的解决方案
下面我们以一个典型的手机图片管理APP演示项目为例来介绍如何利用AWS相关服务设计和开发一套TVM系统。读者可以通过参考演示项目的设计思想和相关源码快速开发出符合自己项目需求的TVM系统。
假设该演示项目的基本需求如下:
1) 用户在使用该APP前要先完成注册
2) 用户成功登录后可以通过APP上传,查看和管理自己的图片
3) 用户不可以访问到其他用户的图片
整个演示项目实现可以分为三个主要模块:移动客户端、TVM系统和S3服务。
A. 移动客户端
- 包括访问TVM系统获取临时安全证书的客户端代码
- 包括直接访问AWS S3存储桶用户个人目录内容和图片管理相关的代码逻辑实现。
B. TVM系统
- 使用了一台AWS EC2实例来运行Apache Tomcat Web服务器,用于向移动客户端提供远程访问接口以获取临时安全证书。在Tomcat内部则部署了使用JAVA语言开发的TVM服务器端实现。
- 使用了AWS 高性能的NoSQL数据库DynamoDB做为后台用户数据库。该数据库用来保存注册用户的账号、密码和会话Key等信息。
开发者自行设计和实现TVM系统的时候,完全可以使用自己熟悉的数据库产品或者集成第三方已有的用户数据库服务,比如基于LDAP的企业内部用户数据库。
- TVM系统的JAVA实现通过访问AWS STS服务获取临时安全证书以提供给移动客户端。
- 在真实的项目中,运行TVM系统的服务器端往往还将直接管理S3中保存的所有用户资源,比如可以限制每个用户允许上传图片的数量和文件合计大小等等。这部分功能在本演示项目中暂时没有实现。
C. S3服务
- AWS S3服务为用户上传图片提供了持久化存储能力。
在用户成功完成账号注册后,TVM系统的基本工作流程如下:
1) 用户通过移动客户端输入账号和密码,登录系统。
2) TVM查询用户数据库,校验账号和密码组合的合法性。
3) TVM访问AWS STS服务,请求分配临时证书,TVM将获得的临时安全证书返回移动客户端。
4) 移动客户端使用获取的临时安全证书,调用AWS S3 API,执行文件的上传、列表和下载等操作。
部署过程
- 使用IAM用户账号登录AWS控制台
- 创建IAM EC2角色
- 创建临时安全证书角色
- 在Launch TVM EC2实例的过程中,选择使用创建的IAM EC2角色
- 在TVM EC2实例中部署Tomcat和TVM war包
- 下载并安装TVM apk文件到安卓移动终端