AWS SQS
AWS SQS或Amazon Simple Queue Services是一种托管队列服务,当以事件的形式发送消息时,它与InsightIDR一起工作。你也可以使用EC2 IAM Roles访问AWS资源.
AWS SQS配置
在开始之前,必须为InsightIDR创建一个独占使用的SQS队列。你可以在这里找到如何做到这一点的说明:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html
配置AWS SQS。
- 创建一个新的IAM Policy,以便InsightIDR在向该SQS队列发送HTTP请求时使用,示例如下:
1{2“版本”:“2012-10-17”,3.“声明”:[4{5“效应”:“允许”,6“行动”(7“sqs: ReceiveMessage”,8“sqs: DeleteMessage”9],10“资源”:(11“攻击:aws: sqs::: SqsQueueNameGoesHere”12]13}14]15}
- 创建一个新的IAM Group,包含刚才创建的策略。
- 创建新的IAM User,只属于新创建的IAM组。确保给这个用户权限
receiveMessage
和deleteMessage
来自SQS队列的调用。
这将被InsightIDR用于访问您的数据,所以建议限制对IAM Group的访问。
- 将密钥复制到一个安全的地方,以便稍后配置SQS。
如何配置事件源
- 从仪表板中选择数据收集在左边的菜单上。
- 当出现“数据采集”页面时,单击设置事件源下拉选择添加事件源.
- 从“原始数据”部分,单击自定义日志图标。出现“添加事件源”面板。
- 选择收集器和事件源。如果需要,还可以命名事件源。
- 选择时区与事件源日志的位置匹配。
- 选择SQS消息作为集合方法。
- 选择您的凭据,或可选创建一个新的凭证.您输入的凭证将是访问密钥和秘密密钥,它们对应于具有权限的AWS IAM角色
receiveMessage
和deleteMessage
调用来自上面的SQS队列。- Access Key:您创建的具有IAM权限的用户名
- Secret Key:用户创建的与IAM权限对应的密码
- URL:您的AWS控制台中的URL,看起来类似于
https://sqs.us-east-1.amazonaws.com/your-queue-name
- 包含属性:指示Rapid7是否也将获取SQS消息的属性,并将它们与SQS消息体一起发送
- 你也可以用EC2我角色.
- 选择保存.
SQS消息结构
SQS在它的消息中发送信息有几种不同的方式:
- 使用消息属性
- 没有消息属性
- 使用消息属性,消息主体是一个JSON对象
- 没有消息属性,并且消息体是一个JSON对象
带有属性的消息结构
当您使用SQS消息作为Collection方法时,您可以单击包括属性盒子。当您这样做时,发送的消息将如下所示:
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,那么它将在Log Search中显示为JSON,而不是字符串中的转义JSON。
当您使用不包含属性的SQS消息作为Collection方法时,消息看起来如下所示:
1{2“身体”:“MyMessageBody”3.}
消息结构是一个JSON对象,包括属性
使用SQS消息作为收集方法时,可以单击包括属性盒子。当你这样做时,如果它们也是一个JSON对象并包含属性,则发送的消息看起来像以下内容:
1{2“身体”:{3.“myField”:“括号”4" anotherField ": {5"anotherNestedField":"嵌套值"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,那么它将在Log Search中显示为JSON,而不是字符串中的转义JSON。
当您使用SQS消息作为集合方法,但不包含属性时,如果消息是JSON对象,则发送的消息将如下所示:
1{2“身体”:{3.“myField”:“括号”4" anotherField ": {5"anotherNestedField":"嵌套值"6}7}8}
故障排除
使用以下信息帮助您解决问题:
- SQS致命错误
致命的SQS错误:签名尚未生效
如果您看到上述错误,则运行此事件源的收集器的系统时间可能与运行SQS的Amazon服务器不同步。在尝试重新配置此事件源之前,请确保正确配置了收集器上的时间同步。
这个页面对你有帮助吗?