View a markdown version of this page

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

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

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

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

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

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

AWS 組織有兩個帳戶,顯示從帳戶 A 到帳戶 B 使用者的資料湖存取權。

目標對象

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

Role Description
IAM 管理員 具有 AWS 受管政策的使用者:AdministratorAccess。
資料湖管理員

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

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

先決條件

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

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

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

    • OU1 – 包含帳戶 A

    • OU2 – 包含帳戶 B

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

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

  • 帳戶 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://https://console.aws.amazon.com/connect/ AWS 管理主控台 以資料湖管理員身分登入。

  2. 開啟 Lake Formation 主控台 (https://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,在 OU2 中輸入帳戶 B 的帳戶 ID。

  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://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. 選擇建立。

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

  9. 選擇 acc_b_area_rl 資料表。

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

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

    您現在可以在資料表上執行查詢,以查看從帳戶 B 提供存取權給 testuser1 的欄值。

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

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

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

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

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

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

  4. 針對 IAM 使用者和 rolȩ,選擇使用者 testuser2。

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

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

  7. 選擇 Grant (授予)。

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

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

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

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

  11. 選擇 Grant (授予)。

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

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