文档首页/ 数据治理中心 DataArts Studio/ 用户指南/ 授权用户使用DataArts Studio/ 创建IAM用户并授予DataArts Studio权限-身份策略
更新时间:2025-10-09 GMT+08:00
分享

创建IAM用户并授予DataArts Studio权限-身份策略

如果您需要对使用DataArts Studio服务的用户进行身份策略的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)。通过IAM,您可以:
  • 根据企业的业务组织,在您的华为账号中,给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并使用DataArts Studio资源。
  • 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
  • DataArts Studio资源委托给更专业、高效的其他华为账号或者云服务,这些账号或者云服务可以根据权限进行代运维。

如果华为账号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章节,不影响您使用DataArts Studio服务的其他功能。

本章节为您介绍使用身份策略的授权方法,操作流程如授权示例流程所示。

背景信息

给用户组授权之前,请您了解DataArts Studio的权限体系,本文以对IAM用户进行身份策略授权为例进行说明。

DataArts Studio权限的详细描述,请参见DataArts Studio权限管理
图1 权限体系

约束与限制

  • 系统身份策略为用户提供了实例及工作空间的相关权限,在另配依赖服务权限后,还需注意具体工作空间内的业务操作权限由工作空间角色提供。
  • 当为某IAM用户同时配置角色与策略权限DAYU Administrator、DAYU User或DataArts Studio User系统角色)和身份策略权限(DataArtsStudioFullAccessPolicy、DataArtsStudioOperatorPolicy、DataArtsStudioReadOnlyPolicy系统策略或自定义身份策略)时,出于兼容性考虑,此IAM用户最终所拥有的权限如下:
    • 如果二者配置的权限中存在拒绝(deny)授权项,则拒绝策略优先生效。
    • 对于二者配置的权限中的允许(allow)授权项,则允许策略取二者并集。

授权示例流程

图2 身份策略授权流程
  1. 创建用户或用户组。

    使用华为账号登录统一身份认证服务IAM控制台,创建用户或用户组。具体操作请参见创建用户创建用户组章节。

    仅当创建IAM用户时的访问方式勾选“编程访问”后,此IAM用户才能通过认证鉴权,从而使用API、SDK等方式访问DataArts Studio

  2. 将系统身份策略附加至用户或用户组。

    为用户或用户组授予DataArts Studio系统策略,例如DataArtsStudioFullAccessPolicy、DataArtsStudioOperatorPolicy或DataArtsStudioReadOnlyPolicy,或将系统策略附加至用户或用户组。具体操作请参见将系统身份策略附加至用户或用户组章节。

  3. 为用户或用户组授权依赖服务权限。

    当前DataArts Studio服务涉及的依赖服务权限如表1所示。具体授权操作步骤如下:
    1. 在IAM控制台,进入“权限管理 > 角色与策略 >创建自定义策略”,切换至JSON视图,按照文档提供的策略内容,分别创建DataArtsStudio_PermissionsOfDependentServices_globalDataArtsStudio_PermissionsOfDependentServices_region策略。
    2. 进入“用户”或“用户组”,单击待授权对象后的“授权”,进入授权操作。首先选择“角色与策略授权”,勾选如下系统角色和自定义策略为对象授权。
      • 系统角色DIS Operator
      • 自定义策略DataArtsStudio_PermissionsOfDependentServices_global
      • 自定义策略DataArtsStudio_PermissionsOfDependentServices_region
    3. (可选)仅当在数据开发组件作业中通过DLI Spark节点选择自定义镜像时,需要容器镜像服务中的镜像读取权限。使用SWR管理员权限账号登录容器镜像服务SWR控制台,在左侧导航栏选择“我的镜像”,进入所需自定义镜像的镜像详情页面,为用户授予该镜像的读取权限。
    4. 依赖服务权限授权结束。
    表1 开发者用户的依赖服务最小权限合集

    权限类型

    角色与策略权限-系统角色

    角色与策略权限-自定义策略

    角色与策略权限-自定义策略

    是否必配

    必配

    必配

    必配

    权限

    • DIS Operator
    • DIS User
    • (可选,不推荐)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:subnets:get",
                    "vpc:securityGroups:get",
                    "vpc:firewalls:list",
                    "vpc:routeTables:list",
                    "vpc:subNetworkInterfaces:list"
                ]
            }
        ]
    }

  4. 为用户自定义工作空间角色,并将其添加到工作空间成员、配置角色。

    对于系统策略授权的IAM用户而言,DataArts Studio工作空间角色决定了其在工作空间内的权限,当前有管理员、开发者、运维者和访客这四种预置角色可被分配。如果这四种预置角色可以满足您的使用需求,则无需自定义工作空间角色,直接将用户添加到工作空间成员、配置预置角色即可;否则,请您创建自定义角色,再将用户添加到工作空间成员、配置自定义角色。自定义工作空间角色的具体操作请参见(可选)自定义工作空间角色,添加工作空间成员并配置角色的具体操作请参见添加工作空间成员和角色。角色的权限说明请参见权限列表章节。

  5. 用户登录并验证权限

    新创建的用户登录控制台,切换至授权区域,验证权限,例如:

    • 在“服务列表”中选择数据治理中心,进入DataArts Studio实例卡片。从实例卡片进入控制台首页后,确认能否正常查看工作空间列表情况。
    • 进入已添加当前用户的工作空间业务模块(例如管理中心),查看能否根据所配置的工作空间角色,正常进行业务操作。

