MaxCompute支援通過SQL語句查詢使用者、角色、對象等的許可權資訊。本文為您介紹SQL許可權查詢文法並提供樣本供參考。
基於MaxCompute提供的授權方案為使用者或角色授權後,您可以查詢如下許可權資訊。
查詢情境 | 查詢操作 | 操作人角色 | 操作入口 |
查詢角色的許可權資訊 | |||
專案的所有者(Project Owner)、具備Super_Administrator或Admin角色的使用者 | |||
查詢使用者的許可權資訊 | |||
查詢對象的ACL授權資訊 | |||
查詢Label授權資訊 | |||
查詢Package授權資訊 | |||
查看使用者權限或角色許可權資訊時,MaxCompute會在返回資訊中使用如下標記字元:
A:表示Allow,即允許的操作許可權。
D:表示Deny,即拒絕的操作許可權。
C:表示With Condition,即帶條件的授權。
G:表示With Grant Option,即可以對客體(Object)進行授權。
查詢指定角色的許可權
命令格式
show grants for role <role_name>;
參數說明
參數名稱
是否必填
說明
role_name
是
指定待查詢許可權的角色名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令擷取角色名稱。返回資訊
查詢結果會返回ACL、Policy、Download許可權資訊。
使用樣本
假設專案名為test_project_a,Worker為專案中的角色,命令樣本如下。
show grants for role Worker;
返回結果如下。
Authorization Type: ACL [role/Worker] A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List A projects/test_project_a/tables/bank_data: Download | Describe | Select Expires:20xx-xx-xxTxx:xx:xx+xxxx Authorization Type: Policy [role/Worker] A projects/test_project_a/tables/bak*: Download A projects/test_project_a/tables/sale_detail: Update A projects/test_project_a/tables/tb_*: Download | Drop A projects/test_project_a/tables/view_1: Drop
查詢指定角色的許可權及綁定的使用者資訊
命令格式
describe role <role_name>;
參數說明
參數名稱
是否必填
說明
role_name
是
指定待查詢許可權的角色名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令擷取角色名稱。返回資訊
查詢結果會返回ACL、Policy、Download許可權資訊。
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Worker為專案中的角色,命令樣本如下。
describe role Worker;
返回結果如下。
[users] RAM$Bob@aliyun.com:Allen Authorization Type: ACL A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List A projects/test_project_a/tables/bank_data: Download Authorization Type: Policy A projects/test_project_a/tables/bak*: Download A projects/test_project_a/tables/sale_detail: Update A projects/test_project_a/tables/tb_*: Download | Drop A projects/test_project_a/tables/view_1: Drop
查詢目前使用者的許可權及綁定的角色資訊
命令格式
show grants;
返回資訊
查詢結果會返回如下資訊:
專案所有者:帳號資訊、專案列表資訊。
其他使用者:綁定的角色資訊、ACL、Policy及Download許可權資訊。
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。
假設當前專案的訪問者為Bob,執行
show grants;
命令,返回結果如下。[ALIYUN$Bob@aliyun.com] projects/test_project_a: Project Owner
假設當前專案的訪問者為Allen,執行
show grants;
命令,返回結果如下。[roles] worker Authorization Type: ACL [user/RAM$Bob@aliyun.com:Allen] A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List A projects/test_project_a/packages/project_test_b.datashare: Read Authorization Type: Policy [role/worker] A projects/test_project_a/tables/tb_*: Drop | Download
查詢指定使用者的許可權資訊和綁定的角色資訊
命令格式
show grants for <user_name>;
參數說明
參數名稱
是否必填
說明
user_name
是
指定待查詢許可權的使用者名稱稱。
您可以通過MaxCompute用戶端執行
list users;
命令擷取使用者名稱稱。返回資訊
查詢結果會返回如下資訊:
專案所有者:帳號資訊、專案列表資訊。
其他使用者:綁定的角色資訊、ACL、Policy及Download許可權資訊。
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。
查詢Bob的許可權資訊,命令樣本如下。
show grants for ALIYUN$Bob@aliyun.com;
返回結果如下。
[ALIYUN$Bob@aliyun.com] projects/test_project_a: Project Owner
查詢Allen的許可權資訊,命令樣本如下。
show grants for RAM$Bob@aliyun.com:Allen;
返回結果如下。
[roles] worker Authorization Type: ACL [user/RAM$Bob@aliyun.com:Allen] A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List A projects/test_project_a/packages/project_test_b.datashare: Read Authorization Type: Policy [role/worker] A projects/test_project_a/tables/tb_*: Drop | Download
查詢指定對象的ACL授權資訊
命令格式
show acl for <object_name> [on type <object_type>];
參數說明
參數名稱
是否必填
說明
object_name
是
指定待查詢對象的名稱。
專案名稱:您可以登入MaxCompute控制台,左上方切換地區後,即可在專案管理頁簽擷取具體的MaxCompute專案名稱。查詢類型為Project時,只能查詢當前Project的資訊。
表名稱:您可以通過MaxCompute用戶端執行
show tables;
命令擷取表或視圖名稱。資源名稱:您可以通過MaxCompute用戶端執行
list resources;
命令擷取資源名稱。函數名稱:您可以通過MaxCompute用戶端執行
list functions;
命令擷取函數名稱。執行個體名稱:您可以通過MaxCompute用戶端執行
show instances;
命令擷取執行個體ID。
object_type
否
指定待查詢對象的類型。
取值如下:
Project:專案
Table:表
Resource:資源檔
Function:函數
Instance:執行個體
未配置
on type <object_type>
時,預設的物件類型為Table。返回資訊
查詢結果會返回具備對象操作許可權的專案角色及使用者資訊、ACL許可權資訊。
使用樣本
查看test_project_a專案中的對象授權資訊。
查詢專案的許可權資訊,命令樣本如下。
show acl for test_project_a on type project;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A role/worker(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction | List A role/worker1(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction | List A role/worker2(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction
查詢表的許可權資訊,命令樣本如下。
show acl for sale_detail on type table;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All AG object_creator/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/tables/sale_detail/customer_id): Describe | Select A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/tables/sale_detail/shop_name): Describe | Select
查詢資源的許可權資訊,命令樣本如下。
show acl for udtf.jar on type resource;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All AG object_creator/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/resources/udtf.jar): Read | Write
查詢函數的許可權資訊,命令樣本如下。
show acl for UDTFResource on type function;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All AG object_creator/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A role/worker1(acs:odps:*:projects/test_project_a/registration/functions/udtfresource): Download A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/registration/functions/udtfresource): All
查詢執行個體的許可權資訊,命令樣本如下。
show acl for 20220105031923461ghu**** on type instance;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All AG object_creator/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/instances/20220105031923461ghu****): All
查詢目前使用者可訪問的所有高敏感等級資料表
命令格式
show label grants;
返回資訊
查詢結果會返回如下資訊:
目前使用者的訪問許可等級(User Label)
可訪問的高敏感等級資料表(TableName)
使用者可訪問的敏感性資料層級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。
假設當前專案的訪問者為Bob,執行
show label grants;
命令,返回結果如下。User Label: 0 +--------------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +--------------+--------------+--------------------------+ | bank_data | 3 | 2022-07-04T16:30:47+0800 | +--------------+--------------+--------------------------+ | bank_data_pt | 4 | 2022-07-04T16:36:04+0800 | +--------------+--------------+--------------------------+
假設當前專案的訪問者為Allen,執行
show label grants;
命令,返回結果如下。User Label: 1 +-------------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | sale_detail | 2 | 2022-01-09T11:43:27+0800 | +-------------+--------------+--------------------------+
查詢目前使用者可訪問的指定等級的高敏感性資料表
命令格式
show label <level> grants;
參數資訊
參數名稱
是否必填
說明
level
是
指定敏感等級。
返回資訊
查詢結果會返回如下資訊:
目前使用者的訪問許可等級(User Label)
可訪問的高敏感等級資料表(TableName)
使用者可訪問的敏感性資料層級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。
假設當前專案的訪問者為Bob,執行命令如下。
show label 3 grants;
返回結果如下。
User Label: 0 +--------------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +--------------+--------------+--------------------------+ | bank_data | 3 | 2022-07-04T16:30:47+0800 | +--------------+--------------+--------------------------+
假設當前專案的訪問者為Allen,執行命令如下。
show label 2 grants;
返回結果如下。
User Label: 1 +-------------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | sale_detail | 2 | 2022-01-09T11:43:27+0800 | +-------------+--------------+--------------------------+
查詢指定使用者可訪問的高敏感等級資料表
命令格式
show label grants for user <user_name>;
參數說明
參數名稱
是否必填
說明
user_name
是
指定待查詢許可權的使用者名稱稱。
您可以通過MaxCompute用戶端執行
list users;
命令擷取使用者名稱稱。返回資訊
查詢結果會返回如下資訊:
目前使用者的訪問許可等級(User Label)
可訪問的高敏感等級資料表(TableName)
使用者可訪問的敏感性資料層級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。查詢Allen可訪問的高敏感等級資料表,命令樣本如下。
show label grants for user RAM$Bob@aliyun.com:Allen;
返回結果如下。
User Label: 2 +-----------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +-----------+--------------+--------------------------+ | bank_data | 3 | 2022-07-04T16:29:32+0800 | +-----------+--------------+--------------------------+
查詢指定使用者可訪問的指定等級的高敏感性資料表
命令格式
show label <level> grants for user <user_name>;
參數說明
參數名稱
是否必填
說明
level
是
指定敏感等級。
user_name
是
指定待查詢許可權的使用者名稱稱。
您可以通過MaxCompute用戶端執行
list users;
命令擷取使用者名稱稱。返回資訊
查詢結果會返回如下資訊:
目前使用者的訪問許可等級(User Label)
可訪問的高敏感等級資料表(TableName)
使用者可訪問的敏感性資料層級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
假設Bob@aliyun.com為test_project_a的專案所有者,Allen為隸屬於test_project_a的RAM使用者,已經被添加到test_project_a中。查詢Allen可訪問的高敏感等級資料表,命令樣本如下。
show label 3 grants for user RAM$Bob@aliyun.com:Allen;
返回結果如下。
User Label: 2 +-----------+--------------+--------------------------+ | TableName | GrantedLabel | Expires | +-----------+--------------+--------------------------+ | bank_data | 3 | 2022-07-04T16:29:32+0800 | +-----------+--------------+--------------------------+
查詢可以訪問指定敏感性資料表的使用者
命令格式
show label grants on table <table_name>;
參數說明
參數名稱
是否必填
說明
table_name
是
指定表的名稱。
您可以通過MaxCompute用戶端執行
show tables;
命令擷取表名稱。返回資訊
查詢結果會返回如下資訊:
當前表的敏感性資料等級範圍(Sensitive Label Range)
可訪問的使用者或角色(UserName)
使用者可訪問的敏感等級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
查詢專案test_project_a中可訪問高敏感性資料表sale_detail的使用者列表,命令樣本如下。
show label grants on table sale_detail;
返回結果如下。
Sensitive Label Range: [3, 4] +-------------------------------------------------+--------------+--------------------------+ | UserName | GrantedLabel | Expires | +-------------------------------------------------+--------------+--------------------------+ | worker | 4 | 2022-07-04T11:23:35+0800 | +-------------------------------------------------+--------------+--------------------------+ | RAM$Bob@aliyun.com:Allen | 4 | 2022-07-04T17:54:00+0800 | +-------------------------------------------------+--------------+--------------------------+
查詢可以訪問指定敏感性資料表的指定等級的使用者
命令格式
show label <level> grants on table <table_name>;
參數說明
參數名稱
是否必填
說明
level
是
指定敏感等級。
table_name
是
指定表的名稱。
您可以通過MaxCompute用戶端執行
show tables;
命令擷取表名稱。返回資訊
查詢結果會返回如下資訊:
當前表的敏感性資料等級範圍(Sensitive Label Range)
可訪問的使用者或角色(UserName)
使用者可訪問的敏感等級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
查詢專案test_project_a中可訪問高敏感性資料表sale_detail的使用者列表,命令樣本如下。
show label 4 grants on table sale_detail;
返回結果如下。
Sensitive Label Range: [3, 4] +-------------------------------------------------+--------------+--------------------------+ | UserName | GrantedLabel | Expires | +-------------------------------------------------+--------------+--------------------------+ | worker | 4 | 2022-07-04T11:23:35+0800 | +-------------------------------------------------+--------------+--------------------------+ | RAM$Bob@aliyun.com:Allen | 4 | 2022-07-04T17:54:00+0800 | +-------------------------------------------------+--------------+--------------------------+
查詢指定使用者在指定敏感性資料表中的許可權
命令格式
show label [<label>] grants on table <table_name> for user <user_name>;
參數說明
參數名稱
是否必填
說明
label
否
指定敏感等級。
table_name
是
指定表的名稱。
您可以通過MaxCompute用戶端執行
show tables;
命令擷取表名稱。user_name
是
指定待查詢許可權的使用者名稱稱。
您可以通過MaxCompute用戶端執行
list users;
命令擷取使用者名稱稱。返回資訊
查詢結果會返回如下資訊:
目前使用者的訪問許可等級標籤(User Label)
使用者可訪問的表的列(Column)
使用者可訪問的敏感等級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
查詢專案test_project_a中Allen可訪問sale_detail的資料,命令樣本如下。
show label grants on table sale_detail for user RAM$Bob@aliyun.com:Allen;
返回結果如下。
User Label: 2 +-------------+--------------+--------------------------+ | Column | GrantedLabel | Expires | +-------------+--------------+--------------------------+ | customer_id | 4 | 2022-07-04T17:54:00+0800 | +-------------+--------------+--------------------------+ | shop_name | 4 | 2022-07-04T17:54:00+0800 | +-------------+--------------+--------------------------+ | total_price | 4 | 2022-07-04T17:54:00+0800 | +-------------+--------------+--------------------------+
查詢指定表中所有列的敏感等級
命令格式
describe <table_name>;
參數說明
參數名稱
是否必填
說明
table_name
是
指定表的名稱。
您可以通過MaxCompute用戶端執行
show tables;
命令擷取表名稱。返回資訊
查詢結果會包含當前表的敏感等級(TableLabel)、表的列最高敏感等級(MaxLabel)、各列的敏感等級(Label)。
使用樣本
查詢專案test_project_a中表sale_detail及其列的敏感等級,命令樣本如下。
describe sale_detail;
返回結果如下。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$Bob@aliyun.com | Project: project_test_a | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2021-12-13 11:27:04 | | LastDDLTime: 2021-12-13 11:27:04 | | LastModifiedTime: 2021-12-13 11:27:26 | +------------------------------------------------------------------------------------+ | TableLabel: 3 | | MaxLabel: L4 | +------------------------------------------------------------------------------------+ | InternalTable: YES | Size: 784 | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | shop_name | string | 4 | | | customer_id | string | 4 | | | total_price | double | 3 | | +------------------------------------------------------------------------------------+ | Partition Columns: | +------------------------------------------------------------------------------------+ | sale_date | string | | | region | string | | +------------------------------------------------------------------------------------+
查詢指定Package的授權資訊
命令格式
show acl for <project_name>.<package_name> on type package;
參數說明
參數名稱
是否必填
說明
project_name
是
指定待查詢Package所屬專案名稱。
您可以通過MaxCompute用戶端執行
describe package <package_name>;
命令查詢Package所屬專案名稱。package_name
是
指定待查詢Package的名稱。
您可以通過MaxCompute用戶端執行
show packages;
命令查詢Package名稱。返回資訊
查詢結果會返回具備對象操作許可權的專案內建角色及帳號資訊、ACL許可權資訊。
使用樣本
查看test_project_b專案中安裝的datashare Package的授權資訊。命令樣本如下。
show acl for test_project_b.datashare on type package;
返回結果如下。
Authorization Type: Implicit AG project_owner/ALIYUN$Bob@aliyun.com: All AG admin/ALIYUN$Bob@aliyun.com: All Authorization Type: ACL A user/RAM$Amy@aliyun.com:Bella(acs:odps:*:projects/test_project_b/packages/test_project_a.datashare): Read
查詢指定Package內資源的授權資訊
命令格式
show grants on <object_type> <object_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package _name>");
參數說明
參數名稱
是否必填
說明
object_type
是
指定待查詢Package內的資源類型。
您可以通過MaxCompute用戶端執行
describe package <project_name>.<package_name>;
命令查詢Package內的資源類型。object_name
是
指定待查詢資源的名稱。
您可以通過MaxCompute用戶端執行
describe package <project_name>.<package_name>;
命令查詢Package內的資源名稱。project_name
是
指定待查詢Package所屬專案名稱。
您可以通過MaxCompute用戶端執行
describe package <project_name>.<package_name>;
命令查詢Package所屬專案名稱。package_name
是
指定待查詢Package的名稱。
您可以通過MaxCompute用戶端執行
show packages;
命令查詢Package名稱。返回資訊
查詢結果會返回具備對象操作許可權的專案內建角色及使用者、ACL許可權資訊。
使用樣本
查看安裝的datashare Package中表sale_detail的授權資訊。命令樣本如下。
show grants on Table sale_detail privilegeproperties ("refobject"="true", "refproject"="test_project_a", "package"="datashare");
返回結果如下。
Authorization Type: Implicit AG project_owner/: All Authorization Type: InstalledObjecACL [datashare] A user/RAM$Amy@aliyun.com:Bella(acs:odps:*:projects/test_project_a/tables/sale_detail): Select
查詢指定Package內表的Label授權資訊
命令格式
show label grants on table <table_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
參數說明
參數名稱
是否必填
說明
table_name
是
指定待查詢Package內的表名稱。
您可以通過MaxCompute用戶端執行
describe package <project_name>.<package_name>;
命令查詢Package內的表名稱。project_name
是
指定待查詢Package所屬專案名稱。
您可以通過MaxCompute用戶端執行
describe package <package_name>;
命令查詢Package所屬專案名稱。package_name
是
指定待查詢Package的名稱。
您可以通過MaxCompute用戶端執行
show packages;
命令查詢Package名稱。返回資訊
查詢結果會返回如下資訊:
當前表的敏感性資料等級範圍(Sensitive Label Range)
可訪問的使用者或角色(UserName)
使用者可訪問的敏感等級(GrantedLabel)
許可權到期時間(Expires)
使用樣本
查看安裝的datashare Package中表sale_detail的Label授權資訊。命令樣本如下。
show label grants on table sale_detail privilegeproperties ("refobject"="true", "refproject"="test_project_a", "package"="datashare");
返回結果如下。
Sensitive Label Range: [2, 4] +-------------------------------------------------+--------------+--------------------------+ | UserName | GrantedLabel | Expires | +-------------------------------------------------+--------------+--------------------------+ | RAM$Amy@aliyun.com:Bella | 3 | 2022-07-12T22:24:24+0800 | +-------------------------------------------------+--------------+--------------------------+