如果您需要对的DataArts Studio资源,给企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identityand Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制资源的访问。
通过IAM,您可以在帐号中给员工创建IAM用户,并授权来控制他们对资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有DataArts Studio的使用权限,但是不希望他们拥有删除工作空间等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DataArts Studio服务,但是不允许删除工作空间的权限,控制他们对DataArts Studio资源的使用范围。
DataArts Studio权限
默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
DataArts Studio部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DataArts Studio时,需要先切换至授权区域。
DataArts Studio 仅支持基于系统角色的授权,不支持策略授权 。为了实现精细的权限管控,DataArts Studio提供了系统角色 + 工作空间角色授权的能力,由工作空间角色授权具体的操作权限,并支持自定义不同权限点的工作空间角色。
说明IAM提供了以下两种授权机制。注意,DataArts Studio仅支持其中的IAM角色方式,不支持IAM策略。
IAM角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。传统的IAM角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
IAM策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。
如图1-10和表1-1所示,DataArts Studio的IAM系统角色包括DAYU Administrator和DAYU User;工作空间角色是基于IAM角色DAYU User进一步授予的,权限列表列出了DataArts Studio常用操作与工作空间角色的授权关系,您可以参照这些权限列表选择合适的角色。
图1-10 权限体系
表1-1 DataArts Studio系统角色
系统角色名称
描述
类别
DAYU Administrator
实例管理员,拥有对DataArts Studio实例及工作空间的所有管理权限、依赖服务权限,以及所有工作空间内的所有业务操作权限。
说明
Tenant Administrator具有除统一身份认证服务外,其他所有服务的所有执行权限。即Tenant Administrator权限的用户也拥有对DataArts Studio的所有执行权限。
系统角色
DAYU User
普通用户,具备DataArts Studio实例及工作空间的查看权限,以及依赖服务权限。普通用户需要被授予任一工作空间角色后,才能拥有对应角色的业务操作权限。
工作空间有管理员、开发者、部署者、运维者和访客五种预置角色和自定义角色,每种角色的介绍如下,具体操作权限请参见权限列表。
l 管理员:工作空间管理员,拥有工作空间内所有的业务操作权限。建议将项目负责人、开发责任人、运维管理员设置为管理员角色。
l 开发者:开发者拥有工作空间内创建、管理工作项的业务操作权限。建议将任务开发、任务处理的用户设置为开发者。
l 运维者:运维者具备工作空间内运维调度等业务的操作权限,但无法更改工作项及配置。建议将运维管理、状态监控的用户设置为运维者。
l 访客:访客可以查看工作空间内的数据,但无法操作业务。建议将只查看空间内容、不进行操作的用户设置为访客。
l 部署者:企业模式独有,具备工作空间内任务包发布的相关操作权限。在企业模式中,开发者提交脚本或作业版本后,系统会对应产生发布任务。开发者确认发包后,需要部署者审批通过,才能将修改后的作业同步到生产环境。
l 自定义角色:如果预置角色不能满足您的需求,您也可以创建自定义角色。自定义角色的权限可自由配置,实现业务操作权限最小化。
系统角色
DataArts Studio控制台功能依赖的角色或策略
DataArts Studio服务各组件功能所需依赖服务的权限如表1-2所示。在实际授权场景中,推荐为开发者用户配置DataArts Studio服务级别的依赖服务最小权限,开发者用户的最小依赖服务权限如表1-3所示。
说明在实际授权场景中,DAYU Administrator和DAYU User系统角色已经预置了依赖服务的管理员权限。为了避免普通用户/用户组被授予DAYU User系统角色导致其拥有的依赖服务权限过大的风险,您可以在为用户组授权DAYU User系统角色后,手动删除用户组的周边依赖权限,再为用户组授予所需依赖服务的最小权限合集。
表1-2 DataArts Studio控制台依赖服务的角色或策略
控制台功能
依赖服务
需配置角色/策略
具体功能
管理中心
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:port: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:port:get
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连接
RMS
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权限管控
表1-3 开发者用户的依赖服务最小权限合集
权限类型
角色与策略权限-系统角色
角色与策略权限-自定义策略
角色与策略权限-自定义策略
是否必配
必配
必配
必配
权限
l DIS Operator
l DIS User
l (可选,不推荐)SWR Admin
说明
仅当在数据开发组件作业中使用DLI Spark节点选择自定义镜像时,需要容器镜像服务中的镜像读取权限。
推荐通过,添加所需镜像的读取权限。不推荐直接为用户授予SWR Admin系统角色, 可能存在权限过大的风险。
依赖的全局级(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:port:get",
"vpc:subnets:get",
"vpc:securityGroups:get",
"vpc:firewalls:list",
"vpc:routeTables:list",
"vpc:subNetworkInterfaces:list"
]
}
]
}