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

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

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

AWS Lake Formation 資料列層級權限可讓您根據資料合規性和控管原則,提供資料表中特定資料列的存取權。如果您有儲存數十億筆記錄的大型資料表,您需要一種方法來讓不同的使用者和團隊只存取允許他們查看的資料。列層級存取控制是保護資料的一種簡單且高效能的方式,同時讓使用者能夠存取執行工作所需的資料。Lake Formation 透過識別哪些主體存取哪些資料、時間和透過哪些服務存取哪些資料,以提供集中式稽核與合規性報告

在本教學課程中,您將學習列層級存取控制在 Lake Formation 中的運作方式,以及如何設定它們。

本教程包括用於快速設置所需資源的 AWS CloudFormation 模板。您可以查看和自定義它以滿足您的需求。

目標對象

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

角色 描述
IAM管理員 可建立使用者和角色以及 Amazon Simple Storage Service (Amazon S3) 貯體的使用者。具有受AdministratorAccess AWS 管策略。
資料湖管理員 負責設定資料湖、建立資料篩選器以及授與權限給資料分析師的使用者。
資料分析 可對資料湖執行查詢的使用者。居住在不同國家/地區的資料分析師(針對我們的使用案例,美國和日本)只能針對位於自己國家/地區的客戶分析產品評論,並且基於法規遵循原因,應該無法查看位於其他國家/地區的客戶資料。

必要條件

在開始本教學課程之前,您必須擁有 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美國

    • DataAnalyst太平紳

  • Lake Formation 數據湖的設置和權限

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

  • 作為我們的資料湖使用的 Amazon S3 儲存貯體

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

建立您的資源

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

  1. 在美國東部 (維吉尼亞北部) 區域的 https://console.aws.amazon.com/cloud formation 登入 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. DatalakeAdmin使用者https://console.aws.amazon.com/athena/身分登入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. 對於列篩選表示式,請輸入marketplace='US'

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

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

    1. 在 [資料篩選] 頁面上,選擇 [建立新篩選器]。

    2. 對於「資料篩選器名稱」,輸入amazon_reviews_JP

    3. 在「目標資料庫」中,選擇資料庫lakeformation_tutorial_row_security

    4. 針對「目標」表格,選擇table amazon_reviews

    5. 對於列級訪問,保留為默認值。

    6. 對於列篩選表示式,請輸入marketplace='JP'

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

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

    1. 在 [權限] 下,選擇 [資料湖權限]。

    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. 在 [權限] 下,選擇 [資料湖權限]。

    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. https://console.aws.amazon.com/athena/DataAnalystUS使用者身分登入 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

    查詢結果僅顯示屬於的記錄JPmarketplace

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

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

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

步驟 5:清理 AWS 資源

清除資源

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