Amazon SQS 多租户和 HIPAA 合规性

Amazon SQS multi tenancy and HIPAA compliance

我要实施 client/server 应用程序 - 1 个服务器 - [0-N] 个客户端。

为了组织客户端和服务器之间的通信,我打算使用 Amazon SQS 或类似的东西。

现在我有两个问题:

Amazon SQS 是否符合 HIPAA 标准?

如何组织基于 Amazon SQS 队列的多租户支持?

客户端之间的数据不能共享。每个客户端只能处理一个只为这个客户端发送的数据。

是否可以在单个 Amazon SQS 队列上实施,或者我需要为每个客户端创建一个单独的队列?

由于创建单独的队列没有成本,如果您不需要混合数据,这显然是您的最佳选择。假设每个 'client' 都要轮询队列,那么就没有什么好的方法可以根据消息中的内容来隔离访问,使用多个队列是最好的解决方案。它还会提高性能,因为您不会从队列中获得请求消息,如果它们不适合正确的客户端,则将它们丢弃。

您应该阅读此页面,其中包含亚马逊的 HIPAA 合规性:https://aws.amazon.com/compliance/hipaa-compliance/

请注意(此时)SQS 不在 AWS HIPAA 协议涵盖的服务列表中。您可以使用不在 HIPAA 合规性列表中的 AWS 服务,但不能在其中存储 PHI 数据。因此,您要么必须确保永远不会在 SQS 消息中存储任何 PHI,要么使用可以安装在 EC2 上的不同队列系统,例如 RabitMQ 或 ActiveMQ。

关于 HIPAA 和 SQS:虽然您的 AWS BAA 可能不允许您将 SQS 用于 PHI,但它可能允许您使用 S3(但不要相信我的话,查看您的 BAA 以请确定)。

如果是这种情况,那么您可以将消息负载 (PHI) 放入(加密的)S3 文件中,并发送引用 S3 密钥的 SQS 消息。当您处理 SQS 消息时,您会从 S3 获取文件并进行处理,删除消息 and/or 适当的文件。

您甚至可以使用 "extended" SQS client 来为您处理这种魔法。

另一个选项是在您的 S3 存储桶上启用和配置 Event Notifications,以便为每个上传到存储桶的文件排队消息。换句话说,文件被上传并且消息被发送为 side-effect。然后,当您处理消息时,您将获得 S3 文件的句柄。通过将您的 PHI 保存在 S3 中,您可以避免 BAA 对 SQS 的限制。

要符合 HIPAA,请不要忘记:

  • 加密 'at rest' 数据(数据库或 S3 存储桶)。
  • 在通信过程中加密 'in transit' 数据
  • 制作数据存储专用实例或主机

PHI 数据可以存放在关系数据库或 S3 存储桶中,如 Rob 上文所述。根据您的情况,就多租户而言,S3 存储桶 可能 是更好的解决方案。更大的有效载荷也很容易获得。历史消息可以很容易地呈现给不同 S3 存储桶路径上的不同客户端。

类似地,此方法可应用于 lambda server-less 解决方案或任何其他 non-HIPAA-compliant AWS 服务,即使在加密后也不应保存任何 PHI 数据。