如何使用 AWS Lake Formation 跨帳戶共用 AWS Glue Data Catalog 資料庫和資料表?

4 分的閱讀內容
0

我想使用 AWS Lake Formation 跨帳戶共用 AWS Glue Data Catalog 資料庫和資料表。

解決方法

透過 Lake Formation 的跨帳戶功能,您可以授予其他 AWS 帳戶存取權,使其能將資料寫入資料湖,並與資料湖共用資料。可以透過以標籤為基礎的存取控制或命名資源,來共用這些資源。本文重點說明如何使用命名資源方法,授予跨帳戶存取 Data Catalog 資源的權限。

確定已符合先決條件

在與其他帳戶共用 Data Catalog 資源或存取來自其他帳戶的共用資源之前,請記住以下先決條件:

撤銷 Lake Formation 權限

撤銷 IAMAllowedPrincipals 群組對 Data Catalog 資源的所有 Lake Formation 權限。

禁止新資料表擁有「超級」權限

對於包含您可能共用資料表的 Data Catalog 資料庫,請禁止新資料表對 IAMAllowedPrincipals 預設授予超級權限:

  1. 開啟 Lake Formation 主控台
  2. 在導覽窗格的 Data Catalog下,選擇 Databases (資料庫)。
  3. 選取您要更新的資料庫。
  4. 選擇 Actions (動作),然後選擇 Edit (編輯)。
  5. Default permissions for newly created tables (新建立資料表的預設權限) 下,清除 Use only IAM access control for new tables in this database (僅對此資料庫中的新資料表使用 IAM 存取控制)。
  6. 選擇 Save (儲存)。

如需相關資訊,請參閱 Super

新增跨帳戶存取所需的權限

如果帳戶中已啟用 AWS Glue Data Catalog 資源政策,則您可以移除該政策,或向該政策新增跨帳戶授權所需的新權限。以下是提供從帳戶 1111222233334444 到帳戶 5555666677778888 的跨帳戶 AWS Glue 存取權的資源政策範例。

如需詳細資訊,請參閱授予跨帳戶存取權

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

允許與組織共用

如果 Data Catalog 資源在組織之間共用,則可以使用 AWS RAM 主控台啟用與 AWS Organizations 的共用。啟用此選項的 AWS Identity and Access Management (IAM) 使用者或角色必須具有 ram:EnableSharingWithAwsOrganization IAM 權限。

如需詳細資訊,請參閱跨帳戶存取先決條件

授予所需的 IAM 權限

**來源帳戶:**若要使用命名資源方法授予跨帳戶權限,您必須擁有 AWS Glue 和 AWS Resource Access Manager (AWS RAM) 所需的 IAM 權限。您可以選擇授予這些權限的 AWS 受管政策 **AWSLakeFormationCrossAccountManager **,或根據此政策建立新政策。

目標帳戶: 目標帳戶中的資料湖管理員必須具有以下附加政策。此政策可讓管理員接受 AWS RAM 資源共用邀請,並啟用與組織的資源共用:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

注意: 接收 AWS RAM 資源共用邀請的 IAM 使用者或角色必須具有 glue:PutResourcePolicy 所需的 IAM 權限。

與目標帳戶共用資料庫及其資料表

若要與不屬於組織的目標帳戶共用資料庫以及資料庫中的所有資料表,請執行下列操作:

注意: 如果您共用來源帳戶中資料庫的所有資料表,則來源帳戶中任何新建立的資料表都會自動與目標帳戶共用。

在來源帳戶中,執行下列操作:

  1. 開啟 Lake Formation 主控台,並以資料湖管理員身分登入。
  2. 在導覽窗格中,選擇 Databases (資料庫)。
  3. 選取您要共用的資料庫。
  4. 選擇 Actions (動作),然後選擇 Grant (授予)。
  5. 選取 External accoun (外部帳戶)。
  6. AWS account ID or AWS organization ID (AWS 帳戶識別碼或 AWS 組織識別碼) 中,輸入目標帳戶的帳戶識別碼。
  7. Table (資料表),請務必選取 All tables (所有資料表)。
  8. Table permissions (資料表權限) 和 Grantable permissions (可授予權限),選擇您要授予的存取權限。
  9. 選擇 Grant (授予)。

在目標帳戶中,執行下列操作:

  1. 開啟 AWS 記憶體主控台
  2. 在導覽窗格中的 Shared with me (與我共用) 下,選擇 Resource shares (資源共用)。
  3. 查看您已獲得存取權的資源共用清單。
  4. 若要接受來自來源帳戶的共用資源邀請,請選擇資源共用識別碼,然後選擇 Accept resource share (接受資源共用)。
  5. 開啟 Lake Formation 主控台
  6. 在導覽窗格中,選擇 Databases (資料庫)。
    您可以在清單中查看共用資料庫。此資料庫的擁有者帳戶識別碼顯示的是來源帳戶的帳戶識別碼。
  7. 選取共用資料庫,然後選擇 Actions (動作)。
  8. 選擇 Create resource link (建立資源連結)。
  9. Create resource link (建立資源連結) 頁面中,執行以下操作:
    Resource link name (資源連結名稱) 中,輸入資源連結的名稱。
    對於 Shared database (共用資料庫),請確保已選取共用資料庫的名稱。
    Shared database's owner ID (共用資料庫的擁有者識別碼) 中,輸入來源帳戶的帳戶識別碼。
  10. 選擇 Create (建立)。
    資源連結已建立。

資源連結是 Data Catalog 物件,它們會連結到中繼資料資料庫和資料表,通常是連結到其他 AWS 帳戶的共用資料庫和資料表。它們有助於實現對資料湖中資料的跨帳戶存取。建立資源連結後,您可以使用資料湖管理員存取權查詢共用資料庫中的資料表。

若要向 IAM 使用者/主體授予共用資料庫的存取權,請授予資源連結和共用資料庫所需的權限。這可讓 IAM 使用者/主體在其 Lake Formation 主控台中查看共用資料庫和資源連結。IAM 使用者也可以在其 Amazon Athena 主控台或 Amazon Redshift Spectrum 中查看資料庫和資源連結。

若要授予 IAM 使用者資源連結的存取權,請執行下列操作:

  1. 開啟 Lake Formation 主控台,並以資料湖管理員身分登入。
  2. 在導覽窗格中,選擇 Databases (資料庫)。
  3. 選取您建立的資源連結。
  4. 選擇 Actions (動作),然後選擇 Grant (授予)。
  5. Principals (主體) 下,選取 IAM users and roles (IAM 使用者和角色)。
  6. IAM users and roles (IAM 使用者和角色) 中,選取您需要授予存取權的 IAM 使用者或主體。
  7. Resource link permissions (資源連結權限) 下,選取 Describe (描述)。
  8. 選擇 Grant (授予)。

若要授予 IAM 使用者共用資料庫的存取權,請執行下列操作:

  1. 開啟 Lake Formation 主控台,並以資料湖管理員身分登入。
  2. 在導覽窗格中,選擇 Databases (資料庫)。
  3. 選取共用資料庫。
  4. 選擇 Actions (動作),然後選擇 Grant (授予)。
  5. 在 Principals (主體) 下,選取 IAM users and roles (IAM 使用者和角色)。
  6. 在 IAM users and roles (IAM 使用者和角色) 中,選取您需要授予存取權的 IAM 使用者或主體。
  7. Database permissions (資料庫權限) 下,選取 Database permissions (描述)。
    注意: 此步驟為使用者提供查看共用資料庫的最低權限。
  8. 選擇 Grant (授予)。

若要授予對資料庫中所有或特定資料表的存取權,請選擇 All tables (所有資料表) 選項:

  1. 選取資源連結。
  2. 選擇 Actions (動作),然後選擇 Grant (授予)。
  3. 選取 IAM users and roles (IAM 使用者和角色)。
  4. IAM users and roles (IAM 使用者和角色),選擇您要授予存取權的使用者/主體。
  5. LF-Tags or catalog resources (LF-Tags 或目錄資源下),執行下列操作:
    若要授予資料庫中所有資料表的存取權,請在 Tables - optional (資料表 - 選用) 中選擇 All tables (所有資料表)。
    若要僅授予資料庫中特定資料表的存取權,請在 Tables - optional (資料表 - 選用) 中選擇所需的資料表。
  6. Table permissions (資料表權限) 和 Grantable permissions (可授予權限) 中,選取 Select (選取) 和 Describe (描述)。
  7. 選擇 Grant (授予)。

**注意:**您只能授予在來源帳戶中,在 Grantable permissions (可授予權限) 中選擇的那些權限。

授予所需權限後,您可以從目標帳戶成功查詢 Athena 中的資料表。

只與目標帳戶共用資料表

若要與目標帳戶共用個別資料表,請依照上一節的說明進行下列變更。

來源帳戶:

若要從 Lake Formation 主控台授予對目標帳戶的存取權,請選取各個資料表,而不是選取資料庫。

目標帳戶:

  • 在 AWS RAM 主控台中接受資源共用,以在 Lake Formation 主控台中存取共用資料表。
  • 為共用資料表建立資源連結。建立資源連結後,您可以使用資料湖管理員存取權查詢共用資料表。
  • 若要授予 IAM 使用者/主體對共用資料表的存取權,您必須授予資源連結的權限。

查看其他考量

  • 當您授予資料表的權限時,您可以限制僅對資料表中特定欄的存取權。如果這樣做,目標帳戶將只能查看共用資料表中的那些欄。
  • 請確認目標帳戶中的 IAM 使用者/主體有權存取來源帳戶中的 Amazon Simple Storage Service (Amazon S3) 路徑。
  • 如果您撤銷之前從來源帳戶授予的權限,則目標帳戶將無法存取共用資料庫/資料表。但是,您在目標帳戶中建立的資源連結不會自動刪除。您必須手動刪除資源連結。
  • 當您刪除資料庫/資料表時,AWS RAM 中的資源共用不會自動刪除。因此,在刪除共用資料庫或資料表之前,您必須手動撤銷跨帳戶權限。

相關資訊

查看共用 Data Catalog 資料表和資料庫

建立資源連結

授予資料位置權限 (外部帳戶)

授予和撤銷對 Data Catalog 資源的權限

AWS Lake Formation 跨帳戶功能的運作方式

AWS 官方
AWS 官方已更新 3 年前