在MaxCompute项目中添加用户后,需要给该用户授权,只有用户获得相应的权限后,才能在项目内执行操作。MaxCompute支持通过角色为用户授权,也支持直接为用户授权。本文为您介绍用户授权命令语法并提供示例供参考。
通过绑定项目级角色为用户授权
MaxCompute推荐将项目级别自定义的角色或内置管理角色赋予用户,使用户具备与角色一样的权限,方便批量用户的权限变更与回收。
将用户添加进MaxCompute项目,请参见用户规划与管理。
当用户被移除项目时,需要及时清理遗留权限信息,请参见彻底清除被删除用户遗留的权限信息
将MaxCompute项目级角色赋予用户
将项目级别的内置角色或自定义角色绑定至用户,用户会同时具备角色相应的权限。
命令格式
grant <role_name> to <user_name>;
注意事项
多个用户可以同时存在于一个项目级角色下,一个用户也可以隶属于多个项目级角色。
参数说明
参数名称
是否必填
说明
role_name
是
指定待赋予用户的角色名称。
您可以通过MaxCompute客户端执行
list roles;
命令查看角色信息。user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。使用示例
将项目级角色Worker绑定至已添加到MaxCompute项目的阿里云用户Kate@aliyun.com、RAM用户RAM$Bob@aliyun.com:Allen及RAM角色RAM$Bob@aliyun.com:role/ram_role。
--Bob进入test_project_a项目。 use test_project_a; --Bob将角色赋予阿里云账号。 grant Worker to ALIYUN$Kate@aliyun.com; --Bob将角色赋予RAM用户。 grant Worker to RAM$Bob@aliyun.com:Allen; --Bob将角色赋予RAM角色。 grant Worker to `RAM$Bob@aliyun.com:role/ram_role`;
收回赋予用户的MaxCompute项目级角色
解绑赋予用户的角色,用户将不再具备角色相应的权限。
命令格式
revoke <role_name> from <user_name>;
参数说明
参数名称
是否必填
说明
role_name
是
指定待收回的角色名称。
您可以通过MaxCompute客户端执行
list roles;
命令获取角色名称。user_name
是
指定待收回角色相应的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令获取用户名称。使用示例
收回赋予用户Kate@aliyun.com及RAM$Bob@aliyun.com:Allen及RAM$Bob@aliyun.com:role/ram_roleR的角色Worker。
--Bob进入test_project_a项目。 use test_project_a; --Bob收回赋予阿里云账号的角色。 revoke Worker from ALIYUN$Kate@aliyun.com; --Bob收回赋予RAM用户的角色。 revoke Worker from RAM$Bob@aliyun.com:Allen; --Bob收回赋予RAM角色的角色。 revoke Worker from `RAM$Bob@aliyun.com:role/ram_role`;
常见的授权场景及语法示例
用户授权场景 | 授权方式 | 授权人 | 授权操作入口 |
通过角色为用户授予对象的操作权限 | 先通过ACL权限控制或Policy权限控制为角色授权,再将角色赋予用户。 | 请参见权限一览表的支持的授权人列。 | |
撤销通过角色为用户授予的对象的操作权限 | |||
通过角色为用户授予Download权限 | 先通过Download权限控制为角色授权,再将角色赋予用户。 | ||
撤销通过角色为用户授予的Download权限 | |||
通过角色为用户授予访问相同高敏感等级数据的权限 | 先通过Label权限控制为角色授权,再将角色赋予用户。 | ||
撤销通过角色为用户授予的访问相同高敏感等级数据的权限 |
通过角色为用户授予对象的操作权限
通过ACL授权机制或Policy授权机制为角色授权,然后将角色赋予多个用户。
更多为角色授权信息,请参见为角色授予对象的操作权限。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。现需要为三个RAM用户授予创建表、函数、实例、查看项目所有类型的对象列表的权限。命令示例如下。
--Bob进入test_project_a项目。
use test_project_a;
--Bob将Allen、Alice、Tom添加至test_project_a项目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
--方式一:ACL授权。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
--方式二:Policy授权。
grant CreateTable, CreateFunction, CreateInstance, List
on project test_project_a
to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;
撤销通过角色为用户授予的对象的操作权限
您可以通过如下方式撤销授权:
撤销授予角色的权限
原本被赋予角色的所有用户都不再具备角色相应的权限。
收回赋予用户的角色
只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户通过角色Worker授予创建表、函数、实例、查看项目所有类型的对象列表的权限。现需要撤销对象的操作权限,命令示例如下。
方式一:撤销授予角色Worker的权限。
--进入test_project_a项目。 use test_project_a; --为角色Worker撤销授权。此时Allen、Alice、Tom都不再具备CreateTable, CreateFunction, CreateInstance, List权限。 --撤销ACL授权。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker; --撤销Policy授权。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
方式二:收回赋予用户的角色Worker。
--进入test_project_a项目。 use test_project_a; --收回赋予用户的角色Worker。此时仅Allen不具备CreateTable, CreateFunction, CreateInstance, List权限。 revoke Worker from RAM$Bob@aliyun.com:Allen;
通过角色为用户授予Download权限
通过Download授权机制为角色授权,然后将角色赋予用户。
更多为角色授权信息,请参见为角色授予Download权限。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。现需要为三个RAM用户授予下载指定表数据的权限。命令示例如下。
--Bob进入test_project_a项目。
use test_project_a;
--Bob将Allen、Alice、Tom添加至test_project_a项目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
grant download on table sale_detail to ROLE Worker;
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;
撤销通过角色为用户授予的Download权限
您可以通过如下方式撤销授权:
撤销授予角色的权限
原本被赋予角色的所有用户都不再具备角色相应的权限。
收回赋予用户的角色
只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户通过角色Worker授予下载所有表数据的权限。现需要撤销授予用户的下载权限,命令示例如下。
方式一:撤销授予角色Worker的权限。
--进入test_project_a项目。 use test_project_a; --为角色Worker撤销授权。此时Allen、Alice、Tom都不再具备Download权限。 revoke Download on table sale_detail from ROLE Worker;
方式二:收回赋予用户的角色Worker。
--进入test_project_a项目。 use test_project_a; --收回赋予用户的角色Worker。此时仅Allen不再具备Download权限。 revoke Worker from RAM$Bob@aliyun.com:Allen;
通过角色为用户授予访问相同高敏感等级数据的权限
通过Label授权机制或Policy授权机制为角色授权,然后将角色赋予多个用户。
更多为角色授权信息,请参见为角色授予访问高敏感等级数据的权限。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。三个RAM用户的许可访问标签等级为2,现需要授予访问项目中目标表的敏感等级为4的数据权限。命令示例如下。
--Bob进入test_project_a项目。
use test_project_a;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
grant Label 4 on table <table_name> to ROLE Worker; --table_name为目标表的表名称
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;
撤销通过角色为用户授予的访问相同高敏感等级数据的权限
您可以通过如下方式撤销授权:
撤销授予角色的权限
原本被赋予角色的所有用户都不再具备角色相应的权限。
收回赋予用户的角色
只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户授予访问项目中目标表的敏感等级为4的数据权限。现需要撤销用户的访问高敏感等级数据权限,命令示例如下。
方式一:撤销授予角色Worker的权限。
--进入test_project_a项目。 use test_project_a; --为角色Worker撤销授权。此时Allen、Alice、Tom仅能访问最高敏感等级为2的数据。 revoke Label on table <table_name> from ROLE Worker; --table_name为目标表的表名称
方式二:收回赋予用户的角色Worker。
--进入test_project_a项目。 use test_project_a; --收回赋予用户的角色Worker。此时Allen仅能访问最高敏感等级为2的数据,Alice、Tom仍然可以访问最高敏感等级为4的数据。 revoke Worker from RAM$Bob@aliyun.com:Allen;
直接为用户授权
MaxCompute支持直接为用户授权,常见的授权场景及语法示例如下。
将用户添加进MaxCompute项目,请参见用户规划与管理。
当用户被移除项目时,需要及时清理遗留权限信息,请参见彻底清除被删除用户遗留的权限信息
用户授权场景 | 授权方式 | 授权人 | 授权操作入口 |
为用户授予对象的操作权限 | 请参见权限一览表的支持的授权人列。 | ||
撤销为用户授予的对象的操作权限 | |||
为用户授予Download权限 | |||
撤销为用户授予的Download权限 | |||
为用户授予访问高敏感等级数据的权限 | |||
撤销为用户授予的访问高敏感等级数据的权限 |
为用户授予对象的操作权限
通过ACL授权机制为用户授予项目、表、资源、函数或实例的操作权限。
为用户授予项目的操作权限
命令格式
grant Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All on project <project_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
参数说明
参数名称
是否必填
说明
project_name
是
项目名称:您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签获取具体的MaxCompute项目名称。
user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
为用户授予表的操作权限
命令格式
grant Describe|Select|Alter|Update|Drop|ShowHistory|All on table <table_name> [(<column_list>)] to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
参数说明
参数名称
是否必填
说明
table_name
是
表名称:您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
为用户授予资源的操作权限
命令格式
grant Read|Write|Delete|All on resource <resource_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
参数说明
参数名称
是否必填
说明
resource_name
是
资源名称:您可以通过MaxCompute客户端执行
list resources;
命令获取资源名称。user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
为用户授予函数的操作权限
命令格式
grant Read|Write|Delete|Execute|All on function <function_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
参数说明
参数名称
是否必填
说明
function_name
是
函数名称:您可以通过MaxCompute客户端执行
list functions;
命令获取函数名称。user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
为用户授予实例的操作权限
命令格式
grant Read|Write|All on instance <instance_id> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
参数说明
参数名称
是否必填
说明
instance_id
是
实例ID:您可以通过MaxCompute客户端执行
show instances;
命令获取实例ID。user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
使用示例
假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。BI_Analyst是隶属于Bob@aliyun.com的RAM角色。Kate@aliyun.com是其他阿里云账号,待加入test_project_a项目。
示例一:为阿里云账号Kate授予在项目中创建表、函数、实例、查看项目所有类型的对象列表的权限。
--Bob进入test_project_a项目。 use test_project_a; --将Kate加入MaxCompute项目。 add user ALIYUN$Kate@aliyun.com; --Bob为Kate授权。 grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$Kate@aliyun.com;
示例二:为RAM用户Allen、RAM角色授予在项目中创建表、查看项目所有类型、读取表的元信息和表数据的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob将Allen添加至test_project_a项目。 add user RAM$Bob@aliyun.com:Allen; --Bob将RAM角色BI_Analyst添加至test_project_a项目。 add user `RAM$Bob@aliyun.com:role/BI_Analyst`; --Bob为RAM用户Allen授权。 grant CreateTable, List on project test_project_a to USER RAM$Bob@aliyun.com:Allen; grant Describe, Select on table sale_detail to USER RAM$Bob@aliyun.com:Allen; --Bob为RAM角色BI_Analyst授权。 grant CreateTable, List on project test_project_a to USER `RAM$Bob@aliyun.com:role/BI_Analyst`; grant Describe, Select on table sale_detail to USER `RAM$Bob@aliyun.com:role/BI_Analyst`;
示例三:为RAM用户Alice授予读取、更新资源的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob将Alice添加至test_project_a项目。 add user RAM$Bob@aliyun.com:Alice; --Bob为Alice授权。 grant Read, Write on resource udtf.jar to USER RAM$Bob@aliyun.com:Alice;
示例四:为RAM用户Tom授予读取、更新函数的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob将Tom添加至test_project_a项目。 add user RAM$Bob@aliyun.com:Tom; --Bob为Tom授权。 grant Read, Write on function udf_test to USER RAM$Bob@aliyun.com:Tom;
示例五:为RAM用户Tom授予实例的所有操作权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob将Tom添加至test_project_a项目。 add user RAM$Bob@aliyun.com:Tom; --Bob为Tom授权。 grant All on instance 202112300224**** to USER RAM$Bob@aliyun.com:Tom;
撤销为用户授予的对象的操作权限
撤销为用户授予的项目、表、资源、函数或实例的操作权限。
撤销为用户授予的项目的操作权限
命令格式
revoke Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All on project <project_name> from USER <user_name>;
参数说明
参数名称
是否必填
说明
project_name
是
项目名称:您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签获取具体的MaxCompute项目名称。
user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
撤销为用户授予的表的操作权限
命令格式
revoke Describe|Select|Alter|Update|Drop|ShowHistory|All on table <table_name> [(<column_list>)] from USER <user_name>;
参数说明
参数名称
是否必填
说明
table_name
是
表名称:您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
撤销为用户授予的资源的操作权限
命令格式
revoke Read|Write|Delete|All on resource <resource_name> from USER <user_name>;
参数说明
参数名称
是否必填
说明
resource_name
是
资源名称:您可以通过MaxCompute客户端执行
list resources;
命令获取资源名称。user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
撤销为用户授予的函数的操作权限
命令格式
revoke Read|Write|Delete|Execute|All on function <function_name> from USER <user_name>;
参数说明
参数名称
是否必填
说明
function_name
是
函数名称:您可以通过MaxCompute客户端执行
list functions;
命令获取函数名称。user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
撤销为用户授予的实例的操作权限
命令格式
revoke Read|Write|All on instance <instance_id> from USER <user_name>;
参数说明
参数名称
是否必填
说明
instance_id
是
实例ID:您可以通过MaxCompute客户端执行
show instances;
命令获取实例ID。user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。privilegeproperties
conditions
否
从请求消息来源及访问方式等维度进行权限控制。格式为
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,请参见Conditions。days
否
指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。
使用示例
撤销为用户Kate、Allen、Alice、Tom授予的对象的操作权限。命令示例如下。
示例一:撤销为Kate授予的在项目中创建表、函数、实例、查看项目所有类型的对象列表的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Kate撤销授权。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$Kate@aliyun.com;
示例二:撤销为RAM用户Allen授予的读取表的元信息和表数据的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Allen撤销授权。 revoke Describe, Select on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
示例三:撤销为RAM用户Alice授予的读取、更新资源的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Alice撤销授权。 revoke Read, Write on resource udtf.jar from USER RAM$Bob@aliyun.com:Alice;
示例四:撤销为RAM用户Tom授予的读取、更新函数的权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Tom撤销授权。 revoke Read, Write on function udf_test from USER RAM$Bob@aliyun.com:Tom;
示例五:撤销为RAM用户Tom授予的实例的所有操作权限。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Tom撤销授权。 revoke All on instance 202112300224**** from USER RAM$Bob@aliyun.com:Tom;
为用户授予Download权限
为用户授予下载表数据、资源、函数或实例的权限。
命令格式
grant Download on {Table|Resource|Function|Instance} <object_name> to USER <user_name>;
参数说明
参数名称
是否必填
说明
object_name
是
指定被授予的对象的名称。获取方式如下:
表名称:您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。资源名称:您可以通过MaxCompute客户端执行
list resources;
命令获取资源名称。函数名称:您可以通过MaxCompute客户端执行
list functions;
命令获取函数名称。实例名称:您可以通过MaxCompute客户端执行
show instances;
命令获取实例ID。
user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。使用示例
假设test_project_a项目开启了Download权限管控,需要为用户Allen授予下载指定表数据的权限。命令示例如下。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Allen授权。 grant Download on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
撤销为用户授予的Download权限
撤销为用户授予的下载表数据、资源、函数或实例的权限。
命令格式
revoke Download on {Table|Resource|Function|Instance} <object_name> from USER <user_name>;
参数说明
参数名称
是否必填
说明
object_name
是
指定待回收权限的对象的名称。获取方式如下:
表名称:您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。资源名称:您可以通过MaxCompute客户端执行
list resources;
命令获取资源名称。函数名称:您可以通过MaxCompute客户端执行
list functions;
命令获取函数名称。实例名称:您可以通过MaxCompute客户端执行
show instances;
命令获取实例ID。
user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。使用示例
撤销为用户Allen授予的下载指定表数据的权限。命令示例如下。
--Bob进入test_project_a项目。 use test_project_a; --Bob为Allen撤销授权。 revoke Download on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
为用户授予访问高敏感等级数据的权限
通过Label授权机制为用户授予访问高敏感等级数据的权限。
命令格式
grant Label <number> on table <table_name> [(<column_list>)] to USER <user_name> [with exp <days>];
参数说明
参数名称
是否必填
说明
number
是
指定用户或角色可访问的最高数据敏感等级。
取值范围为0~9,与数据敏感等级标签相对应。
table_name
是
指定目标表或视图的名称。
您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。column_list
否
当需要授予目标表或视图中指定列的访问权限时,需要配置该参数。单次授权可以指定多个列名,列名之间用英文逗号(,)分隔。
user_name
是
指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。days
否
指定权限过期时间,单位为天。取值范围为:0~263-1。不指定该参数时,默认过期时间为180天。
使用示例
假设test_project_a项目中,用户Allen的许可访问标签等级为2,现需要为用户授予访问sale_detail表中最高敏感等级为4的数据权限。命令示例如下。
--Bob进入test_project_a项目。 use test_project_a; --Bob为用户Allen授权。 grant Label 4 on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
撤销为用户授予的访问高敏感等级数据的权限
命令格式
revoke Label <number> on table <table_name> [(<column_list>)] from USER <user_name>;
参数说明
参数名称
是否必填
说明
number
是
指定用户或角色待回收访问权限的最高数据敏感等级。
取值范围为0~9,与数据敏感等级标签相对应。
table_name
是
指定待回收访问权限的目标表或视图的名称。
您可以通过MaxCompute客户端执行
show tables;
命令获取表或视图名称。column_list
否
当需要撤销目标表或视图中指定列的访问权限时,需要配置该参数。单次授权可以指定多个列名,列名之间用英文逗号(,)分隔。
user_name
是
指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:
阿里云账号:ALIYUN$<account_name>
RAM用户:RAM$[<account_name>:]<RAM用户名称>
RAM角色:`RAM$<account_name>:role/<RAM角色名称>`
您可以通过MaxCompute客户端执行
list users;
命令查看用户信息。使用示例
撤销为用户Allen授予的访问sale_detail表中最高敏感等级为4的数据权限。命令示例如下。
--Bob进入test_project_a项目。 use test_project_a; --Bob为用户Allen撤销授权。 revoke Label 4 on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
彻底清除被删除用户遗留的权限信息
用户被移出项目后,ACL、Policy、Label等权限数据还留存在项目中。当移出的用户又再次进入该项目时,将会拥有原来的ACL、Policy、Label等权限,即用户如果被误删,被重新加回项目时可以直接使用原先保留的权限。但是,如果用户以不同的身份被加回原项目时,会有潜在的数据安全风险。
基于如上背景,MaxCompute提供清空用户权限的功能,如果用户已经不在项目中,但有ACL、Policy、Label等权限的,项目所有者或拥有Admin、Super_Administrator角色的用户可以执行如下命令清除遗留的权限信息。
命令格式
purge privs from user <user_name>;
参数说明
参数名称
是否必填
说明
user_name
是
指定待清除遗留权限信息的已移出MaxCompute项目的用户名称,格式如下:
如果未将用户移出项目,执行该命令会返回"Principal <username> still exist in the project"
报错。因此需要先使用remove user <user_name>
命令将用户移出项目。
后续指引
完成用户授权后,您可以查询用户授权信息,请参见查询用户权限信息。