文档首页> 数据湖探索 DLI> API参考> 权限策略和授权项
更新时间:2024-03-15 GMT+08:00

权限策略和授权项

如果您需要对您所拥有的DLI服务进行精细的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM),如果华为云帐号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章节,不影响您使用DLI服务的其它功能。

默认情况下,新建的IAM用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得该用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。

权限根据授权的精细程度,分为角色策略

  • 角色:角色以服务为粒度,是IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。
  • 策略:策略以API接口为粒度进行权限拆分,授权更加精细,可以精确到某个操作、资源和条件,能够满足企业对权限最小化的安全管控要求。

如果您需要允许或是禁止某个接口的操作权限,请使用策略。

帐号具备所有接口的调用权限,如果使用帐号下的IAM用户发起API请求时,该IAM用户必须具备调用该接口所需的权限,否则,API请求将调用失败。每个接口所需要的权限,与各个接口所对应的授权项相对应,只有发起请求的用户被授予授权项所对应的策略,该用户才能成功调用该接口。例如,用户要创建队列,那么这个IAM用户被授予的策略中必须包含允许"dli:queue:create_queue"的授权项,该接口才能调用成功。

支持的授权项

策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下:

  • 权限:允许或拒绝对指定资源在特定条件下进行某项操作。
  • 对应API接口:自定义策略实际调用的API接口。
  • 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。
  • 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。
  • IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。

    关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别

“√”表示支持,“x”表示暂不支持。

DLI支持自定义策略授权项如下表所示。

表1 API授权项列表

权限

对应API接口

授权项

IAM项目

(Project)

企业项目

(Enterprise Project)

创建队列

POST /v1.0/{project_id}/queues

dli:queue:createQueue

删除队列

DELETE /v1.0/{project_id}/queues/{queue_name}

dli:queue:dropQueue

提交作业

POST /v1.0/{project_id}/jobs/submit-job

dli:queue:submitJob

×

取消作业

DELETE /v1.0/{project_id}/jobs/{job_id}

dli:queue:cancelJob

×

查看其他用户具备的队列权限

GET /v1.0/{project_id}/queues/{queue_name}/users

dli:queue:showPrivileges

×

重启队列

PUT /v1.0/{project_id}/queues/{queue_name}/action

dli:queue:restart

×

扩缩容队列

PUT /v1.0/{project_id}/queues/{queue_name}/action

dli:queue:scaleQueue

×

赋予指定用户弹性资源权限

PUT /v1.0/{project_id}/user-authorization

dli:elasticresourcepool:grantPrivilege

×

移除指定用户弹性资源池权限

PUT /v1.0/{project_id}/user-authorization

dli:elasticresourcepool:revokePrivilege

×

创建数据库

POST /v1.0/{project_id}/databases

dli:database:createDatabase

×

删除数据库

DELETE /v1.0/{project_id}/databases/{database_name}

dli:database:dropDatabase

×

修改数据库配置

POST /v1.0/{project_id}/jobs/submit-job

dli:database:alterDatabaseProperties

×

将SQL语句解释为执行计划

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:explain

×

创建表

POST /v1.0/{project_id}/databases/{database_name}/tables

dli:database:createTable

×

创建视图

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:createView

×

创建函数

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:createFunction

×

描述函数

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:describeFunction

×

删除函数

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:dropFunction

×

显示函数

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:showFunctions

×

创建角色

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:createRole

×

删除角色

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:dropRole

×

显示角色

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:showRoles

×

显示所有角色

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:showAllRoles

×

绑定角色

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:grantRole

×

解除角色绑定

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:revokeRole

×

显示所有角色和用户的绑定关系

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:database:showUsers

×

查看其他用户具备的数据库权限

GET /v1.0/{project_id}/databases/{database_name}/users

dli:database:showPrivileges

×

显示数据库

GET /v1.0/{project_id}/databases

dli:database:displayDatabase

×

显示所有数据库

GET /v1.0/{project_id}/databases

dli:database:displayAllDatabases

×

显示所有表

GET /v1.0/{project_id}/databases

dli:database:displayAllTables

×

赋予指定用户数据库权限

PUT /v1.0/{project_id}/user-authorization

dli:database:grantPrivilege

×

移除指定用户数据库权限

PUT /v1.0/{project_id}/user-authorization

dli:database:revokePrivilege

×

删除表

DELETE /v1.0/{project_id}/databases/{database_name}/tables/{table_name}

dli:table:dropTable

×

显示表结构

GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}

dli:table:describeTable

×

查询表

GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}/preview

