AWS SQS.
AWS SQS或Amazon Simple Queue Services是一个托管的排队服务,它在将消息作为事件发送时与InsightIdr合作。你也可以使用EC2 IAM角色访问AWS资源。
AWS SQS配置
在开始之前,必须为InsightIdr的独占使用SQS队列创建SQS队列。您可以找到关于如何执行此操作的说明:https://docs.aws.amazon.com/awssimplequeueservice/latest/sqsdeveloperuide/sqs-create-queue.html.
要配置AWS SQS:
- 创建一个新的IAM策略,以便在将HTTP请求对该SQS队列进行HTTP请求时使用,例如以下示例:
1
{
2
“版本”:“2012-10-17”,
3.
“陈述”: [
4.
{
5.
“效果”:“允许”,
6.
“行动”: [
7.
“SQS:ReceiveMessage”,
8.
“SQS:deletemessage”
9.
],
10.
“资源”:[
11.
“ARN:AWS:SQS ::: SQSQueUenameGoEle”
12.
]
13.
}
14.
]
15.
}
- 创建一个包含刚刚创建的策略的新IAM组。
- 创建一个只属于新创建的IAM组的新IAM用户。确保提供此用户的许可
接收方式和deletemessage.来自SQS队列的调用。
InsightIdr将使用这将访问您的数据,因此建议使用对IAM组的访问权限。
- 将秘密密钥复制到安全地点以供以后配置SQS。
如何配置此事件源
- 从您的仪表板,选择数据采集在左手菜单上。
- 出现“数据收集”页面时,单击“设置事件源下拉点和选择添加事件源。
- 从“原始数据”部分,单击自定义日志图标。出现“添加事件源”面板。
- 选择收集器和事件源。如果您愿意,您还可以命名您的活动源。
- 选择时区匹配事件源日志的位置。
- 选择SQS消息作为收集方法。
- 选择您的凭据或可选创建一个新的凭据。您输入的凭据将是访问密钥和密钥,该密钥对应于具有权限的AWS IAM角色
接收方式和deletemessage.从上面的SQS队列调用。- 访问密钥:使用IAM权限创建的用户名
- 密钥:您创建的密码与IAM权限的用户名对应
- URL:AWS控制台中的URL,看起来很相似
https://sqs.us-east--.amazonaws.com/your-queue-name. - Include属性:指示Rapid7还可以抓取SQS消息的属性并与SQS消息的主体一起发送它们
- 你也可以使用EC2 IAM角色。
- 选择节省。
SQS消息结构
SQS在其消息中发送信息有几种不同的方式:
- 使用消息属性
- 没有消息属性
- 使用消息属性和消息正文是JSON对象
- 没有消息属性,消息正文是JSON对象
带有属性的消息结构
使用SQS消息作为集合方法时,可以单击包括属性盒子。当您这样做时,发送的消息将如下所示:
1
{
2
“身体”:“mymessagebody”,
3.
“message_attributes”:[
4.
{
5.
“姓名”:“myattribute1”,
6.
“价值”: {
7.
“数据类型”:“mydatatype1”,
8.
“StringValue”:“mystringvalue1”
9.
}
10.
},
11.
{
12.
“姓名”:“myattribute2”,
13.
“价值”: {
14.
“数据类型”:“mydatatype2”,
15.
“StringValue”:“mystringValue2”
16.
}
17.
}
18.
]
19.
}
消息正文不包含属性
如果SQS消息的正文如JSON解释,则它将在日志搜索中显示为JSON,而不是在字符串中逃逸的JSON。
当您使用SQS消息作为集合方法而不包括属性时,消息将如下所示:
1
{
2
“身体”:“mymessagebody”
3.
}
消息结构是JSON对象,包括属性
使用SQS消息作为集合方法时,可以单击包括属性盒子。如果您这样做,如果它们也是JSON对象,则发送的消息将如下所示,并包含属性:
1
{
2
“身体”: {
3.
“MyField”:“MyValue”
4.
“另一个领域”:{
5.
“另一个人”:“嵌套价值”
6.
}
7.
}
8.
“message_attributes”:[
9.
{
10.
“姓名”:“myattribute1”,
11.
“价值”: {
12.
“数据类型”:“mydatatype1”,
13.
“StringValue”:“mystringvalue1”
14.
}
15.
},
16.
{
17.
“姓名”:“myattribute2”,
18.
“价值”: {
19.
“数据类型”:“mydatatype2”,
20.
“StringValue”:“mystringValue2”
21.
}
22.
}
23.
]
24.
}
消息正文是没有属性的JSON对象
如果SQS消息的正文如JSON解释,则它将在日志搜索中显示为JSON,而不是在字符串中逃逸的JSON。
当您将SQS消息用作集合方法但不包含属性时,如果它们是JSON对象,则发送的消息将如下所示:
1
{
2
“身体”: {
3.
“MyField”:“MyValue”
4.
“另一个领域”:{
5.
“另一个人”:“嵌套价值”
6.
}
7.
}
8.
}
故障排除
使用以下信息来帮助解决您的问题:
- 致命的SQS错误
致命的SQS错误:签名尚未当前
如果您看到上述错误,则运行此事件源的收集器的系统时间可能与运行SQS的Amazon服务器不同步。在尝试重新配置此事件源之前,请确保正确配置收集器上的时间同步。
这个页面对你有帮助吗?