在MaxCompute專案中添加使用者後,需要給該使用者授權,只有使用者獲得相應的許可權後,才能在專案內執行操作。MaxCompute支援通過角色為使用者授權,也支援直接為使用者授權。本文為您介紹使用者授權命令文法並提供樣本供參考。
通過繫結項目級角色為使用者授權
MaxCompute推薦將專案層級自訂的角色或內建管理角色賦予使用者,使使用者具備與角色一樣的許可權,方便批量使用者的許可權變更與回收。
將使用者添加進MaxCompute專案,請參見使用者規劃與管理。
當使用者被移除專案時,需要及時清理遺留許可權資訊,請參見徹底清除被刪除使用者遺留的許可權資訊
將MaxCompute專案級角色賦予使用者
將專案層級的內建角色或自訂角色綁定至使用者,使用者會同時具備角色相應的許可權。
命令格式
grant <role_name> to <user_name>;
注意事項
多個使用者可以同時存在於一個專案級角色下,一個使用者也可以隸屬於多重專案級角色。
參數說明
參數名稱
是否必填
說明
role_name
是
指定待賦予使用者的角色名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令查看角色資訊。user_name
是
指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。使用樣本
將專案級角色Worker綁定至已添加到MaxCompute專案的阿里雲使用者ALIYUN$5527xxxxxxxx5788、RAM使用者RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649及RAM角色RAM$5527xxxxxxxx5788:role/ram_role。
--進入test_project_a專案。 use test_project_a; --將角色賦予阿里雲帳號。 grant Worker to ALIYUN$5527xxxxxxxx5788; --將角色賦予RAM使用者。 grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; --將角色賦予RAM角色。 grant Worker to `RAM$5527xxxxxxxx5788:role/ram_role`;
收回賦予使用者的MaxCompute專案級角色
解除綁定賦予使用者的角色,使用者將不再具備角色相應的許可權。
命令格式
revoke <role_name> from <user_name>;
參數說明
參數名稱
是否必填
說明
role_name
是
指定待收回的角色名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令擷取角色名稱。user_name
是
指定待收回角色相應的使用者名稱稱,格式如下:
阿里雲帳號:ALIYUN$<account_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令擷取使用者名稱稱。使用樣本
收回賦予使用者ALIYUN$5527xxxxxxxx5788及
RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649
及RAM$5527xxxxxxxx5788:role/ram_role的角色Worker。--進入test_project_a專案。 use test_project_a; --收回賦予阿里雲帳號的角色。 revoke Worker from ALIYUN$5527xxxxxxxx5788; --收回賦予RAM使用者的角色。 revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; --收回賦予RAM角色的角色。 revoke Worker from `RAM$5527xxxxxxxx5788:role/ram_role`;
常見的授權情境及文法樣本
使用者授權情境 | 授權方式 | 授權人 | 授權操作入口 |
通過角色為使用者授予對象的操作許可權 | 先通過ACL許可權控制或Policy許可權控制為角色授權,再將角色賦予使用者。 | 請參見許可權一覽表的支援的授權人列。 | |
撤銷通過角色為使用者授予的對象的操作許可權 | |||
通過角色為使用者授予Download許可權 | 先通過Download許可權控制為角色授權,再將角色賦予使用者。 | ||
撤銷通過角色為使用者授予的Download許可權 | |||
通過角色為使用者授予訪問相同高敏感等級資料的許可權 | 先通過Label許可權控制為角色授權,再將角色賦予使用者。 | ||
撤銷通過角色為使用者授予的訪問相同高敏感等級資料的許可權 |
通過角色為使用者授予對象的操作許可權
通過ACL授權機制或Policy授權機製為角色授權,然後將角色賦予多個使用者。
更多為角色授權資訊,請參見為角色授予對象的操作許可權。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。現需要為三個RAM使用者授予建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。命令樣本如下。
--進入test_project_a專案。
use test_project_a;
--將Allen、Alice、Tom添加至test_project_a專案。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
--建立角色Worker。
create role Worker;
--為角色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$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
撤銷通過角色為使用者授予的對象的操作許可權
您可以通過如下方式撤銷授權:
撤銷授予角色的許可權
原本被賦予角色的所有使用者都不再具備角色相應的許可權。
收回賦予使用者的角色
只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的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$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
通過角色為使用者授予Download許可權
通過Download授權機製為角色授權,然後將角色賦予使用者。
更多為角色授權資訊,請參見為角色授予Download許可權。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。現需要為三個RAM使用者授予下載指定表資料的許可權。命令樣本如下。
--Bob進入test_project_a專案。
use test_project_a;
--Bob將Allen、Alice、Tom添加至test_project_a專案。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
--Bob建立角色Worker。
create role Worker;
--Bob為角色Worker授權。
grant download on table sale_detail to ROLE Worker;
--將角色Worker賦予使用者。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
撤銷通過角色為使用者授予的Download許可權
您可以通過如下方式撤銷授權:
撤銷授予角色的許可權
原本被賦予角色的所有使用者都不再具備角色相應的許可權。
收回賦予使用者的角色
只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的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$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
通過角色為使用者授予訪問相同高敏感等級資料的許可權
通過Label授權機制或Policy授權機製為角色授權,然後將角色賦予多個使用者。
更多為角色授權資訊,請參見為角色授予訪問高敏感等級資料的許可權。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。三個RAM使用者的許可訪問標籤等級為2,現需要授予訪問專案中目標表的敏感等級為4的資料許可權。命令樣本如下。
--進入test_project_a專案。
use test_project_a;
--建立角色Worker。
create role Worker;
--為角色Worker授權。
grant Label 4 on table <table_name> to ROLE Worker; --table_name為目標表的表名稱
--將角色Worker賦予使用者。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
撤銷通過角色為使用者授予的訪問相同高敏感等級資料的許可權
您可以通過如下方式撤銷授權:
撤銷授予角色的許可權
原本被賦予角色的所有使用者都不再具備角色相應的許可權。
收回賦予使用者的角色
只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的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$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
直接為使用者授權
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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。privilegeproperties
conditions
否
從請求訊息來源及訪問方式等維度進行許可權控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支援的var_name及Operation列表,請參見Conditions。days
否
指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。
使用樣本
假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。RAM$5527xxxxxxxx5789:role/ram_role是隸屬於ALIYUN$5527xxxxxxxx5789的RAM角色。ALIYUN$5527xxxxxxxx5788是其他阿里雲帳號,待加入test_project_a專案。
樣本一:為阿里雲帳號Kate授予在專案中建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。
--ALIYUN$5527xxxxxxxx5789進入test_project_a專案。 use test_project_a; --將ALIYUN$5527xxxxxxxx5788加入MaxCompute專案。 add user ALIYUN$5527xxxxxxxx5788; --ALIYUN$5527xxxxxxxx5789為ALIYUN$5527xxxxxxxx5788授權。 grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$5527xxxxxxxx5788;
樣本二:為RAM使用者Allen、RAM角色授予在專案中建立表、查看專案所有類型、讀取表的元資訊和表資料的許可權。
--進入test_project_a專案。 use test_project_a; --將Allen添加至test_project_a專案。 add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649; --將RAM角色添加至test_project_a專案。 add user `RAM$5527xxxxxxxx5789:role/ram_role`; --為RAM使用者Allen授權。 grant CreateTable, List on project test_project_a to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649; grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649; --為RAM角色授權。 grant CreateTable, List on project test_project_a to USER `RAM$5527xxxxxxxx5789:role/ram_role`; grant Describe, Select on table sale_detail to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
樣本三:為RAM使用者Alice授予讀取、更新資源的許可權。
--進入test_project_a專案。 use test_project_a; --將Alice添加至test_project_a專案。 add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650; --為Alice授權。 grant Read, Write on resource udtf.jar to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
樣本四:為RAM使用者Tom授予讀取、更新函數的許可權。
--進入test_project_a專案。 use test_project_a; --將Tom添加至test_project_a專案。 add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651; --為Tom授權。 grant Read, Write on function udf_test to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
樣本五:為RAM使用者Tom授予執行個體的所有操作許可權。
--進入test_project_a專案。 use test_project_a; --將Tom添加至test_project_a專案。 add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651; --為Tom授權。 grant All on instance 202112300224**** to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
撤銷為使用者授予的對象的操作許可權
撤銷為使用者授予的專案、表、資源、函數或執行個體的操作許可權。
撤銷為使用者授予的專案的操作許可權
命令格式
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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>: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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。privilegeproperties
conditions
否
從請求訊息來源及訪問方式等維度進行許可權控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支援的var_name及Operation列表,請參見Conditions。days
否
指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。
使用樣本
撤銷為阿里雲使用者、RAM使用者授予的對象的操作許可權。命令樣本如下。
樣本一:撤銷為Kate授予的在專案中建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。
--進入test_project_a專案。 use test_project_a; --為阿里雲使用者撤銷授權。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$5527xxxxxxxx5788;
樣本二:撤銷為RAM使用者Allen授予的讀取表的元資訊和表資料的許可權。
--進入test_project_a專案。 use test_project_a; --為Allen撤銷授權。 revoke Describe, Select on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
樣本三:撤銷為RAM使用者Alice授予的讀取、更新資源的許可權。
--進入test_project_a專案。 use test_project_a; --為Alice撤銷授權。 revoke Read, Write on resource udtf.jar from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
樣本四:撤銷為RAM使用者Tom授予的讀取、更新函數的許可權。
--進入test_project_a專案。 use test_project_a; --為Tom撤銷授權。 revoke Read, Write on function udf_test from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
樣本五:撤銷為RAM使用者Tom授予的執行個體的所有操作許可權。
--進入test_project_a專案。 use test_project_a; --為Tom撤銷授權。 revoke All on instance 202112300224**** from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
為使用者授予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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。使用樣本
假設test_project_a專案開啟了Download許可權管控,需要為使用者Allen授予下載指定表資料的許可權。命令樣本如下。
--進入test_project_a專案。 use test_project_a; --為Allen授權。 grant Download on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
撤銷為使用者授予的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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。使用樣本
撤銷為使用者Allen授予的下載指定表資料的許可權。命令樣本如下。
--進入test_project_a專案。 use test_project_a; --為Allen撤銷授權。 revoke Download on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
為使用者授予訪問高敏感等級資料的許可權
通過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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。days
否
指定許可權到期時間,單位為天。取值範圍為:0~263-1。不指定該參數時,預設到期時間為180天。
使用樣本
假設test_project_a專案中,使用者Allen的許可訪問標籤等級為2,現需要為使用者授予訪問sale_detail表中最高敏感等級為4的資料許可權。命令樣本如下。
--進入test_project_a專案。 use test_project_a; --為使用者Allen授權。 grant Label 4 on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
撤銷為使用者授予的訪問高敏感等級資料的許可權
命令格式
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_id>
RAM使用者:RAM$<account_id>:<RAM使用者UID>
RAM角色:`RAM$<account_id>:role/<RAM角色名稱>`
您可以通過MaxCompute用戶端執行
list users;
命令查看使用者資訊。使用樣本
撤銷為使用者Allen授予的訪問sale_detail表中最高敏感等級為4的資料許可權。命令樣本如下。
--進入test_project_a專案。 use test_project_a; --為使用者Allen撤銷授權。 revoke Label 4 on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
徹底清除被刪除使用者遺留的許可權資訊
使用者被移出專案後,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>
命令將使用者移出專案。
後續指引
完成使用者授權後,您可以查詢使用者授權資訊,請參見查詢使用者權限資訊。