Amazon MQ for ActiveMQ ログの設定 - Amazon MQ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MQ for ActiveMQ ログの設定

CloudWatch Logs へのログの発行を Amazon MQ に許可するには、ブローカーを作成および再起動する前に、Amazon MQ ユーザーに許可を追加するとともに、Amazon MQ のリソースベースポリシーも設定する必要があります。

以下は、ActiveMQ ブローカー用の CloudWatch Logs を設定するステップの説明です。

CloudWatch Logs でのロギングの構造を理解する

一般ログおよび監査ログ記録は、高度なブローカー設定時、ブローカー作成時、またはブローカー編集時に有効にすることができます。

一般ロギングは、デフォルトの INFO ロギングレベルを有効にし (DEBUG ロギングはサポートされません)、activemq.log を CloudWatch アカウントのロググループに発行します。ロググループの形式は次のようになります。

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

監査ロギングは、JMX または ActiveMQ ウェブコンソールを使用して行われた管理アクションのロギングを有効にし、audit.log を CloudWatch アカウントのロググループに発行します。ロググループの形式は次のようになります。

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

Amazon MQ は、単一インスタンスブローカーアクティブ/スタンバイブローカーのどちらを使用しているかに応じて、各ロググループ内に 1 つまたは 2 つのログストリームを作成します。ログストリームの形式は次のようになります。

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

サフィックスが -1 および -2 の場合は、個々のブローカーインスタンスを示します。詳細については、Amazon CloudWatch Logs ユーザーガイドの「ロググループとログストリームの操作」を参照してください。

Amazon MQ ユーザーへの CreateLogGroup 許可の追加

CloudWatch Logs ロググループの作成を Amazon MQ に許可するには、ブローカーを作成または再起動するユーザーに logs:CreateLogGroup アクセス許可があることを確認する必要があります。

重要

ユーザーがブローカーの作成または再起動を行う前に CreateLogGroup 許可をユーザーに追加しなければ、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 ユーザーガイドの「ID 管理の概要」セクションを参照してください。

詳細については、Amazon CloudWatch Logs API リファレンスの「CreateLogGroup」を参照してください。

Amazon MQ のリソースベースポリシーを設定する

重要

Amazon MQ にリソースベースポリシーを設定しない場合、ブローカーは CloudWatch Logs にログを発行できません。

CloudWatch Logs ロググループへのログの発行を Amazon MQ に許可するには、以下の CloudWatch Logs API アクションに対するアクセス権を Amazon MQ に付与するリソースベースポリシーを設定します。

  • CreateLogStream – 指定したロググループの CloudWatch Logs ログストリームを作成します。

  • PutLogEvents – 指定された CloudWatch Logs ログストリームにイベントを配信します。

以下のリソースベースポリシーは、AWS に logs:CreateLogStream および logs:PutLogEvents の許可を付与します。

{ "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 では、サービス間でのなりすましが、混乱した代理問題を生じさせることがあります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別の顧客のリソースに対する処理を実行するように操作される場合があります。これを防ぐために AWS では、顧客のすべてのサービスのデータを保護するのに役立つツールを提供しています。これには、アカウントのリソースへのアクセス権が付与されたサービスプリンシパルを使用します。

CloudWatch Logs アクセスを指定された 1 つまたは複数のブローカーに制限するには、Amazon MQ のリソースベースポリシーで aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用することをお勧めします。

注記

両方のグローバル条件コンテキストキーを使用しており、それらが同じポリシーステートメントで使用されるときは、aws:SourceAccount 値と、aws:SourceArn 値のアカウントが同じアカウント ID を使用する必要があります。

次の例は、CloudWatch Logs アクセスを単一の 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 Logs アクセスをアカウント内のすべてのブローカーに制限するように、リソースベースポリシーを設定することもできます。

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

「混乱した代理」セキュリティ問題の詳細については、ユーザーガイドの「混乱した代理問題」を参照してください。

CloudWatch Logs 設定のトラブルシューティング

場合によっては、CloudWatch Logs が常に期待通りに動作しないことがあります。このセクションでは、一般的な問題の概要とそれらの解決方法を説明します。

ログロググループが CloudWatch に表示されない

CreateLogGroup 許可を Amazon MQ ユーザーに追加して、ブローカーを再起動します。そうすることで、Amazon MQ がロググループを作成できるようになります。

ログストリームが CloudWatch ロググループに表示されない

Amazon MQ のリソースベースポリシーを設定します。これにより、ブローカーよりログを発行することができます。