配置 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 将在每个日志组中创建一个或两个日志流。日志流的格式如下所示。

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

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

向 Amazon MQ 用户添加 CreateLogGroup 权限

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

重要

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

以下IAM基于示例的策略向附加logs:CreateLogGroup了此策略的用户授予权限。

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

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

有关更多信息,请参阅 Amazon CloudWatch 日志API参考CreateLogGroup中的。

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

重要

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

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

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

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

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

{ "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 账户、每个区域配置一次基于资源的策略。

防止跨服务混淆座席

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

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

注意

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

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

{ "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-east-2:123456789012:broker:MyBroker:b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9" } } } ] }

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

{ "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" } } } ] }

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