日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ACL權限控制

當您需要允許多個用戶操作MaxCompute對象(項目、表等資源)時,MaxCompute支持通過ACL(Access Control Lists)方式授予用戶或角色對指定對象執行指定操作的權限,可以先為角色授權,再將角色綁定至用戶,簡單高效地實現多個用戶的權限控制。本文為您介紹MaxCompute支持的ACL授權命令,并提供授權示例供參考。

背景信息

ACL權限控制為白名單授權機制,即允許用戶或角色對指定對象執行指定操作。ACL權限控制方式簡單明了,可實現精準授權。

創建MaxCompute項目后,ACL權限控制功能開關默認為打開狀態。項目所有者(Project Owner)可以在MaxCompute項目中執行set CheckPermissionUsingACL=true|false;命令,開啟或關閉ACL權限控制功能。

ACL權限控制適用于如下場景。

場景

說明

授權人

授權操作入口

為用戶授權

直接為單個用戶授予對指定對象執行單個或多個操作的權限。

請參見權限一覽表的支持的授權人列。

基于角色為用戶授權

直接為單個角色授予對指定對象執行單個或多個操作的權限,然后再將角色綁定至多個用戶,用戶即可具備角色的權限。

更多創建角色及將角色綁定至用戶的信息,請參見角色規劃為用戶綁定角色

說明

角色存在的意義是為了更好的管理用戶,通常不會存在為多個角色授予相同對象的相同操作權限的情況。

前提條件

使用ACL權限控制方案前,請您確認已記錄好如下信息:

  • 被授權人的賬號或角色名稱,且賬號或角色已添加至MaxCompute項目。阿里云賬號格式為ALIYUN$<account_name>,RAM用戶賬號格式為RAM$[<account_name>:]<RAM用戶名稱> ,RAM角色賬號格式為`RAM$<account_name>:role/<RAM角色名稱>`

    您可以通過MaxCompute客戶端執行list users;list roles;命令獲取賬號或角色信息。

    如果需要新增用戶或角色,請參見用戶規劃與管理角色規劃

  • 授權對象類型、對象名稱及操作。

    更多對象類型及操作信息,請參見MaxCompute權限

使用限制

ACL權限控制功能的使用限制如下:

  • ACL權限控制只支持對已存在的對象、被授權人進行授權,可以避免刪除并重建同名對象所帶來的安全風險。

  • ACL權限控制不支持通過[with grant option]子句授權。例如當用戶A授權用戶B可以訪問某個對象時,用戶B無法將權限進一步授權給用戶C。

  • ACL授權為白名單(Allow)授權,不支持黑名單(Deny)授權。

注意事項

使用ACL權限控制功能的注意事項如下:

  • 如果刪除了對象,MaxCompute會自動撤銷與該對象關聯的所有ACL授權信息。

  • 當一個用戶被移除后,與該用戶有關的授權仍然會被保留。一旦該用戶以后被再次添加到該項目時,該用戶的歷史授權訪問權限將被重新激活。如果需要徹底清除用戶的權限信息,請參見徹底清除被刪除用戶遺留的權限信息

命令格式

ACL權限控制命令格式如下:

  • ACL授權

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • 撤銷ACL授權

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • 列級別權限控制

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

參數說明如下。

參數名稱

是否必填

說明

actions

指定被授予的操作權限名稱。單次授權可以指定單個或多個操作。

當有多個操作時,多個操作名稱之間使用英文逗號(,)分隔。操作取值請參見MaxCompute權限

object_type

指定被授予的對象類型,即客體。單次授權只能指定一個客體。

客體取值請參見MaxCompute權限

object_name

指定被授予的對象的名稱。獲取方式如下:

  • 項目名稱:您可以登錄MaxCompute控制臺,左上角切換地域后,即可在項目管理頁簽獲取具體的MaxCompute項目名稱。查詢類型為Project時,只能查詢當前Project的信息。

  • 表名稱:您可以通過MaxCompute客戶端執行show tables;命令獲取表或視圖名稱。

  • 資源名稱:您可以通過MaxCompute客戶端執行list resources;命令獲取資源名稱。

  • 函數名稱:您可以通過MaxCompute客戶端執行list functions;命令獲取函數名稱。

  • 實例名稱:您可以通過MaxCompute客戶端執行show instances;命令獲取實例ID。

授權對象支持以通配符星號(*)來表達。例如,table taobao*表示所有以taobao開頭的表。

說明

授權給ROLE支持使用通配符星號(*);授權給USER不支持使用通配符。

column_list

僅當object_type為Table,且需要對表進行列級別權限控制時,需要配置該參數。單次授權可以指定單個或多個列名,列名之間使用英文逗號(,)分隔。

說明

該參數實現的是對指定表的指定列的Describe、Select、Alter、Update、Drop、ShowHistory、ALL權限進行控制。如果表的列設置了敏感等級,可通過Label權限控制功能,通過敏感等級標簽對訪問敏感數據的權限進行控制。

privilegeproperties

conditions

從請求消息來源及訪問方式等維度進行權限控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,請參見Conditions

days

指定權限過期時間,單位為天。未指定該參數時,權限默認長期有效。指定該參數時,權限到期后,MaxCompute會自動清除權限信息。

subject_type

指定被授權人的類型。取值范圍如下:

  • USER:阿里云賬號或RAM用戶

  • ROLE:角色

subject_name

指定被授權的用戶賬號或角色名稱。單次授權只能指定一個用戶或角色。格式如下:

  • 阿里云賬號:ALIYUN$<account_name>

  • RAM用戶:RAM$[<account_name>:]<RAM用戶名稱>

  • RAM角色:`RAM$<account_name>:role/<RAM角色名稱>`

您可以通過MaxCompute客戶端執行list users;list roles;命令獲取用戶賬號或角色名稱。

Conditions

conditions支持的var_nameOperation列表如下。

var_name

類型

Operation

說明

acs:UserAgent

STRING

  • StringEquals:=

  • StringNotEquals:<>

  • StringLike:like

  • StringNotLike:not like

發送請求時的客戶端UserAgent。

acs:Referer

STRING

發送請求時的HTTP referer。

acs:SourceIp

IP Address

  • IpAddress:in (...)

  • NotIpAddress:not in (...)

發送請求時的客戶端IP地址。

acs:SecureTransport

BOOLEAN

  • True

  • False

發送請求是否使用了安全通道,如HTTPS。

acs:CurrentTime

DATEANDTIME

  • DateEquals:=

  • DateNotEquals:<>

  • DateLessThan:<

  • DateLessThanEquals:<=

  • DateGreaterThan:>

  • DateGreaterThanEquals:>=

Web Server接收到請求的時間,以ISO 8601格式表示,如2012-11-11T23:59:59Z。

ACL權限控制示例

假設Bob@aliyun.com是test_project_a的項目所有者,Allen、Alice、Tom是隸屬于Bob@aliyun.com的RAM用戶。以MaxCompute客戶端操作為例,授權示例如下:

  • 示例一:為用戶授權

    在項目test_project_a中創建表sale_detail,并為用戶Allen授予表的讀取元數據(Describe)和讀取表數據(Select)權限。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --創建一張分區表sale_detail。
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    --將用戶Allen添加為項目成員。
    add user RAM$Bob@aliyun.com:Allen;
    --為Allen授予權限。
    grant Describe, Select on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
    --查看用戶Allen的授權結果。
    show grants for RAM$Bob@aliyun.com:Allen; 
    --授權結果如下。
    Authorization Type: ACL
    [user/RAM$Bob@aliyun.com:Allen]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • 示例二:為用戶授權

    在示例一中創建的表sale_detail基礎上,為用戶Alice授予表sale_detail中shop_name和customer_id兩列的所有操作權限。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --將用戶Alice添加為項目成員。
    add user RAM$Bob@aliyun.com:Alice;
    --為Alice授予列級別控制權限。
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$Bob@aliyun.com:Alice;
    --查看用戶Alice的授權結果。
    show grants for RAM$Bob@aliyun.com:Alice; 
    --授權結果如下。
    Authorization Type: ACL
    [user/RAM$Bob@aliyun.com:Alice]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • 示例三:為用戶撤銷授權

    基于示例一、二,撤銷對用戶Allen、Alice的授權。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --撤銷Allen授權。
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Allen;
    --撤銷Alice授權。
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Alice;
    --查看用戶Allen的撤銷授權結果。權限列表無Describe, Select權限信息。
    show grants for RAM$Bob@aliyun.com:Allen; 
    --查看用戶Alice的撤銷授權結果。權限列表無All權限信息。
    show grants for RAM$Bob@aliyun.com:Alice; 

  • 示例四:基于角色為多個用戶授予相同權限

    為Alice、Tom及另一阿里云賬號Lily@aliyun.com授予在項目test_project_a中創建實例、創建資源、創建函數、創建表以及查看項目所有對象類型的權限。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --將用戶Alice、Tom、Lily@aliyun.com添加為項目成員。
    add user RAM$Bob@aliyun.com:Alice;
    add user RAM$Bob@aliyun.com:Tom;
    add user ALIYUN$Lily@aliyun.com;
    --創建角色Worker。
    create role Worker; 
    --為用戶綁定角色Worker。
    grant Worker TO RAM$Bob@aliyun.com:Alice; 
    grant Worker TO RAM$Bob@aliyun.com:Tom; 
    grant Worker TO ALIYUN$Lily@aliyun.com; 
    --為角色Worker授予在項目test_project_a中創建實例、創建資源、創建函數、創建表以及查看項目所有對象類型的權限。
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --查看用戶Lily的授權結果。
    show grants for ALIYUN$Lily@aliyun.com; 
    --授權結果如下。表明用戶Lily已經具備上述權限。
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • 示例五:為多個用戶撤銷基于角色授予的相同權限

    基于示例三,撤銷對用戶Alice、Tom、Lily@aliyun.com的授權。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --收回用戶Alice、Tom、Lily@aliyun.com綁定的角色Worker。
    revoke Worker from RAM$Bob@aliyun.com:Alice;
    revoke Worker from RAM$Bob@aliyun.com:Tom;
    revoke Worker from ALIYUN$Lily@aliyun.com;
    --查看用戶Lily的撤銷授權結果。權限列表無Worker信息。
    show grants for ALIYUN$Lily@aliyun.com; 

后續指引

了解ACL授權機制后,您可以根據實際業務需要執行授權相關操作: