

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

# 使用 Lake Formation 精細存取控制共用資料湖
<a name="share-dl-fgac-tutorial"></a>

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

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

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

![\[AWS Organization structure with two OUs, showing data lake access and user permissions across accounts.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tutorial-fine-grained-access1.jpg)


**Topics**
+ [目標對象](#tut-share-fine-grained-roles)
+ [先決條件](#tut-share-fine-grained-prereqs)
+ [步驟 1：提供對另一個 帳戶的精細存取](#tut-fgac-another-account)
+ [步驟 2：為相同帳戶中的使用者提供精細存取](#tut-fgac-same-account)

## 目標對象
<a name="tut-share-fine-grained-roles"></a>



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


| 角色 | 描述 | 
| --- | --- | 
| IAM 管理員 | 具有 AWS 受管政策的使用者：AdministratorAccess。 | 
| 資料湖管理員 |  具有 AWS 受管政策的使用者： `AWSLakeFormationDataAdmin` 已連接至角色。  | 
| 資料分析 | 已AmazonAthenaFullAccess連接 AWS 受管政策的使用者：。 | 

## 先決條件
<a name="tut-share-fine-grained-prereqs"></a>

開始本教學課程之前，您必須擁有可用來以具有正確許可的管理使用者身分登入 AWS 帳戶 的 。如需詳細資訊，請參閱[完成初始 AWS 組態任務](getting-started-setup.md#initial-aws-signup)。

本教學課程假設您熟悉 IAM。如需 IAM 的相關資訊，請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。

**在本教學課程中，您需要下列資源：**
+ 兩個組織單位：
  + OU1 – 包含帳戶 A
  + OU2 – 包含帳戶 B
+ 帳戶 A 中的 Amazon S3 資料湖位置 （儲存貯體）。
+ 帳戶 A 中的資料湖管理員使用者。您可以使用 Lake Formation 主控台 ([https://console.aws.amazon.com/lakeformation/](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 name="tut-fgac-another-account"></a>

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

**授予對另一個 帳戶的精細存取權**

1. 在帳戶 A 中的 [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)：// AWS 管理主控台 登入為資料湖管理員。

1. 開啟 Lake Formation 主控台 ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))，然後選擇**開始使用**。

1. 在導覽窗格中，選擇**資料庫**。

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

1. 在**資料庫**詳細資訊區段中，選取**資料庫**。

1. 針對**名稱**，輸入名稱 （在本教學課程中，我們使用 `sampledb01`)。

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

1. 選擇**建立資料庫**。

1. 在**資料庫**頁面上，選擇您的資料庫 `sampledb01`。

1. 在**動作**功能表中，選擇**授予**。

1. 在**授予許可**區段中，選取**外部帳戶**。

1. 針對 AWS 帳戶 ID 或 AWS 組織 ID，在 OU2 中輸入帳戶 B 的帳戶 ID。

1. 針對**資料表**，選擇您希望帳戶 B 能夠存取的資料表 （在此文章中，我們使用資料表 `acc_a_area`)。或者，您可以授予對 資料表中資料欄的存取權，而我們在這篇文章中執行這項操作。

1. 針對**包含資料欄**選擇您希望帳戶 B 有權存取的資料欄 （針對此文章，我們會授予 類型、名稱和識別符的許可）。

1. 針對**資料欄**，選擇**包含資料欄**。

1. 針對**資料表許可**，選取**選取**。

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

1. 選擇 **Grant** (授予)。

1. 在導覽窗格中，選擇 **Tables** (資料表)。

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

**建立資源連結**

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

1. 在帳戶 B 中，以 身分登入 AWS https：//[https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)：//`testuser1`https：//www.healthnet.com。

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

1. 選擇 `acc_a_area` 資料表。

1. 在**動作**功能表中，選擇**建立資源連結**。

1. 針對**資源連結名稱**，輸入名稱 （本教學課程為 `acc_a_area_rl`)。

1. 針對**資料庫**，選擇您的資料庫 (`testdb`)。

1. 選擇 **Create** (建立)。

1. 在導覽窗格中，選擇 **Tables** (資料表)。

1. 選擇 `acc_b_area_rl` 資料表。

1. 在**動作**功能表中，選擇**檢視資料**。

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

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

## 步驟 2：為相同帳戶中的使用者提供精細存取
<a name="tut-fgac-same-account"></a>

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

**將精細存取權授予相同帳戶中的使用者**

1. 在帳戶 B AWS 中的 https：// [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)`testuser1`：//www.microsoft.com/microsoft.microsoft.com/microsoft.com/microsoft.com/

1. 在 Lake Formation 主控台的導覽窗格中，選擇**資料表**。

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

1. 在**授予許可**區段中，選取**我的帳戶**。

1.  針對 **IAM 使用者和 role**̧，選擇使用者 `testuser2`。

1. 針對資料**欄**，選擇資料欄名稱。

1. 針對**資料表許可**，選取**選取**。

1. 選擇 **Grant** (授予)。

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

1. 在**授予許可**區段中，選取**我的帳戶**。

1. 對於 **IAM 使用者和角色**，選取使用者 `testuser2`。

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

1. 選擇 **Grant** (授予)。

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

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