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

Package的權限控制

安裝Package后,如果您需要對Package進行更細微的權限控制,例如控制只能訪問Package內的部分資源或控制只能訪問Package內表的部分列,您可以通過MaxCompute提供的細粒度授權(ACL)或LABEL授權實現。本文為您介紹如何通過這兩種方式為用戶或角色授權或撤銷Package內資源的相應權限。

背景信息

MaxCompute對Package提供如下兩種權限控制策略。

權限控制策略

說明

授權人

授權操作入口

細粒度授權(ACL)

在安裝Package的項目中,對Package內的部分資源通過ACL方式(基于對象)授權或撤銷授權。授權后,安裝Package的項目中的用戶即可對指定對象執行指定操作。

項目所有者(Project Owner)或具備Admin角色的用戶。

LABEL授權

在安裝Package的項目中,對Package內的表資源通過LABEL方式進行授權或撤銷授權。授權后,安裝Package的項目中的用戶僅能訪問不超過指定LABEL等級的敏感數據信息,在細粒度授權基礎上,實現更精細化的數據權限管理。更多LABEL信息,請參見Label權限控制

細粒度授權(ACL)

  • 對Package內部分資源進行ACL授權,語法格式如下。

    --對指定對象授權。
    grant <actions> on <object_type> <object_name> to [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
    --對表的列授權。
    grant <actions> on table <table_name>[(<column_list>)] to [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • 查看Package內資源的ACL授權信息,語法格式如下。

    show grants on <object_type> <object_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • 撤銷Package內部分資源的ACL授權,語法格式如下。

    --撤銷對象授權。
    revoke <actions> on <object_type> <object_name> from [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
    --撤銷表的列授權。
    revoke <actions> on table <table_name>[(<column_list>)] from [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>",  "package"="<package_name>");

語法中各參數的含義如下:

  • actions:必填。指定授予的操作權限。您可以執行describe package project_name.package_name;命令來查詢Package中打包的操作權限。

  • object_type:必填。指定Package中對象的類型。您可以執行describe package project_name.package_name;命令來查詢Package中打包的對象類型。

  • object_name:必填。指定Package中對象的名稱。您可以執行describe package project_name.package_name;命令來查詢Package中打包的對象名稱。

  • name:必填。指定用戶或角色的名稱。獲取用戶或角色信息,請參見查看用戶列表查看角色列表

  • table_name:必填。指定表的名稱。您可以執行describe package project_name.package_name;命令來查詢Package中打包的表名稱。

  • column_list:可選。指定列名。多個列名需要用英文逗號(,)分隔。

  • "refobject"="true":必填。表示對Package進行細粒度授權。

  • "refproject"="<project_name>":必填。指定Package所屬MaxCompute項目的名稱。

  • "package"="<package_name>":必填。指定Package的名稱。

LABEL授權

在細粒度授權基礎上,對Package內的表實現按照LABEL授權,用戶只能訪問指定LABEL級別的表數據。

  • 對Package內表資源進行LABEL授權,語法格式如下。

    grant label <number> on table <table_name[(<column_list>)]> to [user|role] <name>[with exp <days>] privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • 查看Package的LABEL授權信息,語法格式如下。

    show label grants on table <table_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
  • 撤銷Package內表資源的LABEL授權,語法格式如下。

    revoke label on table <table_name>[(<column_list>)] from [user|role] <name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");

語法中各參數的含義如下:

  • number:指定安全許可標簽級別,即數據敏感等級。更多安全許可標簽信息,請參見Label權限控制

  • table_name:必填。指定表的名稱。您可以執行describe package project_name.package_name;命令來查詢Package中打包的表名稱。

  • column_list:可選。指定列名。多個列名需要用英文逗號(,)分隔。

  • name:必填。指定用戶或角色的名稱。獲取用戶或角色信息,請參見查看用戶列表查看角色列表

  • days:可選。指定權限有效時長。以天為單位。不指定時,默認過期時間是180天。

  • "refobject"="true":必填。表示對Package進行細粒度授權。

  • "refproject"="<project_name>":必填。指定Package所屬MaxCompute項目的名稱。

  • "package"="<package_name>":必填。指定Package的名稱。

使用示例

基于基于Package跨項目訪問資源中的場景示例,上述兩種授權方式的使用示例如下:

  • 示例1:細粒度授權。由John將Package中sampletable表的讀取表數據權限(Select)授權給Bob。

    use prj2;
    --將sampletable表的讀取表數據權限(Select)授權給Bob。
    grant Select on table sampletable to user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    --查看Package內sampletable表的ACL授權信息。
    show grants on table sampletable privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    --撤銷對Bob的ACL授權。
    revoke Select on table sampletable from user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
  • 示例2:LABEL授權。假設sampletable表有3列(t1、t2、t3),且設置各列的LABEL級別為1、2、3。由John將Package中sampletable表的敏感等級為2的數據授權給Bob,有效時長為7天。

    use prj2;
    --開啟LabelSecurity安全機制。
    set LabelSecurity=true;
    
    --設置各列LABEL級別。
    set label 1 to table sampletable(t1);
    set label 2 to table sampletable(t2);
    set label 3 to table sampletable(t3);
    
    --將sampletable表的敏感等級為2的數據授權給Bob,有效時長為7天。上一示例中Bob已經具備讀取表數據的權限,則通過LABEL授權后,Bob具備讀取t2列數據的權限。
    grant label 2 on table sampletable(t2) to user aliyun$bob@aliyun.com with exp 7 privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    --查看Package內sampletable表的LABEL授權信息。
    show label grants on table sampletable privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    
    --撤銷對Bob的LABEL授權。
    revoke label 2 on table sampletable(t2) from user aliyun$bob@aliyun.com privilegeproperties ("refobject"="true", "refproject"="prj1", "package"="datamining");
    說明

    如果對Package內表資源進行了LABEL授權,則資源提供方授予其他項目使用Package的權限時,需要增加Label和級別的聲明,命令語法規則如下。

    allowproject<project_name>toinstallpackage<package_name>usinglabel<number>;