通過命令管理用戶權(quán)限
在MaxCompute項(xiàng)目中添加用戶后,需要給該用戶授權(quán),只有用戶獲得相應(yīng)的權(quán)限后,才能在項(xiàng)目?jī)?nèi)執(zhí)行操作。MaxCompute支持通過角色為用戶授權(quán),也支持直接為用戶授權(quán)。本文為您介紹用戶授權(quán)命令語(yǔ)法并提供示例供參考。
通過綁定項(xiàng)目級(jí)角色為用戶授權(quán)
MaxCompute推薦將項(xiàng)目級(jí)別自定義的角色或內(nèi)置管理角色賦予用戶,使用戶具備與角色一樣的權(quán)限,方便批量用戶的權(quán)限變更與回收。
將用戶添加進(jìn)MaxCompute項(xiàng)目,請(qǐng)參見用戶規(guī)劃與管理。
當(dāng)用戶被移除項(xiàng)目時(shí),需要及時(shí)清理遺留權(quán)限信息,請(qǐng)參見徹底清除被刪除用戶遺留的權(quán)限信息
將MaxCompute項(xiàng)目級(jí)角色賦予用戶
將項(xiàng)目級(jí)別的內(nèi)置角色或自定義角色綁定至用戶,用戶會(huì)同時(shí)具備角色相應(yīng)的權(quán)限。
命令格式
grant <role_name> to <user_name>;
注意事項(xiàng)
多個(gè)用戶可以同時(shí)存在于一個(gè)項(xiàng)目級(jí)角色下,一個(gè)用戶也可以隸屬于多個(gè)項(xiàng)目級(jí)角色。
參數(shù)說明
參數(shù)名稱
是否必填
說明
role_name
是
指定待賦予用戶的角色名稱。
您可以通過MaxCompute客戶端執(zhí)行
list roles;
命令查看角色信息。user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。使用示例
將項(xiàng)目級(jí)角色Worker綁定至已添加到MaxCompute項(xiàng)目的阿里云用戶Kate@aliyun.com、RAM用戶RAM$Bob@aliyun.com:Allen及RAM角色RAM$Bob@aliyun.com:role/ram_role。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob將角色賦予阿里云賬號(hào)。 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項(xiàng)目級(jí)角色
解綁賦予用戶的角色,用戶將不再具備角色相應(yīng)的權(quán)限。
命令格式
revoke <role_name> from <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
role_name
是
指定待收回的角色名稱。
您可以通過MaxCompute客戶端執(zhí)行
list roles;
命令獲取角色名稱。user_name
是
指定待收回角色相應(yīng)的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令獲取用戶名稱。使用示例
收回賦予用戶Kate@aliyun.com及RAM$Bob@aliyun.com:Allen及RAM$Bob@aliyun.com:role/ram_roleR的角色Worker。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob收回賦予阿里云賬號(hào)的角色。 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`;
常見的授權(quán)場(chǎng)景及語(yǔ)法示例
用戶授權(quán)場(chǎng)景 | 授權(quán)方式 | 授權(quán)人 | 授權(quán)操作入口 |
通過角色為用戶授予對(duì)象的操作權(quán)限 | 先通過ACL權(quán)限控制或Policy權(quán)限控制為角色授權(quán),再將角色賦予用戶。 | 請(qǐng)參見權(quán)限一覽表的支持的授權(quán)人列。 | |
撤銷通過角色為用戶授予的對(duì)象的操作權(quán)限 | |||
通過角色為用戶授予Download權(quán)限 | 先通過Download權(quán)限控制為角色授權(quán),再將角色賦予用戶。 | ||
撤銷通過角色為用戶授予的Download權(quán)限 | |||
通過角色為用戶授予訪問相同高敏感等級(jí)數(shù)據(jù)的權(quán)限 | 先通過Label權(quán)限控制為角色授權(quán),再將角色賦予用戶。 | ||
撤銷通過角色為用戶授予的訪問相同高敏感等級(jí)數(shù)據(jù)的權(quán)限 |
通過角色為用戶授予對(duì)象的操作權(quán)限
通過ACL授權(quán)機(jī)制或Policy授權(quán)機(jī)制為角色授權(quán),然后將角色賦予多個(gè)用戶。
更多為角色授權(quán)信息,請(qǐng)參見為角色授予對(duì)象的操作權(quán)限。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。現(xiàn)需要為三個(gè)RAM用戶授予創(chuàng)建表、函數(shù)、實(shí)例、查看項(xiàng)目所有類型的對(duì)象列表的權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。
use test_project_a;
--Bob將Allen、Alice、Tom添加至test_project_a項(xiàng)目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob創(chuàng)建角色Worker。
create role Worker;
--Bob為角色Worker授權(quán)。
--方式一:ACL授權(quán)。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
--方式二:Policy授權(quán)。
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;
撤銷通過角色為用戶授予的對(duì)象的操作權(quán)限
您可以通過如下方式撤銷授權(quán):
撤銷授予角色的權(quán)限
原本被賦予角色的所有用戶都不再具備角色相應(yīng)的權(quán)限。
收回賦予用戶的角色
只有被收回角色的用戶不再具備角色相應(yīng)的權(quán)限。其他用戶的權(quán)限不受影響。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。已為三個(gè)RAM用戶通過角色Worker授予創(chuàng)建表、函數(shù)、實(shí)例、查看項(xiàng)目所有類型的對(duì)象列表的權(quán)限。現(xiàn)需要撤銷對(duì)象的操作權(quán)限,命令示例如下。
方式一:撤銷授予角色Worker的權(quán)限。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --為角色Worker撤銷授權(quán)。此時(shí)Allen、Alice、Tom都不再具備CreateTable, CreateFunction, CreateInstance, List權(quán)限。 --撤銷ACL授權(quán)。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker; --撤銷Policy授權(quán)。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
方式二:收回賦予用戶的角色Worker。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --收回賦予用戶的角色Worker。此時(shí)僅Allen不具備CreateTable, CreateFunction, CreateInstance, List權(quán)限。 revoke Worker from RAM$Bob@aliyun.com:Allen;
通過角色為用戶授予Download權(quán)限
通過Download授權(quán)機(jī)制為角色授權(quán),然后將角色賦予用戶。
更多為角色授權(quán)信息,請(qǐng)參見為角色授予Download權(quán)限。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。現(xiàn)需要為三個(gè)RAM用戶授予下載指定表數(shù)據(jù)的權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。
use test_project_a;
--Bob將Allen、Alice、Tom添加至test_project_a項(xiàng)目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob創(chuàng)建角色Worker。
create role Worker;
--Bob為角色Worker授權(quán)。
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權(quán)限
您可以通過如下方式撤銷授權(quán):
撤銷授予角色的權(quán)限
原本被賦予角色的所有用戶都不再具備角色相應(yīng)的權(quán)限。
收回賦予用戶的角色
只有被收回角色的用戶不再具備角色相應(yīng)的權(quán)限。其他用戶的權(quán)限不受影響。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。已為三個(gè)RAM用戶通過角色Worker授予下載所有表數(shù)據(jù)的權(quán)限。現(xiàn)需要撤銷授予用戶的下載權(quán)限,命令示例如下。
方式一:撤銷授予角色Worker的權(quán)限。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --為角色Worker撤銷授權(quán)。此時(shí)Allen、Alice、Tom都不再具備Download權(quán)限。 revoke Download on table sale_detail from ROLE Worker;
方式二:收回賦予用戶的角色Worker。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --收回賦予用戶的角色Worker。此時(shí)僅Allen不再具備Download權(quán)限。 revoke Worker from RAM$Bob@aliyun.com:Allen;
通過角色為用戶授予訪問相同高敏感等級(jí)數(shù)據(jù)的權(quán)限
通過Label授權(quán)機(jī)制或Policy授權(quán)機(jī)制為角色授權(quán),然后將角色賦予多個(gè)用戶。
更多為角色授權(quán)信息,請(qǐng)參見為角色授予訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。三個(gè)RAM用戶的許可訪問標(biāo)簽等級(jí)為2,現(xiàn)需要授予訪問項(xiàng)目中目標(biāo)表的敏感等級(jí)為4的數(shù)據(jù)權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。
use test_project_a;
--Bob創(chuàng)建角色Worker。
create role Worker;
--Bob為角色Worker授權(quán)。
grant Label 4 on table <table_name> to ROLE Worker; --table_name為目標(biāo)表的表名稱
--將角色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;
撤銷通過角色為用戶授予的訪問相同高敏感等級(jí)數(shù)據(jù)的權(quán)限
您可以通過如下方式撤銷授權(quán):
撤銷授予角色的權(quán)限
原本被賦予角色的所有用戶都不再具備角色相應(yīng)的權(quán)限。
收回賦予用戶的角色
只有被收回角色的用戶不再具備角色相應(yīng)的權(quán)限。其他用戶的權(quán)限不受影響。
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。已為三個(gè)RAM用戶授予訪問項(xiàng)目中目標(biāo)表的敏感等級(jí)為4的數(shù)據(jù)權(quán)限。現(xiàn)需要撤銷用戶的訪問高敏感等級(jí)數(shù)據(jù)權(quán)限,命令示例如下。
方式一:撤銷授予角色Worker的權(quán)限。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --為角色Worker撤銷授權(quán)。此時(shí)Allen、Alice、Tom僅能訪問最高敏感等級(jí)為2的數(shù)據(jù)。 revoke Label on table <table_name> from ROLE Worker; --table_name為目標(biāo)表的表名稱
方式二:收回賦予用戶的角色Worker。
--進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --收回賦予用戶的角色Worker。此時(shí)Allen僅能訪問最高敏感等級(jí)為2的數(shù)據(jù),Alice、Tom仍然可以訪問最高敏感等級(jí)為4的數(shù)據(jù)。 revoke Worker from RAM$Bob@aliyun.com:Allen;
直接為用戶授權(quán)
MaxCompute支持直接為用戶授權(quán),常見的授權(quán)場(chǎng)景及語(yǔ)法示例如下。
將用戶添加進(jìn)MaxCompute項(xiàng)目,請(qǐng)參見用戶規(guī)劃與管理。
當(dāng)用戶被移除項(xiàng)目時(shí),需要及時(shí)清理遺留權(quán)限信息,請(qǐng)參見徹底清除被刪除用戶遺留的權(quán)限信息
用戶授權(quán)場(chǎng)景 | 授權(quán)方式 | 授權(quán)人 | 授權(quán)操作入口 |
為用戶授予對(duì)象的操作權(quán)限 | 請(qǐng)參見權(quán)限一覽表的支持的授權(quán)人列。 | ||
撤銷為用戶授予的對(duì)象的操作權(quán)限 | |||
為用戶授予Download權(quán)限 | |||
撤銷為用戶授予的Download權(quán)限 | |||
為用戶授予訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限 | |||
撤銷為用戶授予的訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限 |
為用戶授予對(duì)象的操作權(quán)限
通過ACL授權(quán)機(jī)制為用戶授予項(xiàng)目、表、資源、函數(shù)或?qū)嵗牟僮鳈?quán)限。
為用戶授予項(xiàng)目的操作權(quán)限
命令格式
grant Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All on project <project_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
參數(shù)說明
參數(shù)名稱
是否必填
說明
project_name
是
項(xiàng)目名稱:您可以登錄MaxCompute控制臺(tái),左上角切換地域后,即可在項(xiàng)目管理頁(yè)簽獲取具體的MaxCompute項(xiàng)目名稱。
user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
為用戶授予表的操作權(quán)限
命令格式
grant Describe|Select|Alter|Update|Drop|ShowHistory|All on table <table_name> [(<column_list>)] to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
參數(shù)說明
參數(shù)名稱
是否必填
說明
table_name
是
表名稱:您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
為用戶授予資源的操作權(quán)限
命令格式
grant Read|Write|Delete|All on resource <resource_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
參數(shù)說明
參數(shù)名稱
是否必填
說明
resource_name
是
資源名稱:您可以通過MaxCompute客戶端執(zhí)行
list resources;
命令獲取資源名稱。user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
為用戶授予函數(shù)的操作權(quán)限
命令格式
grant Read|Write|Delete|Execute|All on function <function_name> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
參數(shù)說明
參數(shù)名稱
是否必填
說明
function_name
是
函數(shù)名稱:您可以通過MaxCompute客戶端執(zhí)行
list functions;
命令獲取函數(shù)名稱。user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
為用戶授予實(shí)例的操作權(quán)限
命令格式
grant Read|Write|All on instance <instance_id> to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
參數(shù)說明
參數(shù)名稱
是否必填
說明
instance_id
是
實(shí)例ID:您可以通過MaxCompute客戶端執(zhí)行
show instances;
命令獲取實(shí)例ID。user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
使用示例
假設(shè)Bob@aliyun.com是test_project_a的項(xiàng)目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。BI_Analyst是隸屬于Bob@aliyun.com的RAM角色。Kate@aliyun.com是其他阿里云賬號(hào),待加入test_project_a項(xiàng)目。
示例一:為阿里云賬號(hào)Kate授予在項(xiàng)目中創(chuàng)建表、函數(shù)、實(shí)例、查看項(xiàng)目所有類型的對(duì)象列表的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --將Kate加入MaxCompute項(xiàng)目。 add user ALIYUN$Kate@aliyun.com; --Bob為Kate授權(quán)。 grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$Kate@aliyun.com;
示例二:為RAM用戶Allen、RAM角色授予在項(xiàng)目中創(chuàng)建表、查看項(xiàng)目所有類型、讀取表的元信息和表數(shù)據(jù)的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob將Allen添加至test_project_a項(xiàng)目。 add user RAM$Bob@aliyun.com:Allen; --Bob將RAM角色BI_Analyst添加至test_project_a項(xiàng)目。 add user `RAM$Bob@aliyun.com:role/BI_Analyst`; --Bob為RAM用戶Allen授權(quán)。 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授權(quán)。 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授予讀取、更新資源的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob將Alice添加至test_project_a項(xiàng)目。 add user RAM$Bob@aliyun.com:Alice; --Bob為Alice授權(quán)。 grant Read, Write on resource udtf.jar to USER RAM$Bob@aliyun.com:Alice;
示例四:為RAM用戶Tom授予讀取、更新函數(shù)的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob將Tom添加至test_project_a項(xiàng)目。 add user RAM$Bob@aliyun.com:Tom; --Bob為Tom授權(quán)。 grant Read, Write on function udf_test to USER RAM$Bob@aliyun.com:Tom;
示例五:為RAM用戶Tom授予實(shí)例的所有操作權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob將Tom添加至test_project_a項(xiàng)目。 add user RAM$Bob@aliyun.com:Tom; --Bob為Tom授權(quán)。 grant All on instance 202112300224**** to USER RAM$Bob@aliyun.com:Tom;
撤銷為用戶授予的對(duì)象的操作權(quán)限
撤銷為用戶授予的項(xiàng)目、表、資源、函數(shù)或?qū)嵗牟僮鳈?quán)限。
撤銷為用戶授予的項(xiàng)目的操作權(quán)限
命令格式
revoke Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All on project <project_name> from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
project_name
是
項(xiàng)目名稱:您可以登錄MaxCompute控制臺(tái),左上角切換地域后,即可在項(xiàng)目管理頁(yè)簽獲取具體的MaxCompute項(xiàng)目名稱。
user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
撤銷為用戶授予的表的操作權(quán)限
命令格式
revoke Describe|Select|Alter|Update|Drop|ShowHistory|All on table <table_name> [(<column_list>)] from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
table_name
是
表名稱:您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
撤銷為用戶授予的資源的操作權(quán)限
命令格式
revoke Read|Write|Delete|All on resource <resource_name> from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
resource_name
是
資源名稱:您可以通過MaxCompute客戶端執(zhí)行
list resources;
命令獲取資源名稱。user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
撤銷為用戶授予的函數(shù)的操作權(quán)限
命令格式
revoke Read|Write|Delete|Execute|All on function <function_name> from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
function_name
是
函數(shù)名稱:您可以通過MaxCompute客戶端執(zhí)行
list functions;
命令獲取函數(shù)名稱。user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
撤銷為用戶授予的實(shí)例的操作權(quán)限
命令格式
revoke Read|Write|All on instance <instance_id> from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
instance_id
是
實(shí)例ID:您可以通過MaxCompute客戶端執(zhí)行
show instances;
命令獲取實(shí)例ID。user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。privilegeproperties
conditions
否
從請(qǐng)求消息來源及訪問方式等維度進(jìn)行權(quán)限控制。格式為
"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...
,支持的var_name及Operation列表,請(qǐng)參見Conditions。days
否
指定權(quán)限過期時(shí)間,單位為天。未指定該參數(shù)時(shí),權(quán)限默認(rèn)長(zhǎng)期有效。指定該參數(shù)時(shí),權(quán)限到期后,MaxCompute會(huì)自動(dòng)清除權(quán)限信息。
使用示例
撤銷為用戶Kate、Allen、Alice、Tom授予的對(duì)象的操作權(quán)限。命令示例如下。
示例一:撤銷為Kate授予的在項(xiàng)目中創(chuàng)建表、函數(shù)、實(shí)例、查看項(xiàng)目所有類型的對(duì)象列表的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Kate撤銷授權(quán)。 revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$Kate@aliyun.com;
示例二:撤銷為RAM用戶Allen授予的讀取表的元信息和表數(shù)據(jù)的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Allen撤銷授權(quán)。 revoke Describe, Select on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
示例三:撤銷為RAM用戶Alice授予的讀取、更新資源的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Alice撤銷授權(quán)。 revoke Read, Write on resource udtf.jar from USER RAM$Bob@aliyun.com:Alice;
示例四:撤銷為RAM用戶Tom授予的讀取、更新函數(shù)的權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Tom撤銷授權(quán)。 revoke Read, Write on function udf_test from USER RAM$Bob@aliyun.com:Tom;
示例五:撤銷為RAM用戶Tom授予的實(shí)例的所有操作權(quán)限。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Tom撤銷授權(quán)。 revoke All on instance 202112300224**** from USER RAM$Bob@aliyun.com:Tom;
為用戶授予Download權(quán)限
為用戶授予下載表數(shù)據(jù)、資源、函數(shù)或?qū)嵗臋?quán)限。
命令格式
grant Download on {Table|Resource|Function|Instance} <object_name> to USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
object_name
是
指定被授予的對(duì)象的名稱。獲取方式如下:
表名稱:您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。資源名稱:您可以通過MaxCompute客戶端執(zhí)行
list resources;
命令獲取資源名稱。函數(shù)名稱:您可以通過MaxCompute客戶端執(zhí)行
list functions;
命令獲取函數(shù)名稱。實(shí)例名稱:您可以通過MaxCompute客戶端執(zhí)行
show instances;
命令獲取實(shí)例ID。
user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。使用示例
假設(shè)test_project_a項(xiàng)目開啟了Download權(quán)限管控,需要為用戶Allen授予下載指定表數(shù)據(jù)的權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Allen授權(quán)。 grant Download on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
撤銷為用戶授予的Download權(quán)限
撤銷為用戶授予的下載表數(shù)據(jù)、資源、函數(shù)或?qū)嵗臋?quán)限。
命令格式
revoke Download on {Table|Resource|Function|Instance} <object_name> from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
object_name
是
指定待回收權(quán)限的對(duì)象的名稱。獲取方式如下:
表名稱:您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。資源名稱:您可以通過MaxCompute客戶端執(zhí)行
list resources;
命令獲取資源名稱。函數(shù)名稱:您可以通過MaxCompute客戶端執(zhí)行
list functions;
命令獲取函數(shù)名稱。實(shí)例名稱:您可以通過MaxCompute客戶端執(zhí)行
show instances;
命令獲取實(shí)例ID。
user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。使用示例
撤銷為用戶Allen授予的下載指定表數(shù)據(jù)的權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為Allen撤銷授權(quán)。 revoke Download on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
為用戶授予訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限
通過Label授權(quán)機(jī)制為用戶授予訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限。
命令格式
grant Label <number> on table <table_name> [(<column_list>)] to USER <user_name> [with exp <days>];
參數(shù)說明
參數(shù)名稱
是否必填
說明
number
是
指定用戶或角色可訪問的最高數(shù)據(jù)敏感等級(jí)。
取值范圍為0~9,與數(shù)據(jù)敏感等級(jí)標(biāo)簽相對(duì)應(yīng)。
table_name
是
指定目標(biāo)表或視圖的名稱。
您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。column_list
否
當(dāng)需要授予目標(biāo)表或視圖中指定列的訪問權(quán)限時(shí),需要配置該參數(shù)。單次授權(quán)可以指定多個(gè)列名,列名之間用英文逗號(hào)(,)分隔。
user_name
是
指定待綁定角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。days
否
指定權(quán)限過期時(shí)間,單位為天。取值范圍為:0~263-1。不指定該參數(shù)時(shí),默認(rèn)過期時(shí)間為180天。
使用示例
假設(shè)test_project_a項(xiàng)目中,用戶Allen的許可訪問標(biāo)簽等級(jí)為2,現(xiàn)需要為用戶授予訪問sale_detail表中最高敏感等級(jí)為4的數(shù)據(jù)權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為用戶Allen授權(quán)。 grant Label 4 on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
撤銷為用戶授予的訪問高敏感等級(jí)數(shù)據(jù)的權(quán)限
命令格式
revoke Label <number> on table <table_name> [(<column_list>)] from USER <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
number
是
指定用戶或角色待回收訪問權(quán)限的最高數(shù)據(jù)敏感等級(jí)。
取值范圍為0~9,與數(shù)據(jù)敏感等級(jí)標(biāo)簽相對(duì)應(yīng)。
table_name
是
指定待回收訪問權(quán)限的目標(biāo)表或視圖的名稱。
您可以通過MaxCompute客戶端執(zhí)行
show tables;
命令獲取表或視圖名稱。column_list
否
當(dāng)需要撤銷目標(biāo)表或視圖中指定列的訪問權(quán)限時(shí),需要配置該參數(shù)。單次授權(quán)可以指定多個(gè)列名,列名之間用英文逗號(hào)(,)分隔。
user_name
是
指定待收回角色的已加入MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
您可以通過MaxCompute客戶端執(zhí)行
list users;
命令查看用戶信息。使用示例
撤銷為用戶Allen授予的訪問sale_detail表中最高敏感等級(jí)為4的數(shù)據(jù)權(quán)限。命令示例如下。
--Bob進(jìn)入test_project_a項(xiàng)目。 use test_project_a; --Bob為用戶Allen撤銷授權(quán)。 revoke Label 4 on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
徹底清除被刪除用戶遺留的權(quán)限信息
用戶被移出項(xiàng)目后,ACL、Policy、Label等權(quán)限數(shù)據(jù)還留存在項(xiàng)目中。當(dāng)移出的用戶又再次進(jìn)入該項(xiàng)目時(shí),將會(huì)擁有原來的ACL、Policy、Label等權(quán)限,即用戶如果被誤刪,被重新加回項(xiàng)目時(shí)可以直接使用原先保留的權(quán)限。但是,如果用戶以不同的身份被加回原項(xiàng)目時(shí),會(huì)有潛在的數(shù)據(jù)安全風(fēng)險(xiǎn)。
基于如上背景,MaxCompute提供清空用戶權(quán)限的功能,如果用戶已經(jīng)不在項(xiàng)目中,但有ACL、Policy、Label等權(quán)限的,項(xiàng)目所有者或擁有Admin、Super_Administrator角色的用戶可以執(zhí)行如下命令清除遺留的權(quán)限信息。
命令格式
purge privs from user <user_name>;
參數(shù)說明
參數(shù)名稱
是否必填
說明
user_name
是
指定待清除遺留權(quán)限信息的已移出MaxCompute項(xiàng)目的用戶名稱,格式如下:
阿里云賬號(hào):ALIYUN$<account_name>
RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>
RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`
如果未將用戶移出項(xiàng)目,執(zhí)行該命令會(huì)返回"Principal <username> still exist in the project"
報(bào)錯(cuò)。因此需要先使用remove user <user_name>
命令將用戶移出項(xiàng)目。
后續(xù)指引
完成用戶授權(quán)后,您可以查詢用戶授權(quán)信息,請(qǐng)參見查詢用戶權(quán)限信息。