权限管理
如果您需要对的DataArts Studio资源,给企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制资源的访问。
通过IAM,您可以在账号中给员工创建IAM用户,并授权来控制他们对资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有DataArts Studio的使用权限,但是不希望他们拥有删除工作空间等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DataArts Studio服务,但是不允许删除工作空间的权限,控制他们对DataArts Studio资源的使用范围。
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服务级别的依赖服务最小权限,开发者用户的最小依赖服务权限如表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"
]
}
]
} |
