使用資料列層級存取控制保護資料湖 - AWS Lake Formation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用資料列層級存取控制保護資料湖

AWS Lake Formation 資料列層級許可可讓您根據資料合規和管理政策,提供對資料表中特定資料列的存取權。如果您有儲存數十億筆記錄的大型資料表,您需要一種方法,讓不同的使用者和團隊僅存取他們允許查看的資料。資料列層級存取控制是保護資料的簡單執行方式,同時讓使用者存取執行其任務所需的資料。Lake Formation 透過識別哪些主體存取了哪些資料、何時存取和通過哪些服務,提供集中式稽核和合規報告。

在本教學課程中,您將了解資料列層級存取控制如何在 Lake Formation 中運作,以及如何設定它們。

本教學課程包含用於快速設定所需資源的 AWS CloudFormation 範本。您可以檢閱並自訂它,以符合您的需求。

目標對象

本教學課程適用於資料管理員、資料工程師和資料分析師。下表列出資料擁有者和資料取用者的角色和責任。

角色 描述
IAM 管理員 可建立使用者和角色以及 Amazon Simple Storage Service (Amazon S3) 儲存貯體的使用者。具有 AdministratorAccess AWS 受管政策。
Data lake 管理員 負責設定資料湖、建立資料篩選條件,以及將許可授予資料分析師的使用者。
資料分析 可針對資料湖執行查詢的使用者。位於不同國家/地區的資料分析師 (針對我們的使用案例,美國和日本) 只能分析位於其國家/地區的客戶的產品評論,而且基於合規原因, 應該看不到位於其他國家/地區的客戶資料。

必要條件

開始本教學課程之前,您必須擁有 AWS 帳戶 可用於以具有正確許可的管理使用者身分登入的 。如需詳細資訊,請參閱完成初始 AWS 組態任務

本教學課程假設您熟悉 IAM。如需 的相關資訊IAM,請參閱 IAM 使用者指南

變更 Lake Formation 設定
重要

啟動 AWS CloudFormation 範本之前,請停用 選項。請依照下列步驟,在 Lake Formation 中僅對新資料庫/資料表使用IAM存取控制

  1. 在美國https://console.aws.amazon.com/lakeformation/東部 (維吉尼亞北部) 區域或美國西部 (奧勒岡) 區域登入 Lake Formation 主控台 。

  2. 在資料型錄下,選擇設定

  3. 取消選取 僅對新資料庫使用IAM存取控制,並僅對新資料庫 中的新資料表使用IAM存取控制

  4. 選擇 Save (儲存)。

步驟 1:佈建資源

本教學課程包含快速設定的 AWS CloudFormation 範本。您可以檢閱並自訂它,以符合您的需求。 AWS CloudFormation 範本會產生下列資源:

  • 使用者和政策:

    • DataLakeAdmin

    • DataAnalyst美國

    • DataAnalystJP

  • Lake Formation 資料湖設定和許可

  • Lambda 函數 (適用於 Lambda 後端 AWS CloudFormation 自訂資源),用於將範例資料檔案從公有 Amazon S3 儲存貯體複製到您的 Amazon S3 儲存貯體

  • 可用作資料湖的 Amazon S3 儲存貯體

  • AWS Glue Data Catalog 資料庫、資料表和分割區

建立您的資源

請依照下列步驟,使用 AWS CloudFormation 範本建立資源。

  1. 在美國東部 (維吉尼亞北部) 的 https://console.aws.amazon.com/cloudformation 登入 AWS CloudFormation 主控台。

  2. 選擇啟動堆疊

  3. 建立堆疊畫面上選擇下一步

  4. 輸入堆疊名稱。

  5. 對於 DatalakeAdminUserNameDatalakeAdminUserPassword,輸入資料湖管理員使用者的IAM使用者名稱和密碼。

  6. 對於 DataAnalystUsUserNameDataAnalystUsUserPassword,輸入您要用於負責美國市場之資料分析師使用者的使用者名稱和密碼的使用者名稱和密碼。

  7. 對於 DataAnalystJpUserNameDataAnalystJpUserPassword,輸入您要的資料分析師使用者使用者名稱和密碼的使用者名稱和密碼,該使用者負責日本市場。

  8. 針對 DataLakeBucketName,輸入資料儲存貯體的名稱。

  9. 對於 DatabaseName, 和 TableName 保留為預設值。

  10. 選擇下一步

  11. 在下一頁,選擇下一個

  12. 檢閱最終頁面上的詳細資訊,然後選取我確認 AWS CloudFormation 可能會建立IAM資源。

  13. 選擇 Create (建立)。

    堆疊建立可能需要一分鐘的時間才能完成。

步驟 2:不含資料篩選條件的查詢

設定環境後,您可以查詢產品評論表。首先查詢不含資料列層級存取控制的資料表,以確保您可以看到資料。如果您是第一次在 Amazon Athena 中執行查詢,則需要設定查詢結果位置。

