使用AWS Glue和 Lake Formation 管理跨帳戶權限 - AWS Lake Formation

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

使用AWS Glue和 Lake Formation 管理跨帳戶權限

您可以使用AWS Glue或 AWS Lake Formation授與跨帳戶存取資料目錄資源和基礎資料。

在中AWS Glue,您可以透過建立或更新資料目錄資源策略來授與跨帳戶權限。在 Lake Formation 中,您可以使用 Lake Formation 成權限模型和 Grant Permissions API 操作來授予跨帳戶GRANT/REVOKE權限。

提示

我們建議您僅依賴 Lake Formation 權限來保護您的資料湖。

您可以使用 Lake Formation 控制台或 AWS Resource Access Manager (AWS RAM)控制台查看 Lake Formation 跨帳戶補助。不過,這些主控台頁面不會顯示資AWS Glue料目錄資源原則所授與的跨帳戶權限。同樣地,您可以使用AWS Glue主控台的 [設定] 頁面檢視 [資料目錄] 資源策略中的跨帳戶授與,但該頁面不會顯示使用 Lake Formation 授與的跨帳戶權限。

為了確保您在查看和管理跨帳戶權限時不會錯過任何授權,Lake Formation 並AWS Glue要求您執行以下操作,以指示您已知道並允許 Lake Formation 和的跨帳戶授予。AWS Glue

使用資AWS Glue料目錄資源策略授與跨帳戶權限時

如果您的帳戶 (授與者帳號或生產者帳號) 沒有進行任何用於共用 AWS RAM 資源的跨帳戶授權,您可以在中一如往常儲存資料目錄資源策略。AWS Glue但是,如果已經完成涉及 AWS RAM 資源共用的授權,您必須執行下列其中一項作業,以確保成功儲存資源策略:

  • 當您在主控台的 「設定」 頁面上儲存資源策略時,AWS Glue主控台會發出警示,指出政策中的權限除了使用 Lake Formation 主控台授予的任何權限之外,還會發出警示。您必須選擇 [繼續] 才能儲存原則。

  • 使用 glue:PutResourcePolicy API 作業儲存資源策略時,必須將EnableHybrid欄位設定為 'TRUE' (類型 = 字串)。下面的代碼示例演示了如何在 Python 中做到這一點。

    import boto3 import json REGION = 'us-east-2' PRODUCER_ACCOUNT_ID = '123456789012' CONSUMER_ACCOUNT_IDs = ['111122223333'] glue = glue_client = boto3.client('glue') policy = { "Version": "2012-10-17", "Statement": [ { "Sid": "Cataloguers", "Effect": "Allow", "Action": [ "glue:*" ], "Principal": { "AWS": CONSUMER_ACCOUNT_IDs }, "Resource": [ f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:catalog", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:database/*", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:table/*/*" ] } ] } policy = json.dumps(policy) glue.put_resource_policy(PolicyInJson=policy, EnableHybrid='TRUE')

    如需詳細資訊,請參閱開發人員指南中的PutResourcePolicy 動作 (Python: put_ resource)。AWS Glue

使用 Lake Formation 命名資源方法授予跨帳戶權限時

如果您的帳戶(生產者帳戶)中沒有資料目錄資源策略,則 Lake Formation 跨帳戶授予您照常進行。但是,如果有資料目錄資源策略存在,您必須在其中新增下列陳述式,以允許跨帳戶授權在使用指定的資源方法建立時成功。請以<region>有效的地區名稱和<account-id>您的 AWS 帳戶 ID (生產者帳號 ID) 取代。

{ "Effect": "Allow", "Action": [ "glue:ShareResource" ], "Principal": {"Service": [ "ram.amazonaws.com" ]}, "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ] }

沒有這個額外的聲明,Lake Formation 授予成功,但被阻止 AWS RAM,收件人帳戶無法訪問授予的資源。

重要

使用以 Lake Formation 標籤為基礎的存取控制 (LF-TBAC) 方法進行跨帳戶授與時,您必須擁有至少具有中指定權限的資料目錄資源策略。必要條件

另請參閱: