View a markdown version of this page

配置 Amazon MQ for ActiveMQ 日志 - Amazon MQ

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Amazon MQ for ActiveMQ 日志

要允许 Amazon MQ 向 CloudWatch 日志发布日志,您必须向您的 Amazon MQ 用户添加权限,并在创建或重启代理之前为 Amazon MQ 配置基于资源的策略。

注意

当您打开日志并从 ActiveMQ Web 控制台发布消息时,消息的内容将发送到日志中 CloudWatch 并显示在日志中。

以下内容描述了为您的 ActiveMQ 代理配置 CloudWatch 日志的步骤。

了解登录 CloudWatch 日志的结构

您可以在创建代理时配置高级代理设置,或在编辑代理时启用常规审计日志记录。

常规日志记录启用默认INFO日志记录级别(不支持DEBUG日志记录),并发布activemq.log到您 CloudWatch 账户中的日志组。日志组的格式如下所示:

/aws/amazonmq/broker/b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9/general

审核日志记录允许记录使用 JMX 或 ActiveMQ Web 控制台采取的管理操作,并发布audit.log到您账户中的日志组。 CloudWatch 日志组的格式如下所示:

/aws/amazonmq/broker/b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9/audit

根据您是单实例代理还是代理,Amazon MQ 会在每个日志组中创建一个或两个日志流。 active/standby 日志流的格式如下所示。

activemq-b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.log activemq-b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-2.log

-1-2 后缀表示单个代理实例。有关更多信息,请参阅 Amazon Logs 用户指南中的使用日志组和 CloudWatch 日志流

向 Amazon MQ 用户添加 CreateLogGroup 权限

要允许 Amazon MQ 创建 CloudWatch 日志组,您必须确保创建或重启代理的用户拥有权限。logs:CreateLogGroup

重要

如果您未在 Amazon MQ 用户创建或重启代理之前将 CreateLogGroup 权限添加给 Amazon MQ 用户,则 Amazon MQ 不会创建日志组。

以下示例IAM-based 策略logs:CreateLogGroup为附加此策略的用户授予权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*" } ] }
注意

此处,术语“用户”是指用户而不是 Amazon MQ 用户,后者是在配置新的代理程序时创建的。有关设置用户和配置 IAM policy 的更多信息,请参阅《IAM 用户指南》中的身份管理概述部分。

有关更多信息,请参阅CreateLogGroup亚马逊 CloudWatch 日志 API 参考》

为 Amazon MQ 配置基于资源的策略。

重要

如果您没有为 Amazon MQ 配置基于资源的策略,则代理无法将日志发布到 CloudWatch 日志。

要允许 Amazon MQ 向您的日志组发布 CloudWatch 日志,请配置基于资源的策略,以授予 Amazon MQ 访问以下 CloudWatch 日志 API 操作的权限:

  • CreateLogStream— 为指定的 CloudWatch 日志组创建日志流。

  • PutLogEvents— 将事件传送到指定的 CloudWatch 日志流。

以下基于资源的策略向logs:CreateLogStream和授予权限logs:PutLogEvents。 AWS

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "mq.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*" } ] }

必须使用以下命令 AWS CLI 所示配置此基于资源的策略。在示例中,将 us-east-1 替换为您自己的信息。

aws --region us-east-1 logs put-resource-policy --policy-name AmazonMQ-logs \ --policy-document "{\"Version\": \"2012-10-17\", \"Statement\":[{ \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"mq.amazonaws.com\" }, \"Action\": [\"logs:CreateLogStream\", \"logs:PutLogEvents\"], \"Resource\": \"arn:aws:logs:*:*:log-group:\/aws\/amazonmq\/*\" }]}"
注意

由于此示例使用/aws/amazonmq/前缀,因此您只需为每个 AWS 账户、每个区域配置一次基于资源的策略。

Cross-service 困惑的副手预防

混淆代理问题是一个安全性问题,即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS,跨服务模仿可能会导致副手混乱的问题。 Cross-service 当一项服务(呼叫服务)调用另一项服务(叫服务)时,可能会发生模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。为防止这种情况,请 AWS 提供工具来帮助您保护所有服务的数据,这些服务主体已被授予访问您账户中资源的权限。

我们建议在基于资源的 Amazon MQ 策略中使用aws:SourceArnaws:SourceAccount全局条件上下文密钥来限制一个或多个指定代理的 CloudWatch 日志访问权限。

注意

如果使用两个全局条件上下文键,在同一策略语句中使用时,aws:SourceAccount 值和 aws:SourceArn 值中的账户必须使用相同的账户 ID。

以下示例演示了基于资源的策略,该策略限制了对单个 Amazon MQ 代理的 CloudWatch 日志访问权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "mq.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:mq:us-west-1:123456789012:broker:my-broker:123456789012" } } } ] }

您还可以配置基于资源的策略,限制账户中的所有经纪人访问 CloudWatch 日志,如下所示。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "mq.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:mq:*:123456789012:broker:*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

有关混淆代理人安全问题的更多信息,请参阅《用户指南》中的混淆代理人问题