一、如何在控制台上查看Bucket的运维监控信息?
-
方式一:通过根账号登录OSS控制台进行访问。
- 通过阿里云根账号登录OSS控制台能够查看到所有Bucket的运维监控信息。但是在企业的实际运行过程中,直接使用根账号进行操作,安全风险极大。并且该方式查看到的是所有Bucket的信息,无法精确到指定的Bucket信息;
-
方式二:通过RAM 授权子账号在控制台查看:
-
由于查看OSS的监控信息,需要获取云监控相关的授权。我们采用RAM提供的默认授权。给针对的子账号授予如下RAM默认授权:
- “只读访问云监控的权限”;
- AliyunOSSFullAccess;
- 使用该方式授权后,可以允许子账号登录控制台查看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控制台查看效果
- 我们将如上2个RAM Policy授权给新建的子账号;
- 使用子账号登录控制台后,由于没有ListBuckets权限,所以控制台不会展示Bucket列表信息。因此需要我们在控制台的左上角“我的访问路径”中手工添加对应的Bucket名称。
- 添加Bucket名称后,刷新控制台后,我们就能够在控制台查看到指定Bucket的监控信息了;
图1:授权子账号登录控制台查看指定Bucket监控信息
【补充说明】:由于是修改了默认的云监控授权,因此子账号无法在“云监控”页面查看指定bucket的监控信息。