本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
查詢在 Lake Formation m 註冊的資料的考量和限制
使用 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 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 許可保持一致,以限制存取。如需詳細資訊,請參閱使用工作群組來控制查詢存取和成本。
查詢 CSE _ 註冊 Lake Formation 的KMS加密表
開放式表格格式 (OTF) 表格 (例如 Apache 冰山) 具有下列特性的表格無法向 Athena 查詢:
-
這些表格是以在 Lake Formation 註冊的 Amazon S3 資料位置為基礎。
-
Amazon S3 中的物件會使用用戶端加密 (CSE) 加密。
-
加密使用 AWS KMS 客戶管理的金鑰 (
CSE_KMS
)。
若要查詢使用CSE_KMS
金鑰加密的非OTF資料表),請將下列區塊新增至 AWS KMS 您用於CSE加密的金鑰。<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
權限授予用戶 datalake_user1
AWS 帳戶111122223333
。
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Database": {"Name":"default"}}
若要取得更多資訊,請參閱DESCRIBE中的 AWS Lake Formation 開發人員指南。