【最佳实践】如何授权子账号查看某一个Bucket的运维监控数据?

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通过RAM Policy 授权子账号登录控制台查看指定Bucket的云监控信息,包括概要信息、热点文件统计、API统计等

一、如何在控制台上查看Bucket的运维监控信息?

  1. 方式一:通过根账号登录OSS控制台进行访问

    1. 通过阿里云根账号登录OSS控制台能够查看到所有Bucket的运维监控信息。但是在企业的实际运行过程中,直接使用根账号进行操作,安全风险极大。并且该方式查看到的是所有Bucket的信息,无法精确到指定的Bucket信息;
  2. 方式二:通过RAM 授权子账号在控制台查看

    1. 由于查看OSS的监控信息,需要获取云监控相关的授权。我们采用RAM提供的默认授权。给针对的子账号授予如下RAM默认授权:

      1. “只读访问云监控的权限”;
      2. AliyunOSSFullAccess;
    2. 使用该方式授权后,可以允许子账号登录控制台查看Bucket的授权信息,而且避免了使用根账号授权过大的风险。但是该授权方式也存在漏洞,就是该子账号能够查看所有Bucket的监控信息。

那么如何授权子账号在控制台上查看指定Bucket的监控信息(包括概览、基础数据、热点统计、API统计、文件访问统计)?
由于当前云监控(CloudMonitor)不支持细颗粒度资源描述,只支持*通配。因此我们要针对RAM提供的默认“只读访问云监控的授权”进行改造。想起RAM policy配置操作如下:

二、RAM Policy配置操作

2.1前提准备

  • 创建1个子账号;
  • 创建对应的Bucket;

2.2通过RAM policy授权步骤如下:

  • 创建1个查看Bucket概要信息的RAM Policy:授权子账号能够查看Bucket的概要信息;
  • 创建1个云监控的RAM Policy:使之能够查看某个指定的Bucket监控信息;

2.3创建查看Bucket 的RAM Policy:

查看Bucket的概要信息以及监控信息需要获取“GetBucketInfo”的授权。此外登录控制台访问额外还需要'GetBucketACL'的授权。因此,我们创建1个RAM Policy(例如,名称为 GetBucketInfoPolicy)。如下示例中Bucket名称是“test-beijing-2019”:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:GetBucketAcl",
        "oss:GetBucketinfo"
      ],
      "Resource": [
        "acs:oss:*:*:test-beijing-2019"
      ],
      "Condition": {}
    }
  ]
}

2.4创建云监控的RAM Policy:

在控制台查看Bucket的监控信息(包括概览、基础数据、热点统计、API统计、文件访问统计),需要云监控相关授权。但是由于云监控需要ListBuckets权限,该授权能够允许查看所有的Bucket信息。因此,我们针对RAM 提供的默认云监控Policy进行改造。相关RAM Policy 如下:

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "cms:Get*",
        "cms:List*",
        "cms:Query*",
        "cms:BatchQuery*"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ecs:DescribeInstances",
        "rds:DescribeDBInstances",
        "slb:DescribeLoadBalancer*",
        "vpc:DescribeEipAddresses",
        "vpc:DescribeRouterInterfaces",
        "vpc:DescribeGlobalAccelerationInstances",
        "vpc:DescribeVpnGateways",
        "vpc:DescribeNatGateways",
        "vpc:DescribeBandwidthPackages",
        "vpc:DescribeCommonBandwidthPackages",   
        "log:ListProject",
        "cdn:DescribeUserDomains",
        "mns:ListQueue",
        "mns:ListTopic",
        "ess:DescribeScalingGroups",
        "ocs:DescribeInstances",
        "kvstore:DescribeInstances",
        "hbase:DescribeClusterList",
        "hitsdb:DescribeHiTSDBInstanceList",
        "dds:DescribeDBInstances",
        "petadata:DescribeInstances",
        "petadata:DescribeDatabases",
        "gpdb:DescribeDBInstances",
        "emr:ListClusters",
        "opensearch:ListApps",
        "elasticsearch:ListInstance"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

如上RAM Policy,相比于RAM 提供的默认Policy: “AliyunCloudMonitorReadOnlyAccess”。我们取消了"oss:ListBuckets"授权操作。
PS:取消"oss:ListBuckets"的目的就是禁止云监控默认列出所有Bucket的监控信息。

2.5控制台查看效果

  1. 我们将如上2个RAM Policy授权给新建的子账号;
  2. 使用子账号登录控制台后,由于没有ListBuckets权限,所以控制台不会展示Bucket列表信息。因此需要我们在控制台的左上角“我的访问路径”中手工添加对应的Bucket名称。
  3. 添加Bucket名称后,刷新控制台后,我们就能够在控制台查看到指定Bucket的监控信息了;

image

图1:授权子账号登录控制台查看指定Bucket监控信息

【补充说明】:由于是修改了默认的云监控授权,因此子账号无法在“云监控”页面查看指定bucket的监控信息。
image

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
相关文章
|
3月前
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
203 2
|
2月前
|
运维 云栖大会
运维管理新品发布与最佳实践 | 2024云栖大会预告
运维管理新品发布与最佳实践 | 2024云栖大会
|
3月前
|
存储 运维 监控
数据库服务器运维最佳实践
【8月更文挑战第22天】
69 2
数据库服务器运维最佳实践
|
3月前
|
缓存 运维 监控
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
|
4月前
|
存储 C++ 容器
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
55 5
|
4月前
|
运维
开发与运维数据问题之LangChain增强大语言模型的能力如何解决
开发与运维数据问题之LangChain增强大语言模型的能力如何解决
43 1
|
4月前
|
API 运维
开发与运维数据问题之LangChain帮助处理长篇报告如何解决
开发与运维数据问题之LangChain帮助处理长篇报告如何解决
67 1
|
4月前
|
监控 搜索推荐 机器人
开发与运维数据问题之LangChain帮助提升GPT-4的实用性的如何解决
开发与运维数据问题之LangChain帮助提升GPT-4的实用性的如何解决
50 1
|
4月前
|
监控 C++ 运维
开发与运维数据问题之实现商业版和开源版在发送可观测数据方面的差异如何解决
开发与运维数据问题之实现商业版和开源版在发送可观测数据方面的差异如何解决
57 1
|
4月前
|
设计模式 监控 Go
开发与运维C++问题之C++部分原有的数据发送能力如何解决
开发与运维C++问题之C++部分原有的数据发送能力如何解决
26 1
下一篇
无影云桌面