在沒有資料列層級存取控制的情況下查詢資料表
  1. 登入 Athena 主控台,並以DatalakeAdmin使用者https://console.aws.amazon.com/athena/身分執行下列查詢:

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    下列螢幕擷取畫面顯示查詢結果。此資料表只有一個分割區 product_category=Video,因此每個記錄都是影片產品的檢閱註解。

    Query results showing 10 rows of Amazon product reviews for VHS tapes with various ratings.
  2. 接下來,執行彙總查詢,擷取每個 的記錄總數marketplace

    SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace

    下列螢幕擷取畫面顯示查詢結果。資料marketplace欄有五個不同的值。在後續步驟中,您將使用 marketplace資料欄設定資料列型篩選條件。

    Query results showing marketplace data with total counts for FR, UK, JP, DE, and US.

步驟 3:設定資料篩選條件並授予許可

本教學課程使用兩個資料分析師:一個負責美國市場,另一個負責日本市場。每個分析師都使用 Athena 來分析客戶評論,僅限其特定市場。建立兩個不同的資料篩選條件,一個用於負責美國市場的分析師,另一個用於負責日本市場的分析師。然後,授予分析師各自的許可。

建立資料篩選條件並授予許可
  1. 建立篩選條件以限制對USmarketplace資料的存取。

    1. DatalakeAdmin使用者身分登入美國東部 (維吉尼亞北部) https://console.aws.amazon.com/lakeformation/ 區域的 Lake Formation 主控台。

    2. 選擇資料篩選條件

    3. 選擇建立新的篩選條件

    4. 對於資料篩選條件名稱 ,輸入 amazon_reviews_US

    5. 針對目標資料庫 ,選擇資料庫 lakeformation_tutorial_row_security

    6. 針對目標資料表 ,選擇資料表 amazon_reviews

    7. 對於資料欄層級存取 ,請保留 作為預設值。

    8. 對於 Row 篩選條件表達式 ,輸入 marketplace='US'

    9. 選擇 Create filter (建立篩選條件)

  2. 建立篩選條件以限制對日文marketplace資料的存取。

    1. 資料篩選條件頁面上,選擇建立新篩選條件。

    2. 對於資料篩選條件名稱 ,輸入 amazon_reviews_JP

    3. 針對目標資料庫 ,選擇資料庫 lakeformation_tutorial_row_security

    4. 針對目標資料表 ,選擇 table amazon_reviews

    5. 對於資料欄層級存取 ,請保留 作為預設值。

    6. 對於 Row 篩選條件表達式,輸入 marketplace='JP'

    7. 選擇 Create filter (建立篩選條件)

  3. 接下來,使用這些資料篩選條件將許可授予資料分析師。請依照下列步驟將許可授予美國資料分析師 (DataAnalystUS):

    1. 許可 下,選擇 Data lake 許可

    2. 資料許可 下,選擇授予

    3. 對於主體 ,選擇IAM使用者和角色 ,然後選擇角色 DataAnalystUS

    4. 針對 LF 標籤或目錄資源 ,選擇具名資料目錄資源

    5. 針對 Database (資料庫),輸入 lakeformation_tutorial_row_security

    6. 對於資料表 - 選用 ,選擇 amazon_reviews

    7. 對於資料篩選條件 – 選用 ̧ 選取 amazon_reviews_US

    8. 針對資料篩選條件許可 ,選取選取

    9. 選擇 Grant (授予)。

  4. 請依照下列步驟將許可授予日文資料分析師 (DataAnalystJP):

    1. 許可 下,選擇 Data lake 許可

    2. 資料許可 下,選擇授予

    3. 針對主體 ,選擇IAM使用者和角色 ,然後選擇角色 DataAnalystJP

    4. 針對 LF 標籤或目錄資源 ,選擇具名資料目錄資源

    5. 針對 Database (資料庫),輸入 lakeformation_tutorial_row_security

    6. 對於資料表 - 選用 ,選擇 amazon_reviews

    7. 對於資料篩選條件 – 選用 ̧ 選取 amazon_reviews_JP

    8. 針對資料篩選條件許可 ,選取選取

    9. 選擇 Grant (授予)。

步驟 4:使用資料篩選條件查詢

將資料篩選條件連接至產品檢閱資料表後,請執行一些查詢,並查看 Lake Formation 如何強制執行許可。

  1. DataAnalystUS使用者https://console.aws.amazon.com/athena/身分登入 的 Athena 主控台。

  2. 執行下列查詢以擷取一些記錄,這些記錄會根據我們定義的資料列層級許可進行篩選:

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    下列螢幕擷取畫面顯示查詢結果。

    Query results showing 10 rows of Amazon product reviews data, including marketplace, ratings, and product titles.
  3. 同樣地,請執行查詢來計算每個市集的記錄總數。

    SELECT marketplace , count ( * ) as total_count FROM lakeformation_tutorial_row_security .amazon_reviews GROUP BY marketplace

    查詢結果只會在結果marketplaceUS中顯示 。這是因為僅允許使用者查看marketplace資料欄值等於 的資料列US

  4. 切換至DataAnalystJP使用者並執行相同的查詢。

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    查詢結果只會顯示屬於 JP 的記錄marketplace

  5. 執行查詢以計算每個 的記錄總數marketplace

    SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace

    查詢結果只會顯示屬於 JP 的資料列marketplace

步驟 5:清除 AWS 資源

清除資源

若要避免不必要的 費用 AWS 帳戶,您可以刪除您用於本教學課程 AWS 的資源。