Back to Checks
MQ broker has general logging enabled and, for ActiveMQ, audit logging enabled
mq_broker_logging_enabled
Service: mqSeverity: low
OfficialBuilt-inVerified
Categories:logging
Resource Type:AwsAmazonMQBroker
Amazon MQ brokers have logging to CloudWatch Logs enabled per engine type: ActiveMQ requires both general and audit logs; RabbitMQ requires general logs.
Risk
Missing broker logs creates blind spots in authentication events, administrative changes, and broker failures. Adversaries can act without detection, enabling unauthorized access and message tampering (confidentiality/integrity) and hindering incident response and root-cause analysis (availability).
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks mq_broker_logging_enabledRecommendation
Enable centralized CloudWatch Logs for brokers. For ActiveMQ, turn on both general and audit logs; for RabbitMQ, enable general logs.
Apply least privilege to log access, set retention, and create alerts for anomalous events to strengthen defense in depth.
Remediation
CLI
aws mq update-broker --broker-id <example_resource_id> --logs Audit=true,General=trueTerraform
# Terraform: Enable Amazon MQ logging
resource "aws_mq_broker" "<example_resource_name>" {
broker_name = "<example_resource_name>"
engine_type = "ActiveMQ"
host_instance_type = "mq.t3.micro"
deployment_mode = "SINGLE_INSTANCE"
publicly_accessible = true
user {
username = "<example_user>"
password = "<example_password>"
}
logs {
general = true # Critical: enables general logs
audit = true # Critical: enables audit logs (ActiveMQ)
}
}NativeIaC
# CloudFormation: Enable Amazon MQ logging
Resources:
<example_resource_name>:
Type: AWS::AmazonMQ::Broker
Properties:
BrokerName: <example_resource_name>
EngineType: ACTIVEMQ
HostInstanceType: mq.t3.micro
DeploymentMode: SINGLE_INSTANCE
PubliclyAccessible: true
Users:
- Username: <example_user>
Password: <example_password>
Logs:
General: true # Critical: enables general logs to CloudWatch
Audit: true # Critical: enables audit logs (required for ActiveMQ)Other
1In the AWS Console, go to Amazon MQ > Brokers
2Select <example_resource_name> and choose Edit
3In Log settings:
4- For ActiveMQ: enable General logs and Audit logs
5- For RabbitMQ: enable General logs only
6Save changes and reboot if prompted
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.mq.mq_client import mq_client
from prowler.providers.aws.services.mq.mq_service import EngineType
class mq_broker_logging_enabled(Check):
"""Ensure that MQ Brokers have logging enabled
This check will return FAIL if the MQ Broker does not have logging enabled.
"""
def execute(self):
"""Execute the check
Returns: List[Check_Report_AWS]: List of check reports
"""
findings = []
for broker in mq_client.brokers.values():
report = Check_Report_AWS(metadata=self.metadata(), resource=broker)
report.status = "FAIL"
report.status_extended = (
f"MQ Broker {broker.name} does not have logging enabled."
)
logging_enabled = False
if broker.engine_type == EngineType.ACTIVEMQ:
logging_enabled = (
broker.general_logging_enabled and broker.audit_logging_enabled
)
elif broker.engine_type == EngineType.RABBITMQ:
logging_enabled = broker.general_logging_enabled
if logging_enabled:
report.status = "PASS"
report.status_extended = (
f"MQ Broker {broker.name} does have logging enabled."
)
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/configure-logging-monitoring-activemq.html
- https://docs.aws.amazon.com/securityhub/latest/userguide/mq-controls.html#mq-2
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/MQ/log-exports.html
- https://docs.aws.amazon.com/cli/latest/reference/mq/create-broker.html
- https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/security-logging-monitoring.html