更新时间:2022-12-07 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中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。

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

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

表1 API授权项列表

权限

对应API接口

授权项

依赖的授权项

IAM项目

(Project)

企业项目

(Enterprise Project)

创建队列

POST /v1.0/{project_id}/queues

dli:queue:create_queue

-

删除队列

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

dli:queue:drop_queue

-

提交作业

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

dli:queue:submit_job

-

×

取消作业

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

dli:queue:cancel_job

-

×

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

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

dli:queue:show_privileges

-

×

重启队列

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

dli:queue:restart

-

×

扩缩容队列

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

dli:queue:scale_queue

-

×

赋予指定用户队列权限

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

dli:queue:grant_privilege

-

×

移除指定用户队列权限

POST /v1.0/{project_id}/databases

dli:database:create_database

-

×

创建数据库

POST /v1.0/{project_id}/databases

dli:database:create_database

-

×

删除数据库

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

dli:database:drop_database

-

×

修改数据库配置

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

dli:database:alter_database_properties

-

×

将SQL语句解释为执行计划

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

dli:database:explain

-

×

创建表

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

dli:database:create_table

-

×

创建视图

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

database:create_view

-

×

创建函数

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

dli:database:create_function

-

×

描述函数

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

dli:database:describe_function

-

×

删除函数

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

dli:database:drop_function

-

×

显示函数

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

dli:database:show_functions

-

×

创建角色

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

dli:database:create_role

-

×

删除角色

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

dli:database:drop_role

-

×

显示角色

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

dli:database:show_roles

-

×

显示所有角色

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

dli:database:show_all_roles

-

×

绑定角色

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

dli:database:grant_role

-

×

解除角色绑定

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

dli:database:revoke_role

-

×

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

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

dli:database:show_users

-

×

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

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

dli:database:show_privileges

-

×

显示数据库

GET /v1.0/{project_id}/databases

dli:database:display_database

-

×

显示所有数据库

GET /v1.0/{project_id}/databases

dli:database:display_all_databases

-

×

显示所有表

GET /v1.0/{project_id}/databases

dli:database:display_all_tables

-

×

赋予指定用户数据库权限

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

dli:database:grant_privilege

-

×

移除指定用户数据库权限

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

dli:database:revoke_privilege

-

×

删除表

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

dli:table:drop_table

-

×

显示表结构

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

dli:table:describe_table

-

×

查询表

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:show_table_properties

-

×

显示建表语句

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

dli:table:show_create_table

-

×

显示所有分区

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

dli:table:show_partitions

-

×

设置表配置

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

dli:table:alter_table_set_properties

-

×

添加列

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

dli:table:alter_table_add_columns

-

×

在分区表中添加分区

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

dli:table:alter_table_add_partition

-

×

重命名表分区

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

dli:table:alter_table_rename_partition

-

×

删除分区表的分区

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

dli:table:alter_table_drop_partition

-

×

恢复表分区

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

dli:table:alter_table_recover_partition

-

×

重命名表

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

dli:table:alter_table_rename

-

×

设置分区路径

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

dli:table:alter_table_set_location

-

×

插入表数据

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

dli:table:insert_into_table

-

×

重写表数据

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

dli:table:insert_overwrite_table

-

×

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

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

dli:table:show_privileges

-

×

清空表

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

dli:table:truncate_table

-

×

更新表

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:alter_table_change_column

-

×

删除列

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

dli:table:alter_table_drop_columns

-

×

显示数据段

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

dli:table:show_segments

-

×

合并数据段

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

dli:table:compaction

-

×

修改视图

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

dli:table:alter_view

-

×

显示表

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

dli:table:display_table

-

×

赋予指定用户数据表权限

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

dli:table:grant_privilege

-

×

移除指定用户数据表权限

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

dli:table:revoke_privilege

-

×

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

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

dli:datasourceauth:show_privileges

-

×

使用安全认证信息

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

dli:datasourceauth:use_auth

-

×

删除安全认证信息

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

dli:datasourceauth:drop_auth

-

×

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

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

dli:datasourceauth:grant_privilege

-

×

更新安全认证信息

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

dli:datasourceauth:update_auth

-

×

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

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

dli:datasourceauth:grant_privilege

-

×

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

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

dli:datasourceauth:revoke_privilege

-

×

查询作业详情

GET /v1.0/:x_project_id/streaming/jobs/:job_id

dli:jobs:get

-

×

查询作业列表

GET /v1.0/:x_project_id/streaming/jobs

dli:jobs:list_all

-

×

创建新作业

POST /v1.0/:x_project_id/streaming/sql-jobs

dli:jobs:create

-

×

更新作业

PUT /v1.0/:x_project_id/streaming/sql-jobs/:job_id

dli:jobs:update

-

×

删除作业

POST /v1.0/:x_project_id/streaming/jobs/delete

dli:jobs:delete

-

×

启动作业

POST /v1.0/:x_project_id/streaming/jobs/run

dli:jobs:start

-

×

停止作业

POST /v1.0/:x_project_id/streaming/jobs/stop

dli:jobs:stop

-

×

导出作业

POST /v1.0/:x_project_id/streaming/jobs/export

dli:jobs:export

-

×

赋予指定用户作业权限

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

dli:jobs:grant_privilege

-

×

移除指定用户作业权限

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:grant_privilege

-

×

移除指定用户列权限

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

dli:column:revoke_privilege

-

×

查询flink作业列表

GET /v1.0/:x_project_id/jobs

dli:jobs:list_job

-

×

查询flink作业详情

GET /v1.0/:x_project_id/job/:job_id

dli:jobs:get_job

-

×

创建flink新作业

POST /v1.0/:x_project_id/sql_job

dli:jobs:create_job

-

×

更新flink作业

PATCH /v1.0/:x_project_id/sql_job

dli:jobs:update_job

-

×

删除flink作业

DELETE /v1.0/:x_project_id/job/:job_id

dli:jobs:delete_job

-

×

启动flink作业

POST v1.0/:x_project_id/job/:job_id/run

dli:queue:submit_job

-

×

停止flink作业

POST /v1.0/:x_project_id/job/:job_id/stop

dli:queue:cancel_job

-

×