权限管理
如果您需要对购买的DataArts Studio资源,给企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制华为云资源的访问。
通过IAM,您可以在华为云账号中给员工创建IAM用户,并授权来控制他们对华为云资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有DataArts Studio的使用权限,但是不希望他们拥有删除工作空间等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DataArts Studio服务,但是不允许删除工作空间的权限,控制他们对DataArts Studio资源的使用范围。
IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。关于IAM的详细介绍,请参见IAM产品介绍。
DataArts Studio权限
默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
DataArts Studio部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DataArts Studio时,需要先切换至授权区域。
DataArts Studio仅支持基于系统角色的授权,不支持策略授权。为了实现精细的权限管控,DataArts Studio提供了系统角色+工作空间角色授权的能力,由工作空间角色授权具体的操作权限,并支持自定义不同权限点的工作空间角色。
- IAM角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。传统的IAM角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
- IAM策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。
系统角色名称 |
描述 |
类别 |
---|---|---|
DAYU Administrator |
实例管理员,拥有对DataArts Studio实例及工作空间的所有管理权限、依赖服务权限,以及所有工作空间内的所有业务操作权限。
说明:
Tenant Administrator具有除统一身份认证服务外,其他所有服务的所有执行权限。即Tenant Administrator权限的用户也拥有对DataArts Studio的所有执行权限。 |
系统角色 |
DAYU User |
普通用户,具备DataArts Studio实例及工作空间的查看权限,以及依赖服务权限。普通用户需要被授予任一工作空间角色后,才能拥有对应角色的业务操作权限。
工作空间有管理员、开发者、部署者、运维者和访客五种预置角色,每种角色的介绍如下,具体操作权限请参见权限列表。
|
系统角色 |
DataArts Studio控制台功能依赖的角色或策略
DataArts Studio服务各组件功能所需依赖服务的权限如表2所示。在实际授权场景中,推荐为开发者用户配置DataArts Studio服务级别的依赖服务最小权限(可参考如何最小化授权IAM用户使用DataArts Studio,为用户配置最小权限),开发者用户的最小依赖服务权限如表3所示。
在实际授权场景中,DAYU Administrator和DAYU User系统角色已经预置了依赖服务的管理员权限。为了避免普通用户/用户组被授予DAYU User系统角色导致其拥有的依赖服务权限过大的风险,您可以在为用户组授权DAYU User系统角色后,手动删除用户组的周边依赖权限,再为用户组授予所需依赖服务的最小权限合集。
控制台功能 |
依赖服务 |
需配置角色/策略 |
具体功能 |
---|---|---|---|
管理中心 |
BSS |
bss:coupon:view bss:renewal:update bss:discount:view bss:order:view bss:order:pay bss:order:update |
创建增量包或DataArts Studio实例 |
KMS |
kms:cmk:get kms:cmk:list kms:cmk:create kms:cmk:decrypt kms:cmk:encrypt kms:dek:create kms:dek:encrypt kms:dek:decrypt |
创建数据连接时,使用KMS加解密 |
|
DWS |
dws:cluster:list dws:cluster:getDetail dws:openAPICluster:getDetail |
创建DWS数据连接 |
|
MRS |
mrs:cluster:get mrs:cluster:list |
创建MRS数据连接 |
|
VPC |
vpc:publicIps:get vpc:publicIps:list vpc:vpcs:get vpc:subnets:get |
创建MRS数据连接 |
|
RDS |
rds:*:get rds:*:list |
创建RDS数据连接 |
|
数据集成 |
VPC |
vpc:publicIps:get vpc:publicIps:list vpc:vpcs:get vpc:vpcs:list vpc:subnets:get vpc:securityGroups:get vpc:firewalls:list vpc:routeTables:list vpc:subNetworkInterfaces:list |
创建CDM集群或DataArts Studio实例 |
ECS |
ecs:flavors:get ecs:cloudServerFlavors:get ecs:availabilityZones:list |
创建CDM集群或DataArts Studio实例 |
|
CDM |
cdm:cluster:create |
创建CDM集群 |
|
KMS |
kms:cmk:get kms:cmk:list kms:cmk:create kms:cmk:decrypt kms:cmk:encrypt kms:dek:create kms:dek:encrypt kms:dek:decrypt |
创建数据连接时,使用KMS加解密 |
|
MRS |
mrs:cluster:get mrs:cluster:list mrs:job:get mrs:job:list |
创建MRS数据连接 |
|
DWS |
dws:cluster:list dws:cluster:getDetail dws:openAPICluster:getDetail |
创建DWS数据连接 |
|
CDM |
cdm:cluster:get cdm:cluster:list cdm:link:operate cdm:job:operate |
通过CDM控制台操作时,需要CDM服务权限 |
|
CES |
ces:*:get ces:*:list |
查看CES监控 |
|
CSS |
css:*:get css:*:list |
创建CSS连接 |
|
CloudTable |
cloudtable:*:get cloudtable:*:list |
创建CloudTable连接 |
|
RDS |
rds:*:get rds:*:list |
创建RDS连接 |
|
Config |
rms:resources:list |
创建CDM集群 |
|
数据开发 |
OBS |
obs:object:GetObject obs:object:PutObject obs:bucket:GetBucketLocation obs:bucket:ListAllMyBuckets obs:bucket:ListBucket obs:bucket:CreateBucket |
运行脚本、运行作业以及备份作业 |
SMN |
smn:topic:publish smn:topic:list |
作业通知 |
|
KMS |
kms:cmk:get kms:cmk:list kms:cmk:create kms:cmk:decrypt kms:cmk:encrypt kms:dek:create kms:dek:encrypt kms:dek:decrypt |
创建数据连接时,使用KMS加解密 |
|
MRS |
mrs:cluster:get mrs:cluster:list mrs:job:submit mrs:job:delete mrs:job:stop mrs:sql:execute mrs:sql:cancel mrs:job:get mrs:job:list |
MRS类型作业节点运行: MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL |
|
DLI |
dli:queue:submitJob dli:jobs:create dli:jobs:update dli:jobs:get dli:jobs:list dli:jobs:listAll |
DLI类型作业节点运行: DLI SQL、DLI Spark |
|
OBS |
obs:object:GetObject obs:object:PutObject obs:object:DeleteObject obs:bucket:GetBucketLocation obs:bucket:ListAllMyBuckets obs:bucket:ListBucket obs:bucket:ListBucketVersions obs:bucket:CreateBucket obs:bucket:DeleteBucket |
OBS类型作业节点运行: Create OBS、Delete OBS、OBS Manager |
|
DWS |
dws:cluster:list dws:cluster:getDetail dws:openAPICluster:getDetail |
创建DWS数据连接 |
|
CDM |
cdm:cluster:get cdm:cluster:list cdm:job:operate |
数据连接需要Agent的相关脚本、作业,以及CDM作业运行: RDS SQL、DWS SQL、Hive SQL、SPARK SQL、Shell、Python |
|
CES |
ces:metricData:list |
运维概览,查询DLI队列CPU |
|
GES |
ges:graph:access ges:graph:operate ges:graph:list ges:graph:getDetail ges:metadata:create ges:metadata:operate ges:metadata:delete ges:metadata:list ges:metadata:getDetail ges:jobs:list ges:jobs:getDetail |
Import GES作业节点运行 |
|
ECS |
ecs:servers:list ecs:servers:get ecs:servers:stop ecs:servers:start ecs:cloudServers:list |
Open/Close Resource作业节点运行,创建主机连接 |
|
DLI |
dli:queue:submitJob dli:queue:cancelJob dli:group:useGroup dli:group:getGroup dli:group:updateGroup dli:group:deleteGroup dli:group:listAllGroup dli:database:createDatabase dli:database:dropDatabase dli:database:displayDatabase dli:database:displayAllDatabases dli:database:explain dli:database:createView dli:database:createTable dli:database:displayAllTables dli:database:createFunction dli:database:describeFunction dli:database:showFunctions dli:database:dropFunction dli:table:select dli:table:update dli:table:delete dli:table:dropTable dli:table:describeTable dli:table:showCreateTable dli:table:showPartitions dli:table:showSegments dli:table:showTableProperties dli:table:insertOverwriteTable dli:table:insertIntoTable dli:table:compaction dli:table:truncateTable dli:table:alterView dli:table:alterTableRename dli:table:alterTableAddColumns dli:table:alterTableDropColumns dli:table:alterTableChangeColumn dli:table:alterTableSetLocation dli:table:alterTableAddPartition dli:table:alterTableRenamePartition dli:table:alterTableSetProperties dli:table:alterTableRecoverPartition dli:table:alterTableDropPartition dli:column:select dli:jobs:create dli:jobs:delete dli:jobs:start dli:jobs:stop dli:jobs:update dli:jobs:export dli:jobs:get dli:jobs:list dli:jobs:listAll dli:resource:useResource dli:resource:updateResource dli:resource:deleteResource dli:resource:getResource dli:resource:listAllResource dli:variable:update dli:variable:delete |
DLI类型作业/脚本运行 |
|
IAM |
iam:agencies:listAgencies |
获取作业委托 |
|
DIS |
DIS Operator DIS User |
DIS类型作业节点运行: DIS Stream、DIS Dump、DIS Client |
|
SWR |
SWR Admin |
仅当在数据开发组件作业中使用DLI Spark节点选择自定义镜像时,需要容器镜像服务中的镜像读取权限。 推荐通过镜像授权管理,添加所需镜像的读取权限。不推荐直接为用户授予SWR Admin系统角色, 可能存在权限过大的风险。 |
|
数据目录 |
OBS |
obs:object:GetObject obs:bucket:GetBucketStorage obs:bucket:GetBucketLocation obs:bucket:ListAllMyBuckets obs:bucket:ListBucket |
OBS元数据采集 |
DIS |
dis:streams:list dis:transferTasks:list |
DIS元数据采集 |
|
CSS |
css:cluster:list |
CSS元数据采集 |
|
GES |
ges:graph:list ges:graph:getDetail ges:metadata:list ges:metadata:getDetail |
GES元数据采集 |
|
DLI |
dli:database:displayDatabase dli:database:displayAllDatabases dli:table:select dli:table:describeTable dli:table:showPartitions dli:table:showTableProperties dli:jobs:create dli:jobs:get |
DLI元数据采集&数据概要分析 |
|
CDM |
cdm:cluster:list |
CSS元数据采集 |
|
数据质量 |
SMN |
smn:topic:publish smn:topic:list |
配置作业通知 |
OBS |
obs:object:GetObject obs:object:PutObject obs:bucket:GetBucketLocation obs:bucket:ListAllMyBuckets obs:bucket:ListBucket obs:bucket:CreateBucket |
导出质量报告 |
|
MRS |
mrs:job:submit mrs:sql:execute mrs:sql:cancel mrs:job:get |
MRS质量作业运行 |
|
DLI |
dli:queue:submitJob dli:jobs:get dli:jobs:listAll |
DLI质量作业运行 |
|
数据安全 |
DLI |
dli:queue:submitJob dli:queue:cancelJob dli:database:displayDatabase dli:database:displayAllDatabases dli:database:displayAllTables dli:table:describeTable dli:jobs:create dli:jobs:stop dli:jobs:get dli:resource:deleteResource dli:resource:getResource dli:resource:listAllResource |
DLI权限管控 |
DWS |
dws:cluster:list dws:cluster:getDetail dws:openAPICluster:getDetail |
DWS权限管控 |
|
MRS |
mrs:cluster:list mrs:job:submit mrs:job:stop |
MRS权限管控 |
|
KMS |
kms:cmk:list kms:cmk:encrypt kms:cmk:decrypt |
使用KMS加解密 |
|
CDM |
任意cdm权限,例如cdm:cluster:get |
DWS和MRS权限管控 |
权限类型 |
角色与策略权限-系统角色 |
角色与策略权限-自定义策略 |
角色与策略权限-自定义策略 |
---|---|---|---|
是否必配 |
必配 |
必配 |
必配 |
权限 |
|
依赖的全局级(global级)云服务的自定义策略DataArtsStudio_PermissionsOfDependentServices_global:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "obs:object:GetObject", "obs:object:PutObject", "obs:object:DeleteObject", "obs:bucket:GetBucketStorage", "obs:bucket:GetBucketLocation", "obs:bucket:ListAllMyBuckets", "obs:bucket:ListBucket", "obs:bucket:ListBucketVersions", "obs:bucket:CreateBucket", "obs:bucket:DeleteBucket", "rms:resources:list", "iam:agencies:listAgencies" ] } ] } |
依赖的项目级(region级)云服务的自定义策略DataArtsStudio_PermissionsOfDependentServices_region:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cdm:cluster:get", "cdm:cluster:list", "cdm:cluster:create", "cdm:link:operate", "cdm:job:operate", "ces:*:get", "ces:*:list", "cloudtable:*:get", "cloudtable:*:list", "css:*:get", "css:*:list", "dis:streams:list", "dis:transferTasks:list", "dli:queue:submitJob", "dli:queue:cancelJob", "dli:table:insertOverwriteTable", "dli:table:insertIntoTable", "dli:table:alterView", "dli:table:alterTableRename", "dli:table:compaction", "dli:table:truncateTable", "dli:table:alterTableDropColumns", "dli:table:alterTableSetProperties", "dli:table:alterTableChangeColumn", "dli:table:showSegments", "dli:table:alterTableRecoverPartition", "dli:table:dropTable", "dli:table:update", "dli:table:alterTableDropPartition", "dli:table:alterTableAddPartition", "dli:table:alterTableAddColumns", "dli:table:alterTableRenamePartition", "dli:table:delete", "dli:table:alterTableSetLocation", "dli:table:describeTable", "dli:table:showPartitions", "dli:table:showCreateTable", "dli:table:showTableProperties", "dli:table:select", "dli:resource:updateResource", "dli:resource:useResource", "dli:resource:getResource", "dli:resource:listAllResource", "dli:resource:deleteResource", "dli:database:explain", "dli:database:createDatabase", "dli:database:dropFunction", "dli:database:createFunction", "dli:database:displayAllDatabases", "dli:database:displayAllTables", "dli:database:displayDatabase", "dli:database:describeFunction", "dli:database:createView", "dli:database:createTable", "dli:database:showFunctions", "dli:database:dropDatabase", "dli:group:useGroup", "dli:group:updateGroup", "dli:group:listAllGroup", "dli:group:getGroup", "dli:group:deleteGroup", "dli:column:select", "dli:jobs:start", "dli:jobs:export", "dli:jobs:update", "dli:jobs:list", "dli:jobs:listAll", "dli:jobs:get", "dli:jobs:delete", "dli:jobs:create", "dli:jobs:stop", "dli:variable:update", "dli:variable:delete", "dws:cluster:list", "dws:cluster:getDetail", "dws:openAPICluster:getDetail", "ecs:servers:get", "ecs:servers:list", "ecs:servers:stop", "ecs:servers:start", "ecs:flavors:get", "ecs:cloudServerFlavors:get", "ecs:cloudServers:list", "ecs:availabilityZones:list", "ges:graph:access", "ges:metadata:create", "ges:jobs:list", "ges:graph:operate", "ges:jobs:getDetail", "ges:graph:getDetail", "ges:graph:list", "ges:metadata:list", "ges:metadata:getDetail", "ges:metadata:delete", "ges:metadata:operate", "kms:cmk:get", "kms:cmk:list", "kms:cmk:create", "kms:cmk:decrypt", "kms:cmk:encrypt", "kms:dek:create", "kms:dek:encrypt", "kms:dek:decrypt", "mrs:cluster:get", "mrs:cluster:list", "mrs:job:get", "mrs:job:list", "mrs:job:submit", "mrs:job:stop", "mrs:job:delete", "mrs:sql:execute", "mrs:sql:cancel", "rds:*:get", "rds:*:list", "smn:topic:publish", "smn:topic:list", "vpc:publicIps:list", "vpc:publicIps:get", "vpc:vpcs:get", "vpc:vpcs:list", "vpc:subnets:get", "vpc:securityGroups:get", "vpc:firewalls:list", "vpc:routeTables:list", "vpc:subNetworkInterfaces:list" ] } ] } |