DataArts Studio自定义身份策略样例

如果系统预置的DataArts Studio系统策略,不满足您的授权要求,可以创建自定义身份策略。自定义身份策略中可以添加的授权项(Action)请参考权限及授权项说明章节。

目前华为云平台支持以下两种方式创建自定义身份策略:

  • 可视化视图创建自定义身份策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。
  • JSON视图创建自定义身份策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。

具体创建步骤请参见:创建自定义身份策略并附加至主体章节。

您可以在创建自定义身份策略时,可以通过资源类型(Resource)元素来选择特定资源,以及条件键(Condition)元素来控制策略何时生效。支持的资源类型和条件键请参考权限及授权项说明章节。下面为您介绍常用的DataArts Studio自定义身份策略样例。

由于当前接口限制,自定义身份策略指定资源类型时,由于部分操作不支持指定具体的workspace或instance资源,会导致权限配置不符合预期。如允许(allow)某个不支持指定资源的操作,但又为其指定了具体资源时,会导致所有资源操作均被拒绝;拒绝(deny)某个不支持指定资源的操作,但又为其指定了具体资源时,会导致所有资源操作均被允许。

因此,在自定义身份策略需要指定资源类型时,需要剔除这类操作,然后将这类操作独立为不指定资源或指定全局资源的身份策略,使用多个身份策略一起为用户赋权。不指定资源或指定全局资源的身份策略,即JSON策略内容中不带Resource元素,或者Resource内容如下所示:
            "Resource": [
                "DataArtsStudio:*:*:workspace:*",
                "DataArtsStudio:*:*:instance:*"
            ]

当前DataArts Studio不支持指定具体资源的操作汇总如下:

  • 不支持指定workspace资源,仅支持指定instance资源:
    • DataArtsStudio:workspace:create
    • DataArtsStudio:workspace:list
  • 不支持指定instance资源或workspace资源:
    • DataArtsStudio:instance:create
    • DataArtsStudio:instance:get
    • DataArtsStudio:instance:list
    • DataArtsStudio:instance:resize
    • DataArtsStudio:instance:getAgency
    • DataArtsStudio:instance:createAgency
    • DataArtsStudio:instance:uploadDriver
    • DataArtsStudio:instance:deleteDriver
    • DataArtsStudio:instance:listDrivers
    • DataArtsStudio:instance:listTags
    • DataArtsStudio:workspace:listTags
  • 示例1:授权查询实例和工作空间的权限。
    {
        "Version": "5.0",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "DataArtsStudio:workspace:get",
                    "DataArtsStudio:instance:get"
                ]
            }
        ]
    }
  • 示例2:多个授权项策略

    一个自定义身份策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项。多个授权语句策略描述如下:

    {
        "Version": "5.0",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "DataArtsStudio:workspace:get",
                    "DataArtsStudio:instance:get"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "iam:groups:get",
                    "iam:users:get"
                ]
            }
        ]
    }

相关文档