2

我正在 AWS 上实施一个解决方案,其中本地客户端(生产者)正在向 AWS SQS 队列发送消息。AWS 使用 AWS IAM 临时凭证在 SQS API 调用 (Sigv4) 上对客户端进行身份验证。

AWS 上处理来自队列的消息的消费者应用程序必须识别(每条消息)客户端的委托人(消息生产者)。

由于客户端已经使用 AWS STS 临时凭证来调用 AWS STS,我想重用这些凭证来签署 (Sigv4) 他们产生的消息,以便应用程序使用者可以验证和识别客户端。

对消息进行签名是可行的,但是应用程序消费者如何识别客户端的主体并验证其签名呢?为此,应用程序使用者必须有权访问:1) 相应的 AWS 访问密钥(用于计算 HMAC 签名)2) 与凭证关联的相应 AWS STS 委托人

例如,AWS 如何在 API Gateway 中实现相同的功能(API Gateway 不仅验证签名,还传播委托人)?

如果没有更简单的方法来验证签名的 SQS 消息 (sigv4) 并传播委托人,我正在考虑以下缓解措施: 1. 使用 API Gateway 作为 AWS Lambda 的前端,后者向 AWS SQS 发送消息(身份验证和主体传播均由 AWS 解决) 2. 引入一个应用程序 STS API,该 API 生成 AWS STS 临时凭证并将访问密钥 ID+Secret+Principal 保存在数据库中,以便稍后验证 sigv4 的 SQS 使用者应用程序可以使用它们消息签名并从数据库中读取主体值。

4

0 回答 0