如何解决 CloudWatch 中的跨账户控制面板共享错误?
我想使用跨账户控制面板共享与另一个 AWS 账户共享我的 Amazon CloudWatch 控制面板。
简短描述
您可以创建跨账户或跨区域控制面板,与多个 AWS 账户和多个 AWS 区域共享您的 CloudWatch 数据。当您使用账户或组织 ID 从一个 AWS 账户与另一个账户共享控制面板时,您可能会遇到许多问题:
- 监控账户用户无法查看或选择共享账户中的账户 ID 来查看控制面板。
- 访问控制面板时,由于共享账户中的权限问题,监控用户会收到错误。这些错误包括以下示例:
无法检索警报错误
无法检索资源组错误
未经授权的用户错误
解决方法
在这些示例中,一个账户使用账户 ID 或组织 ID 与另一个账户共享控制面板。共享账户的 ID 为 111111111111。监控账户的账户 ID 为 999999999999。
查看账户 ID 以从监控中查看控制面板时出现问题
要查看和选择共享控制面板,请为监控账户中的每个 AWS Identity and Access Management(IAM)用户打开账户选择器。仅在 CloudWatch 设置中启用了账户选择器的 IAM 用户才能看到账户 ID 选择器。有关详细信息,请参阅在 CloudWatch 中激活跨账户功能。
从监控账户访问自定义控制面板时收到错误
当您尝试从监控账户访问自定义控制面板时,您可能会遇到以下错误:
-
在 CloudWatch 控制台中访问“概述”页面时:
“无法检索警报;您无权执行以下操作: CloudWatch:DescribeAlarms。如果您需要帮助,请联系您的管理员。如果您是管理员,则可以通过创建 IAM 策略为您的用户或组提供权限。”
-
从共享账户访问跨服务控制面板时:
“无法在‘按资源组筛选’下拉列表中选择任何资源组。出现错误: “无法检索资源组”
-
从共享账户打开自定义控制面板时:
“用户:"arn:aws:sts::999999999999:assumed-role/AWSServiceRoleForCloudWatchCrossAccount/CloudWatchConsole 无权在资源上执行:sts:AssumeRole:arn:aws:iam::111111111111:role/CloudWatch-CrossAccountSharingRole”
-或-
“用户:arn:aws:sts::999999999999:assumed-role/CloudWatch-CrossAccountSharingRole/CloudWatchConsole 无权在资源上执行:cloudwatch:ListDashboards:arn:aws:cloudwatch::111111111111:dashboard/*,因为没有基于身份的策略允许执行 cloudwatch:ListDashboards 操作”
之所以出现这些错误,是因为共享账户的角色存在权限问题。确保共享账户满足以下条件:
- CloudWatch-CrossAccountSharingRole 存在。
- 共享账户的信任策略正确。
- CloudWatch-CrossAccountSharing 角色附加有以下策略: CloudWatchReadOnlyAccess CloudWatchAutomaticDashboardsAccess:如果您在控制面板共享期间清除了包括 CloudWatch 自动控制面板选项,则将缺少此策略。AWSXrayReadOnlyAccess:如果您在控制面板共享期间清除了包括 ServiceLens 的 X-Ray 只读访问权限,则将缺少此策略。
将 CloudWatch-CrossAccountSharingRole 限制为只能与所有监控账户共享特定控制面板
要列出跨账户控制面板中的所有控制面板,请使用 ListDashboards API 调用。ListDashboards 不支持特定资源权限,但是 GetDashboard API 调用支持。因此,要限制可以跨账户描述或打开的控制面板,请在源共享账户中编辑 IAM 角色 CloudWatch-CrossAccountSharingRole:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "cloudwatch:GetDashboard", "Resource": "arn:aws:cloudwatch::111111111111:dashboard/dashboard-name" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:GetInsightRuleReport", "cloudwatch:GetMetricWidgetImage", "cloudwatch:ListMetrics", "cloudwatch:ListTagsForResource", "cloudwatch:ListDashboards", "logs:Get*", "logs:List*", "logs:StartQuery", "logs:StopQuery", "logs:Describe*", "logs:TestMetricFilter", "logs:FilterLogEvents", "sns:Get*", "sns:List*" ], "Resource": "*" } ] }
运行此命令后,您可以列出所有控制面板。但是,如果您尝试打开本策略中未提及的控制面板,则会看到错误:
User: arn:aws:sts::111111111111:assumed-role/CloudWatch-CrossAccountSharingRole/CloudWatchConsole is not authorized to perform: cloudwatch:GetDashboard on resource: arn:aws:cloudwatch::111111111111:dashboard/test
启动 CloudFormationStack 以在共享账户中创建所需的 CloudWatch-CrossAccountSharingRole 时出现问题
使用跨账户控制面板共享时,确保您的以下策略与共享账户中的 IAM 角色相关联:
- AWSCloudFormationFullAccess
- IAMFullAccess
这些权限允许您启动所需的 CloudFormationStack API,以创建跨账户控制面板共享所需的 IAM 角色。
使用 Terraform/CloudFormation/AWS CLI 创建跨账户控制面板共享设置
当您设置共享账户以使用跨账户功能时,CloudWatch 会部署 AWS CloudFormation 模板。将此 CloudFormation 模板转换为相应的 Terraform 模板。这允许您激活跨账户数据共享。
要允许您的监控账户在 CloudWatch 中查看跨账户数据,请使用控制台激活账户选择器。这是针对每个用户的设置,不在账户级别进行管理。有关配置此设置的详细信息,请参阅在 CloudWatch 中激活跨账户功能。
相关信息

相关内容
- 已提问 7 个月前lg...
- AWS 官方已更新 3 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 8 个月前