使用 Lake Formation 精細存取控制共用資料湖 - AWS Lake Formation

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

使用 Lake Formation 精細存取控制共用資料湖

本教學課程 step-by-step 說明如何 AWS 帳戶 在使用 管理多個時,使用 Lake Formation 快速輕鬆地共用資料集 AWS Organizations。您可以定義精細的許可,以控制對敏感資料的存取。

下列程序也會顯示帳戶 A 的資料湖管理員如何為帳戶 B 提供精細存取,以及帳戶 B 中的使用者如何擔任資料管理員,為其帳戶中的其他使用者授予精細存取共用資料表。每個帳戶中的資料管理員可以獨立將存取權委派給自己的使用者,為每個團隊或業務單位 (LOB) 提供自主權。

使用案例假設您正在使用 AWS Organizations 來管理您的 AWS 帳戶。一個組織單位 (OU1) 中帳戶 A 的使用者授予 中帳戶 B 使用者的存取權OU2。您可以在不使用 Organizations 時使用相同的方法,例如只有幾個帳戶時。下圖說明資料湖中資料集的精細存取控制。資料湖可在帳戶 A 中使用。帳戶 A 的資料湖管理員為帳戶 B 提供精細的存取。圖表也顯示帳戶 B 的使用者提供帳戶 A 資料湖資料表的資料欄層級存取給帳戶 B 中的其他使用者。

AWS Organization structure with two OUs, showing data lake access and user permissions across accounts.

目標對象

本教學課程適用於資料管理員、資料工程師和資料分析師。下表列出本教學課程中使用的角色:

角色 描述
IAM 管理員 具有 AWS 受管政策的使用者:AdministratorAccess
Data lake 管理員

具有 AWS 受管政策的使用者: AWSLakeFormationDataAdmin 已連接至 角色。

資料分析 具有 AWS 受管政策的使用者:AmazonAthenaFullAccess已連接。

必要條件

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

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

