You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制IAM角色/用户仅访问指定CloudWatch Dashboard用于Grafana?

解决方案:CloudWatch Dashboard 精细化权限控制与Grafana隔离

首先得明确:AWS CloudWatch 本身支持资源级IAM权限来限定单个Dashboard的访问,但要彻底解决客户间数据隔离(包括防止修改查询越权),需要结合IAM权限控制和Grafana的权限配置,双管齐下。

1. 用IAM资源级权限精确锁定单个Dashboard与对应指标

你之前的尝试可能没覆盖到指标层面的权限限制——只限制Dashboard访问是不够的,用户如果能修改Grafana查询,依然可以调取其他客户的指标。所以需要同时限制Dashboard访问和指标访问:

示例IAM权限策略(针对客户A)

{
  "Version": "2012-10-17",
  "Statement": [
    // 仅允许访问指定的Dashboard A
    {
      "Effect": "Allow",
      "Action": "cloudwatch:GetDashboard",
      "Resource": "arn:aws:cloudwatch::YOUR_ACCOUNT_ID:dashboard/Dashboard-A"
    },
    // 仅允许获取客户A专属指标的数据(假设你的指标按客户分命名空间)
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": "Customer-A-Namespace"
        }
      }
    },
    // 如果Grafana需要加载Dashboard中的图表,补充ListMetrics权限并加条件
    {
      "Effect": "Allow",
      "Action": "cloudwatch:ListMetrics",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": "Customer-A-Namespace"
        }
      }
    }
  ]
}
  • 核心思路:把指标按客户隔离在独立的命名空间(或维度),通过IAM条件限制只能访问该命名空间的指标,从根源上阻止越权查询。
  • 注意:cloudwatch:ListDashboards 无法按Dashboard名称过滤,建议不要给这个权限,让Grafana直接通过Dashboard的ARN或名称加载,避免用户看到其他Dashboard列表。

2. 为每个客户创建独立的IAM角色

不要共用同一个IAM角色,而是给每个客户创建专属角色:

  • 每个角色绑定对应客户的专属权限策略(匹配自己的Dashboard和指标命名空间)。
  • Grafana通过AssumeRole方式访问CloudWatch,每个客户的Grafana数据源对应一个专属角色,彻底隔离权限范围。

3. Grafana端的权限加固

光靠IAM还不够,需要在Grafana层面限制用户操作权限:

  • 创建专属用户组:比如给客户A创建Customer-A-Viewers组,只赋予该组对Dashboard A的View权限,完全拒绝Edit权限(包括修改查询、编辑仪表盘结构)。
  • 锁定数据源:在Grafana的CloudWatch数据源设置中,取消“允许编辑数据源”选项,防止用户修改配置切换到其他角色。
  • 隐藏其他Dashboard:在Grafana权限设置中,确保每个客户的用户组只能看到自己的Dashboard,无法访问其他客户的资源。

4. 替代方案:用CloudWatch Embedded Dashboard(如果不需要Grafana高级功能)

如果你的需求只是让客户查看固定Dashboard,不需要Grafana的自定义查询功能,可以直接使用CloudWatch的嵌入式Dashboard:

  • 生成带有签名的嵌入URL,有效期可控,且只能访问指定Dashboard。
  • 这种方式不需要Grafana,直接让客户通过URL查看,完全避免修改查询的风险。

关键提醒

  • 一定要在IAM层面限制指标的访问范围,而不是只限制Dashboard——这是防止越权的核心。
  • 测试时模拟客户操作:尝试修改Grafana查询,验证是否能调取其他客户的指标,如果可以,说明IAM条件配置不到位,需要调整。

内容的提问来源于stack exchange,提问作者darkownage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:54:12