本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Athena 查詢向 Lake Formation 註冊之資料的考量事項與限制
使用 Athena 查詢在 Lake Formation 中註冊的資料時請考慮以下項目。如需其他資訊,請參閱《AWS Lake Formation 開發人員指南》中的 AWS Lake Formation的已知問題。
考量事項與限制
- 在某些情況下,沒有資料欄資料許可的使用者可以看見資料欄中繼資料
- 使用檢視的 Lake Formation 許可
- 支持冰山 DDL
- Lake Formation 精細存取控制和 Athena 工作群組
- Amazon S3 中的 Athena 查詢結果位置未向 Lake Formation 註冊
- 使用 Athena 工作群組限制查詢歷史記錄的存取
- 跨帳戶存取權
- CSE-無法在 Athena 查詢已註冊於 Lake Formation 的 KMS Amazon S3
- 向 Lake Formation 註冊的分割資料位置必須位於資料表子目錄中
- 建立表格,因為選取 (CTAS) 查詢需要 Amazon S3 寫入許可
- 預設資料庫需要DESCRIBE權限
在 Avro 和 custom 的某些情況下,未經授權的用戶可以看到列元數據 SerDe
Lake Formation 資料欄層級授權可防止沒有 Lake Formation 許可的使用者存取資料欄中的資料。不過,在某些情況下,使用者可以存取描述資料表中所有資料欄的中繼資料,包括他們沒有資料許可的資料欄。
當資料行中繼資料儲存在使用 Apache Avro 儲存格式的資料表屬性中,或使用自訂序列化程式/還原序列化程式 (SerDe),其中資料表結構定義與定義一起在資料表屬性中定義時,就會發生這種情況。 SerDe搭配 Lake Formation 使用 Athena 時,我們建議您檢閱向 Lake Formation 註冊的資料表屬性內容,並盡可能限制資料表屬性中所存放的資訊,以防止使用者看到任何敏感中繼資料。
使用檢視的 Lake Formation 許可
對於向 Lake Formation 註冊的資料,Athena 使用者只有在擁有資料表、資料欄,以及來源 Simple Storage Service (Amazon S3) 資料位置 (此為 VIEW
之根據) 之 Lake Formation 許可時,才能建立 VIEW
。在 Athena 中建立 VIEW
之後,Lake Formation 許可即可套用至 VIEW
。資料欄層級許可不適用於 VIEW
。具有 VIEW
的 Lake Formation 許可,但沒有資料表和資料欄許可 (此為檢視之根據) 的使用者,無法使用 VIEW
來查詢資料。不過,具有此混合許可的使用者可以使用陳述式 (例如 DESCRIBE VIEW
、SHOW CREATE VIEW
和 SHOW
COLUMNS
) 來查看 VIEW
中繼資料。因此,請務必針對每個 VIEW
調整 Lake Formation 許可以符合基礎資料表的許可。在資料表中定義的儲存格篩選條件不適用於針對該資料表的 VIEW
。資源連結名稱必須與原始帳戶中的資源名稱相同。在跨帳戶設定中使用檢視時,還會有其他限制。如需有關設定跨帳戶的共用視圖的許可的詳細資訊,請參閱跨帳戶存取資料目錄。
支持冰山 DDL
Athena 目前不支DDL援在已向 Lake Formation 註冊的冰山桌上的操作。嘗試在其中一個 Iceberg 資料表上執行DDL查詢可傳回 Amazon S3 存取遭拒錯誤或失敗並顯示查詢逾時。DDL在冰山資料表上的操作要求使用者能夠直接存取 Amazon S3 存取冰山資料表位置。
Lake Formation 精細存取控制和 Athena 工作群組
同一 Athena 工作群組中的使用者可以看到 Lake Formation 精細存取控制設定為可供工作群組存取的資料。如需有關在 Lake Formation 中使用精細定義存取控制的詳細資訊,請參閱 AWS 大數據部落格中的使用 AWS Lake Formation管理精細定義存取控制
Amazon S3 中的 Athena 查詢結果位置未向 Lake Formation 註冊
Simple Storage Service (Amazon S3) 中的 Athena 查詢結果無法向 Lake Formation 註冊。Lake Formation 許可不會限制對這些位置的存取。除非您限制存取,否則 Athena 使用者可以在沒有 Lake Formation 的資料許可時存取查詢結果檔案和中繼資料。若要避免這種情況,我們建議您使用工作群組來指定查詢結果的位置,並使工作群組成員資格與 Lake Formation 許可保持一致。然後,您可以使用IAM權限原則來限制對查詢結果位置的存取。如需有關查詢結果的詳細資訊,請參閱使用查詢結果和最近的查詢。
使用 Athena 工作群組限制查詢歷史記錄的存取
Athena 查詢歷史記錄會公開已儲存查詢和完整查詢字串的清單。除非您使用工作群組來分隔查詢歷程記錄的存取權限,否則未獲授權在 Lake Formation 中查詢資料的 Athena 使用者可以檢視對該資料執行的查詢字串,包括資料欄名稱、選取準則等。我們建議您使用工作群組來分隔查詢歷程記錄,並使 Athena 工作群組成員資格與 Lake Formation 許可保持一致,以限制存取。如需詳細資訊,請參閱使用工作群組控制查詢存取和成本。
跨帳戶存取資料目錄
若要存取另一個帳戶中的資料目錄,您可以使用 Athena 的跨帳戶 AWS Glue 功能或在 Lake Formation 中設定跨帳戶存取。
Athena 跨帳戶存取資料目錄
您可以使用 Athena 的跨帳戶 AWS Glue 目錄功能,在帳戶中註冊目錄。僅 Athena 引擎版本 2 及更新版本中提供此功能,且僅限於帳戶之間的相同區域使用。如需詳細資訊,請參閱從其他帳戶註冊資料目錄。
如果要共用的資料目錄已在中設定資源策略 AWS Glue,則必須更新該策略,以允許存取帳戶 B AWS Resource Access Manager 並授與使用帳戶 A 的資料目錄的權限,如下列範例所示。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:
<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT-B>
:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] } ] }
如需詳細資訊,請參閱跨帳戶存取 AWS Glue 資料目錄。
在 Lake Formation 中設定跨帳戶存取
AWS Lake Formation 可讓您使用單一帳戶來管理中央資料目錄。您可以使用此功能來實作對資料目錄中繼資料和基礎資料的跨帳戶存取。例如,擁有者帳戶可以授予另一個 (收件人) 帳戶對資料表的 SELECT
許可。
若要在 Athena 查詢編輯器中顯示共用的資料庫或資料表,您需在 Lake Formation 中對共用的資料庫或資料表建立資源連結。當 Lake Formation 中的收件者帳戶查詢擁有者的資料表時,會將資料存取事件CloudTrail新增至收件者帳戶和擁有者帳戶的記錄中。
如需共用視圖,請謹記下列要點:
-
在目標資源連結上執行,而不是來源資料表或視圖上執行查詢,然後將輸出共用到目標帳戶。
-
僅共用視圖並不足夠。建立視圖所涉及的所有資料表必須是跨帳戶共用的一部分。
-
在共用資源上建立的資源連結的名稱必須與擁有者帳戶中的資源名稱相符。如果名稱不匹配,則出現錯誤消息,如分析存儲視圖「awsdata atalog
失敗」。
發生。my-lf-resource-link
.my-lf-view
': 第 3:3 行:綱要schema_name
不存在
如需有關在 Lake Formation 中跨帳戶存取的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的以下資源:
CSE-在 Lake Formation 註冊的KMS加密 Amazon S3 位置
開放式表格格式 (OTF) 表格 (例如 Apache 冰山) 具有下列特性的表格無法向 Athena 查詢:
-
這些表格是以在 Lake Formation 註冊的 Amazon S3 資料位置為基礎。
-
Amazon S3 中的物件會使用用戶端加密 (CSE) 加密。
-
加密使用 AWS KMS 客戶管理的金鑰 (
CSE_KMS
)。
若要查詢使用CSE_KMS
金鑰加密的非OTF資料表),請將下列區塊新增至您用於CSE加密的 AWS KMS 金鑰政策中。<KMS_KEY_ARN>
是加ARN密資料的 AWS KMS 金鑰。<IAM-ROLE-ARN>
是在 ARN Lake Formation 中註冊 Amazon S3 位置的IAM角色。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "
<KMS-KEY-ARN>
", "Condition": { "ArnLike": { "aws:PrincipalArn": "<IAM-ROLE-ARN>
" } } }
向 Lake Formation 註冊的分割資料位置必須位於資料表子目錄中
向 Lake Formation 註冊的分割資料表必須在目錄中擁有分割資料,這些目錄是 Simple Storage Service (Amazon S3) 中資料表的子目錄。例如,具有 s3://amzn-s3-demo-bucket/mytable
位置和分割區 s3://amzn-s3-demo-bucket/mytable/dt=2019-07-11
、s3://amzn-s3-demo-bucket/mytable/dt=2019-07-12
等的資料表,可以向 Lake Formation 註冊並使用 Athena 進行查詢。另一方面,位置 s3://amzn-s3-demo-bucket/mytable
的資料表和位於 s3://amzn-s3-demo-bucket/dt=2019-07-11
、s3://amzn-s3-demo-bucket/dt=2019-07-12
等的分割區,無法向 Lake Formation 註冊。此類分割區不是 s3://amzn-s3-demo-bucket/mytable
的子目錄,因此也無法從 Athena 讀取。
建立表格,因為選取 (CTAS) 查詢需要 Amazon S3 寫入許可
建立表格為陳述式 (CTAS) 需要對表格 Amazon S3 位置的寫入存取權。若要對在 Lake Formation 註冊的資料執行CTAS查詢,Athena 使用者除了具有讀取資料位置的適當 Lake Formation 許可之外,還必須擁有IAM寫入資料表 Amazon S3 位置的權限。如需詳細資訊,請參閱從查詢結果建立資料表 (CTAS)。
預設資料庫需要DESCRIBE權限
需要在default
數據庫上獲得 Lake Formation DESCRIBE
許可,以便 Lake Formation 可以查看它。下列範例 AWS CLI 命令會將default
資料庫的DESCRIBE
權限授與 AWS 帳戶datalake_user1
中的使用者111122223333
。
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Database": {"Name":"default"}}
如需詳細資訊,請參閱DESCRIBE開AWS Lake Formation 發人員指南中的。