允许内部团队仅发布到SQS

时间:2018-11-11 04:54:58

标签: amazon-web-services amazon-sqs

让我的应用程序的使用者将事件发布到我的应用程序队列中的最佳实践是什么?注意:他们只需要写权限,就可以将事件发布到队列中。

我能做到这一点的一种方法是创建一个用户,该用户无权访问aws控制台(仅通过编程API进行访问),并且具有内联策略(下面的示例策略),仅允许该资源使用“ SendMessage”。这样做是否有任何安全问题?解决此用例的最佳方法是什么?

|           A         |  B  |  C  |  D  |
-----------------------------------------
| 06/10/2018 13:17:40 |  1  |  0  |  1  |
| 06/10/2018 13:17:56 |  0  |  0  |  1  |
| 06/10/2018 13:18:08 |  0  |  1  |  1  |
| 06/10/2018 13:18:21 |  1  |  0  |  2  |
| 06/10/2018 13:18:26 |  0  |  0  |  2  |
| 06/10/2018 13:18:26 |  0  |  0  |  2  |
| 06/10/2018 13:18:28 |  0  |  1  |  2  |
| 06/10/2018 13:18:28 |  1  |  1  |  3  |
| 06/10/2018 13:18:31 |  1  |  0  |  4  |
| 06/10/2018 19:49:26 |  0  |  0  |  4  |
| 06/10/2018 19:50:24 |  0  |  1  |  4  |

2 个答案:

答案 0 :(得分:0)

您可以使用IAM用户来控制对SQS的访问。但是,您还可以编写一个API,供用户使用其消息来调用,然后您的API会将消息放入SQS中。这将使您更容易启用/禁用对使用者的访问,添加速率限制,在将邮件内容发送到SQS之前对邮件的内容进行一些验证。

您还可以使用AWS API Gateway(和可选的AWS Lambda)来代替构建和托管自己的API端点。 (请参见thisthis

答案 1 :(得分:0)

最佳做法是在访问AWS服务时对应用程序使用具有适当权限的AWS Role。为了使用角色,您的应用程序必须部署在AWS中。

就实现而言,最好的选择(我认为)将是创建一个API,该API可以处理向SQS发送消息的操作:

在这种情况下,您的应用程序将调用REST API,传递所有需要发送到SQS的信息。

另一个选择是在具有写入SQS权限的服务角色下在AWS中运行自定义应用程序。