本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Amazon MQ for ActiveMQ 日誌
若要允許 Amazon MQ 將日誌發佈至 CloudWatch Logs,您必須將許可新增至 Amazon MQ 使用者,並在建立或重新啟動代理程式前,為 Amazon MQ 設定以資源為基礎的政策。
注意
當您開啟日誌並從 ActiveMQ Web 主控台發佈訊息時,訊息的內容會傳送到 CloudWatch,並顯示在日誌中。
以下說明是為 ActiveMQ 代理程式設定 CloudWatch Logs 的步驟。
了解 CloudWatch Logs 中的記錄結構
當您設定進階代理程式設定、當您建立代理程式,或當您編輯代理程式時,您可以啟用一般和稽核記錄。
一般記錄會啟用預設 INFO
記錄層級 (不支援 DEBUG
記錄),並將 activemq.log
發佈到 CloudWatch 帳戶中的日誌群組。日誌群組具有如下的格式:
/aws/amazonmq/broker/b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9/general
稽核日誌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 Logs 使用者指南》中的使用日誌群組和日誌串流。
將 CreateLogGroup
許可新增至 Amazon MQ 使用者
若要允許 Amazon MQ 建立 CloudWatch Logs 日誌群組,您必須確保建立或重新啟動代理程式的 IAM 使用者具有 logs:CreateLogGroup
許可。
重要
在使用者建立或重新啟動代理程式之前,如果您未將 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 Logs API 參考中的 CreateLogGroup
。
為 Amazon MQ 設定資源型政策。
重要
如果您未對 Amazon MQ 設定資源型政策,則代理程式無法將日誌發佈到 CloudWatch Logs。
若要允許 Amazon MQ 將日誌發佈到 CloudWatch Logs 日誌群組,請設定資源型政策,提供 Amazon MQ 存取以下 CloudWatch Logs API 動作的權限:
-
CreateLogStream
– 為指定的日誌群組建立 CloudWatch Logs 日誌串流。 -
PutLogEvents
– 將事件傳送到指定的 CloudWatch Logs 日誌串流。
下列以資源為基礎的政策授予 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:SourceArn
和 aws:SourceAccount
全域條件內容鍵,以限制 CloudWatch Logs 對一個或多個指定代理程式的存取。
注意
如果同時使用全域條件內容索引鍵,則在相同政策陳述式中使用 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" } } } ] }
如需混淆代理安全問題的詳細資訊,請參閱《IAM 使用者指南》中的混淆代理問題。