您需要下列資源才能進行本教學課程:
  • 兩個組織單位:

    • OU1 – 包含帳戶 A

    • OU2 – 包含帳戶 B

  • 帳戶 A 中的 Amazon S3 資料湖位置 (儲存貯體)。

  • 帳戶 A 中的資料湖管理員使用者。您可以使用 Lake Formation 主控台 (https://console.aws.amazon.com/lakeformation/) 或 Lake Formation PutDataLakeSettings的操作來建立資料湖管理員API。

  • 帳戶 A 中設定的 Lake Formation,以及在帳戶 A 中向 Lake Formation 註冊的 Amazon S3 資料湖位置。

  • 帳戶 B 中的兩名使用者具有下列IAM受管政策:

    • testuser1 – 已AWSLakeFormationDataAdmin連接 AWS 受管政策。

    • testuser2 – 已AmazonAthenaFullAccess連接 AWS 受管政策。

  • 帳戶 B Lake Formation 資料庫中的資料庫 testdb。

步驟 1:提供對另一個帳戶的精細存取

了解帳戶 A 的資料湖管理員如何為帳戶 B 提供精細的存取。

授予對另一個帳戶的精細存取權
  1. 在帳戶 A https://console.aws.amazon.com/connect/中以資料湖管理員身分登入 AWS Management Console 。

  2. 開啟 Lake Formation 主控台 (https://console.aws.amazon.com/lakeformation/),然後選擇開始使用

  3. 在導覽窗格中,選擇資料庫

  4. 選擇 Create database (建立資料庫)。

  5. 資料庫詳細資訊區段中,選取資料庫

  6. 對於名稱 ,輸入名稱 (在本教學課程中,我們使用 sampledb01)。

  7. 請確定未選取此資料庫中的新資料表僅使用IAM存取控制。離開此未選取允許我們控制 Lake Formation 的存取。

  8. 選擇建立資料庫

  9. 資料庫頁面上,選擇您的資料庫 sampledb01

  10. 動作功能表中,選擇授予

  11. 授予許可區段中,選取外部帳戶

  12. 針對 AWS 帳戶 ID 或 AWS 組織 ID,在 中輸入帳戶 B 的帳戶 IDOU2。

  13. 對於,選擇您希望帳戶 B 能夠存取的資料表 (在此文章中,我們使用資料表 acc_a_area)。或者,您可以授予對資料表中資料欄的存取權,而我們在此文章中執行此作業。

  14. 針對包含資料欄 ̧ 選擇您希望帳戶 B 能夠存取的資料欄 (針對此文章,我們授予輸入、名稱和識別符的許可)。

  15. 對於資料欄 ,選擇包含資料欄

  16. 針對資料表許可 ,選取選取

  17. 針對許可許可 ,選取選取 。需要准許許可,因此帳戶 B 中的管理員使用者可以將許可授予帳戶 B 中的其他使用者。

  18. 選擇 Grant (授予)。

  19. 在導覽窗格中,選擇 Tables (資料表)。

  20. 您可以在具有存取的 AWS 帳戶 和 AWS 組織中看到一個作用中連線。

建立資源連結

Amazon Athena 等整合服務無法直接跨帳戶存取資料庫或資料表。因此,您需要建立資源連結,以便 Athena 可以存取您帳戶中的資源連結到其他帳戶中的資料庫和資料表。建立資料表 (acc_a_area) 的資源連結,讓帳戶 B 使用者可以使用 Athena 查詢其資料。

  1. 在帳戶 B https://console.aws.amazon.com/connect/中以 登入 AWS 主控台testuser1

  2. 在 Lake Formation 主控台 (https://console.aws.amazon.com/lakeformation/) 的導覽窗格中,選擇資料表 。您應該會看到帳戶 A 提供存取權的資料表。

  3. 選擇 acc_a_area 資料表。

  4. 動作功能表中,選擇建立資源連結

  5. 針對資源連結名稱 ,輸入名稱 (本教學課程為 acc_a_area_rl)。

  6. 針對資料庫 ,選擇您的資料庫 (testdb)。

  7. 選擇 Create (建立)。

  8. 在導覽窗格中,選擇 Tables (資料表)。

  9. 選擇 acc_b_area_rl 資料表。

  10. 動作功能表中,選擇檢視資料

    系統會將您重新導向至 Athena 主控台,其中您應該會看到資料庫和資料表。

    您現在可以在資料表上執行查詢,以查看從帳戶 B 為測試使用者 1 提供存取權的欄值。

步驟 2:為相同帳戶中的使用者提供精細的存取

本節顯示 帳戶 B (testuser1) 中的使用者作為資料管理員,如何為相同帳戶中的另一個使用者 (testuser2) 提供對共用資料表 中資料欄名稱的精細存取aac_b_area_rl

將精細存取權授予相同帳戶中的使用者
  1. 在帳戶 B https://console.aws.amazon.com/connect/中以 登入 AWS 主控台testuser1

  2. 在 Lake Formation 主控台的導覽窗格中,選擇資料表

    您可以透過資料表的資源連結授予許可。若要這樣做,請在資料表頁面上,選取資源連結 acc_b_area_rl,然後在動作功能表中,選擇目標 上的授予

  3. 授予許可區段中,選取我的帳戶

  4. 針對IAM使用者和角色 ̧ 選擇使用者 testuser2

  5. 針對資料欄 ,選擇資料欄名稱。

  6. 針對資料表許可 ,選取選取

  7. 選擇 Grant (授予)。

    當您建立資源連結時,只有您可以檢視和存取它。若要允許帳戶中的其他使用者存取資源連結,您需要授予資源連結本身的許可。您需要授予 DESCRIBEDROP 許可。在資料表頁面 上,再次選取您的資料表,然後在動作功能表中選擇授予

  8. 授予許可區段中,選取我的帳戶

  9. 針對IAM使用者和角色 ,選取使用者 testuser2

  10. 針對資源連結許可 ̧ 選取描述

  11. 選擇 Grant (授予)。

  12. 以 登入帳戶 B 中的 AWS 主控台testuser2

    在 Athena 主控台 (https://console.aws.amazon.com/athena/) 上,您應該會看到資料庫和資料表 acc_b_area_rl。您現在可以在資料表上執行查詢,以查看testuser2可存取的資料欄值。