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

數據保護機制

在實際業務處理過程中,用戶可能會同時具備多個項目的訪問權限,此時會存在數據在項目間流轉的安全問題。MaxCompute提供了數據保護機制,支持對數據流出行為進行控制,為項目數據的安全性提供保障。本文為您介紹MaxCompute的數據保護機制以及開啟數據保護機制后數據的流出策略。

背景信息

部分公司對數據安全非常敏感,例如,只允許員工在公司內部進行操作、禁用公司所有電腦上的USB存儲接口。這樣做的目的是禁止員工將敏感數據泄漏出去。在MaxCompute項目中,也會存在用戶將數據流出到項目之外的安全問題。

假設用戶Alice可以同時訪問Project1和Project2,Alice擁有訪問Project1.table1的Select權限,同時也擁有在Project2中CreateTable的權限。在該情況下,如果未設置任何數據保護機制,Alice可以執行如下語句將Project1.table1的數據流出到Project2中,該操作存在數據泄露風險。

create table project2.table2 as select * from project1.table1;

基于上述示例可知,同時在多個MaxCompute項目中擁有訪問權限的用戶,可以執行在權限范圍內允許的跨項目數據操作來流出項目的數據。MaxCompute已提供數據保護機制能力,如果項目中的數據敏感度很高,則需要項目所有者自行設置數據保護機制。

MaxCompute項目的數據保護機制默認為關閉狀態。項目所有者可以在項目中執行set projectProtection=true;命令開啟數據保護機制,項目中的數據流向會得到控制,數據只能流入,不能流出。

注意事項

開啟數據保護機制后,您需要注意:

  • 跨項目的數據訪問操作將失效,因為該操作違背了數據保護機制。如果需要打破機制,例如允許部分數據流出到其他項目,MaxCompute提供了數據流出策略一:設置Exception Policy數據流出策略二:設置TrustedProject兩種方案供您選擇。

  • 數據保護機制是對數據流向的控制,而不是對數據訪問權限的控制。只有在用戶具備數據訪問權限的前提下,控制數據流向才有意義。

  • 基于Package跨項目訪問資源機制與數據保護機制是正交的(相互獨立),但在功能上是相互制約的。在MaxCompute中,Package資源分享優先于數據保護機制。即如果某個對象已通過Package方式為其他項目用戶授予訪問權限,那么該對象不受數據保護機制的限制。

數據流出策略一:設置Exception Policy

項目所有者需要提前規劃Exception Policy,允許指定用戶將指定對象的數據流出至指定項目,所有符合Exception Policy中描述的情形都可以打破數據保護機制。

設置方法

在開啟項目數據保護機制的同時,配置Exception Policy。完成配置后,您可以通過show SecurityConfiguration;命令查看Exception Policy信息。設置Exception Policy的命令如下。

set ProjectProtection=true with exception <policyfile>;

policyfile為Exception Policy文件,內容格式如下,您需要將該文件以TXT格式保存在MaxCompute客戶端安裝路徑的bin目錄下。

    {
    "Version": "1",
    "Statement":
    [{
        "Effect":"Allow",
        "Principal":"<Principal>",
        "Action":["odps:<Action1>[, <Action2>, ...]"],
        "Resource":"acs:odps:*:<Resource>",
        "Condition":{
            "StringEquals": {
                "odps:TaskType":["<Tasktype>"]
            }
        }
    }]
    }

參數

說明

Effect

固定取值為Allow,表示允許數據流出。

Principal

表示允許執行數據流出操作的阿里云賬號或RAM用戶賬號。

Action

表示允許執行的數據流出操作。各類型對象的操作取值信息,請參見項目及項目內對象權限一覽表

Resource

表示允許數據流出的項目及對象。格式為projects/<project_name>/{tables|resources|functions|instances}/<name>更多對象取值信息,請參見項目及項目內對象權限一覽表

Tasktype

表示允許執行的作業類型。取值可以為DT(Tunnel)、SQL、MapReduce。

配置樣例

