當需要對一組使用者賦予相同的許可權時,可以使用角色來授權。角色(Role)是許可權的集合,基於角色的授權可以簡化授權流程,降低授權管理成本。對多個使用者執行相同授權操作時,應優先考慮使用角色授權。本文為您介紹MaxCompute支援的角色類型及角色管理操作。
角色類型
MaxCompute角色類型包括管理類型(Admin)角色和資源類型(Resource)角色。
管理類型(Admin)角色:可以通過Policy授予管理類型許可權,不支援對管理類角色授予資源許可權,不支援對管理類角色通過ACL方式進行管理類許可權授權。
資源類型(Resource)角色:可以通過Policy或ACL方式進行資源類型許可權授權,不支援對其進行管理類型許可權授權。
內建角色
MaxCompute在專案層級(Project)內建了兩個管理角色Super_Administrator和Admin;在租戶層級(tenant)內建了兩個管理角色Super_Administrator和Admin。
角色類別 | 角色名稱 | 角色類型 | 角色說明 |
專案層級(Project) | Super_Administrator | Admin | MaxCompute內建的管理角色。擁有操作專案內所有資源的許可權和管理類許可權。許可權詳細資料,請參見專案層級管理角色許可權說明。 專案所有者或具備Super_Administrator角色的使用者可以將Super_Administrator角色賦予其他使用者。 |
Admin | Admin | MaxCompute內建的管理角色。擁有操作專案內所有資源的許可權和部分基礎管理類許可權。許可權詳細資料,請參見專案層級管理角色許可權說明。 專案所有者可以將Admin角色賦予其他使用者。Admin角色不能將Admin許可權賦予其他使用者、不能設定專案的安全配置、不能修改專案的鑒權模型、所對應的許可權不能被修改。 | |
租戶層級(tenant) | Super_Administrator | Admin | MaxCompute內建的管理角色。除了不能建立專案、刪除專案、開通服務,其他在MaxCompute上的操作許可權等同於阿里雲帳號。 |
Admin | Admin | MaxCompute內建的管理角色。用於管理所有對象及網路連接(Networklink)的許可權。 |
在專案層級(Project),除角色外,ProjectOwner(專案所有者)作為專案的擁有者,擁有專案的所有許可權。除專案所有者之外,任何人都無權訪問此專案內的對象,除非有專案所有者的授權許可。
自訂角色
MaxCompute支援您根據實際業務情況自訂管理類型(Admin)角色和資源類型(Resource)角色,對使用者進行分類管理。
角色類別 | 角色名稱 | 角色類型 | 角色說明 |
專案層級(Project) | 自訂角色 | Admin、Resource | 非MaxCompute內建的角色,支援對Project管控操作許可權定義(管理類角色),也支援對Project內對象資源的許可權定義(資源類角色)。 |
租戶層級(tenant) | 自訂角色 | Resource | 非MaxCompute內建角色,支援對Quota、Networklink、Project等對象資源定義許可權(資源類角色)。 |
角色管理操作
MaxCompute支援的角色管理操作如下。
角色類型 | 操作 | 說明 | 操作人角色 | 操作入口 |
專案層級(Project) | 建立專案層級的新角色。 | 專案所有者(Project Owner)或具備專案層級的MaxCompute內建角色的使用者。 | ||
查看專案中已建立的角色列表。 | ||||
刪除專案中已存在的角色。 |
專案層級管理角色許可權說明
專案層級管理角色擁有的管理類許可權說明如下。
權限類別 | 客體 | 操作 | 說明 | 專案所有者 | Super_Administrator角色 | Admin角色 |
專案安全配置 | Project | SetSecurityConfiguration | 設定專案安全屬性 | |||
Project | GetSecurityConfiguration | 查看專案安全配置 | ||||
受保護專案管理 | Project | AddTrustedProject | 添加受保護專案 | |||
Project | RemoveTrustedProject | 刪除受保護專案 | ||||
Project | ListTrustedProjects | 列出受保護專案 | ||||
使用者管理 | Project | AddUser | 添加使用者 | |||
Project | RemoveUser | 刪除使用者 | ||||
Project | ListUsers | 查看使用者列表 | ||||
Project | ListUserRoles | 查看使用者擁有的角色 | ||||
角色管理 | Project | CreateRole | 建立角色 | |||
Project | DescribeRole | 查看角色許可權 | ||||
Project | AlterRole | 修改角色屬性 | ||||
Project | DropRole | 刪除角色 | ||||
Project | ListRoles | 查看角色列表 | ||||
角色授權 | Role | GrantRole | 將角色賦予使用者 | |||
Role | RevokeRole | 移除使用者的角色 | ||||
Role | ListRolePrincipals | 查看角色賦予的使用者列表 | ||||
包(package)管理 | Project | CreatePackage | 建立Package | |||
Project | ShowPackages | 查看Package列表 | ||||
Package | DescribePackage | 查看Package資訊 | ||||
Package | DropPackage | 刪除Package | ||||
Package | InstallPackage | 安裝Package | ||||
Package | UninstallPackage | 卸載Package | ||||
Package | AllowInstallPackage | 許可其他專案使用Package | ||||
Package | DisallowInstallPackage | 撤銷其他專案使用Package的許可 | ||||
Package | AddPackageResource | 向Package中添加資源 | ||||
Package | RemovePackageResource | 從Package中移除資源 | ||||
標籤(Label)管理 | Table | GrantLabel | 標籤授權 | |||
Table | RevokeLabel | 撤銷標籤授權 | ||||
Table | ShowLabelGrants | 查看標籤授權資訊 | ||||
Table | SetDataLabel | 設定使用者、角色的標籤 | ||||
清理到期許可權 | Project | ClearExpiredGrants | 清理到期許可權 |
表示有許可權,表示無許可權。
建立角色(專案層級)
在MaxCompute專案中建立新角色。
完成建立角色後,需將角色綁定至使用者,使用者會同時具備角色相應的許可權,即通過角色為使用者授予許可權,操作詳情請參見將角色賦予使用者。
命令格式
create role <role_name> [privilegeproperties("type"="admin|resource")];
參數說明
參數名稱
是否必填
說明
role_name
是
指定建立角色的名稱,專案內唯一。命名需要滿足如下要求:
以字母開頭
只能包含字母或數字
長度不超過64個字元
您可以通過MaxCompute用戶端執行
list roles;
命令查看已建立的角色資訊。privilegeproperties
否
定義role角色類型:
"type"="admin"
:即建立管理類角色,這類角色授權只能通過Policy方式進行授權。"type"="resource"
:建立資源類角色,不指定時預設為此類型。支援ACL和Policy方式授權。
使用樣本
建立一個Worker資源類角色,命令樣本如下。
create role Worker;
建立一個sale_admin管理類角色,命令樣本如下。
create role sale_admin privilegeproperties("type"="admin");
查看角色列表(專案層級)
查看MaxCompute專案中已建立的角色列表。
命令格式
list roles;
使用樣本
查看MaxCompute專案中已建立的角色資訊。命令樣本如下。
list roles;
返回結果如下。
admin super_administrator worker
刪除角色(專案層級)
在MaxCompute專案中刪除已建立的角色。
命令格式
drop role <role_name>;
注意事項
刪除一個角色時,MaxCompute會檢查該角色是否綁定了使用者。如果存在使用者,則刪除角色會失敗。只有當角色中的所有使用者都被撤銷時,才能成功刪除角色。解除綁定使用者資訊,請參見收回賦予使用者的角色。
參數說明
參數名稱
是否必填
說明
role_name
是
指定待刪除角色的名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令擷取已建立的角色資訊。使用樣本
刪除Worker角色。
drop role Worker;
清除許可權資訊
當角色在MaxCompute專案中被刪除後,與該角色相關的ACL、Policy、Label等許可權資料並不會隨之刪除,仍然會保留在專案中。若之後在同一專案內建立了同名的新角色,則這個新角色將繼承原來的角色許可權。為避免這種情況,MaxCompute提供了清除角色許可權的功能。若已刪除的角色仍有ACL、Policy、Label等許可權資訊殘留,專案的所有者或者具備Admin、Super_Administrator角色的使用者可以執行以下命令,清除許可權資訊。
命令格式
purge privs from role <role_name>;
參數說明
參數名稱
是否必填
說明
role_name
是
指定待刪除角色的名稱。
您可以通過MaxCompute用戶端執行
list roles;
命令擷取已建立的角色資訊。說明在清除角色許可權資訊時,請確認此角色已被刪除,如果未刪除角色,執行該命令會返回
"Principal <role_name> still exist in the project"
報錯。