在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>
命令將用戶移出項目。
后續指引
完成用戶授權后,您可以查詢用戶授權信息,請參見查詢用戶權限信息。