本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用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) 方法進行跨帳戶授與時,您必須擁有至少具有中指定權限的資料目錄資源策略。必要條件
另請參閱:
-
元數據訪問控制(對於具名資源方法與基於 Lake Formation 標籤的訪問控制(LF-TBAC)方法的討論)。
-
在AWS Glue 開發人員指南中使用AWS Glue主控台上的資料目錄設定
-
在AWS Glue 開發人員指南中授與跨帳戶存取權 (適用於範例資料目錄資源策略)