我有一张小桌子(100条记录),我保存在我的Dynamodb后端。我的网络应用程序将在会话开始时扫描表格。然后用户将使用不同的参数查询此数据。我的目的不是为了每个查询而去我的后端,而是在客户端(前端)进行,以获得更好的性能。
但是因为我不希望任何人看到我的小表数据,所以我希望在到达后在浏览器端发送和解密时对其进行加密。我使用Nodejs,dynamodb和API网关作为后端(AWS无服务器架构)。
我是一个新手,并且想知道它是否可能以及最佳做法是什么。
我举一个例子来更好地描述我的担忧。想象一下,skyscanner将所有航空公司的机票价格数据保存在一个表格中。他们将有2个选项让任何人公开搜索。首先,他们可以让用户在每次搜索时查询表格(这将很慢)。其次,他们可以扫描表格的数据并将其发送到浏览器,用户可以在前端搜索飞行数据(使用数组等)。我想实现第二种方法,但我也希望保持我的数据加密,这样就没有人可以复制我的数据并创建一个非常相似的网站:)
感谢。
答案 0 :(得分:0)
使用Cognito标识池
您可以使用AWS Cognito Identity Pool进行身份验证(授予谁可以访问哪个DynamoDB表甚至是哪个分区键)并使用AWS JavaScript SDK使用SSL来加密浏览器和DynamoDB之间的通信。
注意:如果您没有可以连接到Cognito Identity Pool的用户商店,也可以使用AWS Cognito UserPools。
将API网关和Lambda端点用于临时访问凭据
如果您已有现有的身份验证机制,则可以使用API网关和Lambda端点,其中Lambda函数将拥有代码以承担IAM角色并将临时访问凭据发送到浏览器。然后在浏览器中,您可以使用AWS SDK for JavaScript访问DynamoDB。
答案 1 :(得分:0)
这是一个演示应用程序,专门针对您正在寻找的内容...登录后,用户可以访问dynamoDB中自己的“行”...
https://github.com/awslabs/aws-cognito-angular-quickstart
以下是运行安装脚本所获得的信息(它为您创建了所有资源): http://cognito.budilov.com