CloudWatch does not allow cross-account sharing
Amazon CloudWatch cross-account sharing via the CloudWatch-CrossAccountSharingRole allows other AWS accounts to view your metrics, dashboards, and alarms. The presence of this role indicates that sharing is active.
Risk
Granting other accounts visibility into observability data reduces confidentiality and enables reconnaissance. Adversaries or over-privileged partners can map architectures, profile workloads, and spot alerting gaps, increasing chances of lateral movement and evasion.
Run this check with Prowler
Run in Prowler Cloudprowler aws --checks cloudwatch_cross_account_sharing_disabledRecommendation
Disable cross-account sharing unless strictly required. If needed, restrict access to specific trusted accounts, scope read-only permissions to only necessary resources, and use a dedicated monitoring account. Apply least privilege and separation of duties, and regularly audit role trust and access patterns.
Remediation
CLI
aws cloudformation delete-stack --stack-name CloudWatch-CrossAccountSharingRoleOther
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.iam.iam_client import iam_client
class cloudwatch_cross_account_sharing_disabled(Check):
def execute(self):
findings = []
if iam_client.roles is not None:
report = Check_Report_AWS(metadata=self.metadata(), resource={})
report.status = "PASS"
report.status_extended = "CloudWatch doesn't allow cross-account sharing."
report.region = iam_client.region
report.resource_arn = iam_client.role_arn_template
report.resource_id = iam_client.audited_account
for role in iam_client.roles:
if role.name == "CloudWatch-CrossAccountSharingRole":
report = Check_Report_AWS(metadata=self.metadata(), resource=role)
report.region = iam_client.region
report.status = "FAIL"
report.status_extended = (
"CloudWatch has allowed cross-account sharing."
)
findings.append(report)
return findings