本文主要介绍在RAM访问控制中,如何由主账号配置一个子账号对云原生数据湖分析的访问权限。

云原生数据湖分析的操作说明

在云原生数据湖分析中一个基本的概念是集群,主账号可以在自定义策略中定义一系列的操作和组合来限制子账户的权限。权限说明如下:
Action名称 语义
openanalytics:ConsolePermission 允许被授权的子账户可以访问数据湖控制台,如果子账户没有此权限则只能通过阿里云OpenAPI通过API的方式来使用云原生数据湖分析
openanalytics:CreateVirtualCluster 允许被授权的子账户在云原生数据湖分析服务中新建一个虚拟集群
openanalytics:GetVirtualCluster 允许被授权的子账户在云原生数据湖分析服务中获取一个虚拟集群的状态和配置
openanalytics:ListVirtualClusters 允许被授权的子账户查询子账户列表
openanalytics:UpdateVirtualCluster 允许被授权的子账户修改集群的状态和配置,意味着该用户可以修改集群的CPU、Memory配置,以及开启、停止集群
openanalytics:DeleteVirtualCluster 允许被授权的子账户删除集群
openanalytics:ExecuteOnVirtualCluster 允许被授权的子账户在集群中提交作业
当您希望用户可以获取一个集群的状态,同时可以在集群中提交作业。可以在RAM访问控制中新建一个自定义权限策略,详细操作请参见创建自定义策略,并配置如下脚本:
{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "openanalytics:ConsolePermission",
                "openanalytics:ListVirtualCluster",
                "openanalytics:GetVirtualCluster",
                "openanalytics:ExecuteOnVirtualCluster"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

被授予了此权限的子用户就拥有了控制台的访问权限,并可以在控制台中查找集群,向集群提交作业。

配置子用户只能访问某个特定的集群

有的时候主账户希望子账号只访问某几个特定的集群,就需要修改策略中的Resource部分来更细粒度的控制权限。这里Resource的部分如下所示:
 acs:openanalytics:${RegionId}:${OwnerId}:virtualcluster/${VirtualClusteName}
  1. 其中RegionId的映射如下:
    区域 RegionId
    杭州 cn-hangzhou
    北京 cn-beijing
    上海 cn-shanghai
    深圳 cn-shenzhen
    张家口 cn-zhangjiakou
    中国香港 cn-hongkong
    新加坡 ap-southeast-1
    雅加达 ap-southeast-5
    以上所有区域 *
  2. OwnerId 为资源所在的主账户的账户ID。
    主账号可以在安全设置中看到自己的账号ID:tp
  3. VirtualClusterName 为数据湖控制台中,虚拟集群的名字。tp
根据上述说明,可以组装出一个集群对应的唯一的一个ResourceId,将这个ResourceId配置到策略中可以更细粒度的控制用户的行为,示例如下:
{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "openanalytics:ConsolePermission",
                "openanalytics:ListVirtualCluster",
                "openanalytics:GetVirtualCluster",
                "openanalytics:ExecuteOnVirtualCluster"
            ],
            "Resource": "acs:openanalytics:cn-hangzhou:123456:virtualcluster/daily-test"
            "Effect": "Allow"
        }
    ]
}

该示例策略让用户只能对杭州区的daily-test集群有对应的操作权限,其它的集群则无法操作。