dli:table:select

×

显示表配置

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:showTableProperties

×

显示建表语句

GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}/preview

dli:table:showCreateTable

×

显示所有分区

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:showPartitions

×

设置表配置

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableSetProperties

×

添加列

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableAddColumns

×

在分区表中添加分区

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableAddPartition

×

重命名表分区

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableRenamePartition

×

删除分区表的分区

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableDropPartition

×

恢复表分区

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableRecoverPartition

×

重命名表

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableRename

×

设置分区路径

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterTableSetLocation

×

插入表数据

POST /v1.0/{project_id}/jobs/submit-job,语句调用

dli:table:insertIntoTable

×

重写表数据

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:insertOverwriteTable

×

查看其他用户具备的表权限

GET /v1.0/{project_id}/databases/{database_name}/tables/{table_name}/users

dli:table:showPrivileges

×

清空表

POST /v1.0/{project_id}/jobs/submit-job

dli:table:truncateTable

×

更新表

POST /v1.0/{project_id}/jobs/submit-job

dli:table:update

×

删除表数据

POST /v1.0/{project_id}/jobs/submit-job

dli:table:delete

×

修改列信息

POST /v1.0/{project_id}/jobs/submit-job

dli:table:alterTableChangeColumn

×

删除列

POST /v1.0/{project_id}/jobs/submit-job

dli:table:alterTableDropColumns

×

显示数据段

POST /v1.0/{project_id}/jobs/submit-job

dli:table:showSegments

×

合并数据段

POST /v1.0/{project_id}/jobs/submit-job

dli:table:compaction

×

修改视图

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:table:alterView

×

显示表结构

POST /v1.0/{project_id}/jobs/submit-job,执行对应SQL

dli:table:describeTable

×

赋予指定用户数据表权限

PUT /v1.0/{project_id}/user-authorization

dli:table:grantPrivilege

×

移除指定用户数据表权限

PUT /v1.0/{project_id}/user-authorization

dli:table:revokePrivilege

×

查看其它用户的安全认证信息权限列表

GET /v1.0/{project_id}/datasource/auth-infos/{auth_name}/users

dli:datasourceauth:showPrivileges

×

使用安全认证信息

POST /v1.0/{project_id}/jobs/submit-job

dli:datasourceauth:useAuth

×

删除安全认证信息

DELETE /v2.0/{project_id}/datasource/auth-infos/{auth_info_name}

dli:datasourceauth:dropAuth

×

更新安全认证信息

PUT /v2.0/{project_id}/datasource/auth-infos

dli:datasourceauth:updateAuth

×

赋予指定用户安全认证权限

PUT /v1.0/{project_id}/user-authorization

dli:datasourceauth:grantPrivilege

×

移除指定用户安全认证权限

PUT /v1.0/{project_id}/user-authorization

dli:datasourceauth:revokePrivilege

×

赋予指定用户作业权限

PUT /v1.0/{{project_id}}/authorization

dli:jobs:grantPrivilege

×

移除指定用户作业权限

PUT /v1.0/{{project_id}}/authorization

dli:jobs:revokePrivilege

×

查询列

POST /v1.0/{project_id}/jobs/submit-job,SQL语句调用

dli:column:select

×

赋予指定用户列权限

PUT /v1.0/{project_id}/user-authorization

dli:column:grantPrivilege

×

移除指定用户列权限

PUT /v1.0/{project_id}/user-authorization

dli:column:revokePrivilege

×

查询flink作业列表

GET /v1.0/{project_id}/streaming/jobs

dli:jobs:listAll

×

查询flink作业详情

GET /v1.0/{project_id}/streaming/jobs/{job_id}

dli:jobs:get

×

创建flink SQL作业

POST /v1.0/{project_id}/streaming/sql-jobs

dli:jobs:create

×

创建flinkJar作业

POST /v1.0/{project_id}/streaming/flink-jobs

dli:jobs:create

×

更新flinkSQL作业

PUT /v1.0/{project_id}/streaming/sql-jobs/{job_id}

dli:jobs:update

×

更新flinkJar作业

PUT /v1.0/{project_id}/streaming/flink-jobs/{job_id}

dli:jobs:update

×

删除flink作业

DELETE /v1.0/{project_id}/streaming/jobs/{job_id}

dli:jobs:delete

×

批量运行flink作业

POST /v1.0/{project_id}/streaming/jobs/run

dli:jobs:start

×

停止flink作业

POST /v1.0/{project_id}/streaming/jobs/stopob_id/stop

dli:jobs:stop

×