背景:
我正在为自己创建一个安全摄像头服务,使用AWS S3,Lambda,DynamoDB,API Gateway和Angular 2作为前端。摄像机图像将上传到S3,登录DynamoDB并通过S3提供的Angular 2界面进行管理/审查,API Gateway和Lambda函数处理摄像机图像查看功能。这主要用于培训目的,并有助于密切关注我的公寓环境。该项目可以根据需要进行弯曲。
挑战:
有几个朋友有兴趣在他们的财产上实施这个项目,这让我想到规模和更多关于安全性。公司如何为客户存储S3资产,而无法为客户的安全性查看S3资产,例如安全摄像头图像?
到目前为止的想法:
为了让每个用户保持数据独立和安全,我考虑使用AWS API设置子IAM用户,并为每个用户AWS KMS–Managed Keys (SSE-KMS)加密图像。但是,我不能自己使用这些相同的密钥来解密其他用户图像吗?我不想访问其他用户'每个人的安全内容。
可能加密来自摄像头硬件/软件设置,在摄像头图像到达AWS之前加密。也许某些密钥或密码(密码理想)会在下载图像进行审核时通过前端或Lambda解密图像。似乎有点过程密集,如果我能弄清楚要使用什么加密,可能仍然是一个很好的选择。这里的挑战是我可能仍然需要将密钥存储在解密过程的某个地方(可能),这仍然会打开安全漏洞。
另一个想法是以某种方式链接单独的亚马逊帐户,每个帐户可以单独存储自己的图像。我似乎通过AWS Organizations找到了具有多个帐户的内部公司成本管理解决方案,但客户无法直接链接单独的帐户。我确实发现亚马逊DevPay可以将成本转嫁给不同的帐户(一个好的开始),但这似乎已被标记为在某些时候不受支持,我不确定它是否有助于保持数据安全和分离。 / p>
在S3中存储客户图像的建议过程是什么,同时确保公司(或者仅限于我的邻居手表概念)无法查看这些图像?