--開啟數據保護機制并設置Exception Policy。policy_file已存儲在MaxCompute客戶端安裝路徑的bin目錄下。
set ProjectProtection=true with exception policy_file;  
--policy_file內容如下。
{
    "Version": "1",
    "Statement":
    [{
        "Effect":"Allow",
        "Principal":"ALIYUN$Alice@aliyun.com",
        "Action":["odps:Select"],
        "Resource":"acs:odps:*:projects/project_test/tables/table_test",
        "Condition":{
            "StringEquals": {
                "odps:TaskType":["DT", "SQL"]
            }
        }
    }]
    }

該Exception Policy樣例表示允許Alice可以通過SQL作業對表project_test.table_test執行SELECT操作時,將數據流出到project_test項目之外。

說明

如果Alice本身沒有表project_test.table_test的SELECT權限,即使設置了Exception Policy,Alice仍然無法導出數據。

注意事項

設置Exception Policy可能存在TOCTOU(Time-of-Check to Time-of-Use)數據泄露問題(即Race Condition問題):

  • 問題描述

    假設,用戶的數據流出流程如下:

    1. (TOC階段)用戶A向項目所有者申請導出表t1的數據。項目所有者對t1的數據敏感程度進行評估,同意后通過Exception Policy設置A可以導出t1的數據。

    2. 在用戶A導出t1的數據前,其他用戶修改了t1的內容,將敏感數據寫入了t1中。

    3. (TOU階段)用戶A將t1的數據導出。但是,此時導出的t1并不是項目所有者審查過的t1,t1中包含了敏感數據。

  • 解決措施

    為了防止出現TOCTOU問題,對于用戶申請導出的表,建議項目所有者確保沒有任何其他用戶能對該表執行更新(Update)操作或重建同名表操作(Drop + CreateTable)。在上述示例中,為防止出現TOCTOU問題,建議項目所有者在第一步中創建表t1的一個快照,設置Exception Policy時使用這個快照,并且不要為任何用戶授予Admin角色。

數據流出策略二:設置TrustedProject

如果當前項目處于數據保護狀態,當需要支持向目標項目執行數據流出操作時,項目所有者可以將目標項目設置為當前項目的TrustedProject,則此行為不會被視為觸犯數據保護機制。如果多個項目之間兩兩互相設置為TrustedProject,這些項目會形成一個TrustedProject Group,數據可以在TrustedProject Group內流轉,但禁止流出到TrustedProject Group之外。

設置方法

項目所有者可以通過如下命令管理信任項目:

  • 在當前項目中添加一個TrustedProject。

     add trustedproject <project_name>;               
  • 從當前項目中移除一個TrustedProject。

     remove trustedproject <project_name>;            
  • 查看當前項目的所有TrustedProject。

     list trustedprojects;                  

實踐建議

如果要嚴格禁止數據從項目流出,在設置set projectProtection=true;之后,項目所有者還需要檢查如下配置:

  • 執行list trustedprojects; 命令,確保項目中沒有添加TrustedProject。如果有TrustedProject,則需要評估可能存在的風險,對不需要的TrustedProject執行remove trustedproject <project_name>;命令進行刪除。

  • 執行show packages; 命令,確保項目中沒有使用Package分享數據。如果有Package,則需要確保Package中沒有敏感數據,或者對不需要的Package執行delete package <package_name>;命令進行刪除。

  • 項目保護的作用是限制數據流出受保護的項目,場景上與MaxCompute的一些可以跨項目遷移數據的功能產生交集,主要場景如下:

    • create table <其他項目空間的表> as select * from <保護空間的表>

    • insert overwrite table <其他項目空間的表> select * from <保護空間的表>

    • 使用Spark、MR、Graph、Proxima、PAI將表數據寫入其他項目的表中。

    • 使用Tunnel download(包括SDK或JDBC調用Tunnel)將MaxCompute表數據下載至本地。

    • 使用clone table命令將表數據復制到其他項目的表中。

    • 使用UDF將表數據寫入其他項目的表中。

    • 外部表。

  • 項目空間保護是否打開和下載權限控制會產生組合場景,如果需要在各個場景下載,需要的權限如下:

    • 打開項目空間保護,打開download控制:有download權限可以下載,注意除download權限之外還需要describe權限,因為Tunnel下載前會先發起一次describe鑒權。

    • 打開項目空間保護,關閉download控制:有select權限和對下載行為的Exception Policy可以下載。

    • 關閉項目空間保護,打開download控制:有download和describe權限可以下載。

    • 關閉項目空間保護,關閉download控制:有select權限可以下載。