View a markdown version of this page

Amazon EMR 搭配 Lake Formation 的考量事項 - Amazon EMR

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

Amazon EMR 搭配 Lake Formation 的考量事項

Amazon EMR with Lake Formation 適用於所有可用區域

適用於 7.9 版及更早版本的 Amazon EMR with Lake Formation 考量事項

在 EMR 7.9 和舊版 AWS Lake Formation 上使用 時,請考慮下列事項。

  • 資料列、資料欄和儲存格層級的精細存取控制適用於 Amazon EMR 版本 6.15 及更高版本的叢集。

  • 有權存取資料表的使用者可以存取該資料表的所有屬性。如果您對某資料表具有 Lake Formation 型存取控制,請檢閱此資料表以確保屬性不包含任何敏感資料或資訊。

  • 在 Spark 收集資料表統計資料時,具有 Lake Formation 的 Amazon EMR 叢集不支援 Spark 備援至 HDFS。這通常有助於優化查詢效能。

  • 支援基於 Lake Formation 與非控管 Apache Spark 資料表之存取控制的操作包括 INSERT INTOINSERT OVERWRITE

  • 支援基於 Lake Formation 與 Apache Spark 和 Apache Hive 的存取控制的操作包括 SELECTDESCRIBESHOW DATABASESHOW TABLESHOW COLUMNSHOW PARTITION

  • Amazon EMR 不支援下列 Lake Formation 型操作的存取控制:

    • 寫入受控管資料表

    • Amazon EMR 不支援 CREATE TABLE。Amazon EMR 6.10.0 及更高版本支持 ALTER TABLE

    • INSERT 命令以外的 DML 陳述式。

  • 使用和不使用 Lake Formation 型存取控制的相同查詢之間存在效能差異。

  • 您只能將 Amazon EMR 與 Lake Formation for Spark 任務搭配使用。

  • Glue Data Catalog 中的多目錄階層不支援受信任身分傳播。如需詳細資訊,請參閱在 Glue Data Catalog AWS 中使用多目錄階層

適用於 7.10 版及更新版本的 Amazon EMR with Lake Formation 考量事項

在 EMR 7.10 和更新版本 AWS Lake Formation 上使用 Amazon EMR 搭配 時,請考慮下列事項。

  • Amazon EMR 僅支援透過 Lake Formation 對 Apache Hive、Apache Iceberg、Apache Delta 和 Apache Hudi 資料表進行精細存取控制。Apache Hive 格式包括 Parquet、ORC 和 xSV CSV。

  • 對於已啟用 Lake Formation 的應用程式,Spark 日誌會以兩個群組寫入 Amazon S3:系統空間日誌和使用者空間日誌。系統空間日誌可能包含敏感資訊,例如完整資料表結構描述。為了保護此資料,Amazon EMR 會將系統空間日誌存放在與使用者空間日誌不同的位置。強烈建議帳戶管理員不要授予使用者存取系統空間日誌的權限。

  • 如果您向 Lake Formation 註冊資料表位置,資料存取將僅由用於註冊的角色許可控制,而不是由 Amazon EMR 任務執行期角色控制。如果註冊角色設定錯誤,嘗試存取資料表的任務將會失敗。

  • 您無法關閉 Lake Formation DynamicResourceAllocation 任務。

  • 只能將 Lake Formation 與 Spark 任務搭配使用。

  • Amazon EMR with Lake Formation 僅支援整個任務的單一 Spark 工作階段。

  • Amazon EMR with Lake Formation 僅支援透過資源連結共用的跨帳戶資料表查詢。

  • 不支援下列內容:

    • 彈性分散式資料集 (RDD)

    • Spark 串流

    • 使用 Lake Formation 授權的許可進行寫入

    • 巢狀資料欄的存取控制

  • Amazon EMR 會封鎖可能會破壞系統驅動程式完整隔離的功能,包括下列項目:

    • UDT、HiveUDF 以及任何涉及自訂類別的使用者定義的函數

    • 自訂資料來源

    • 為 Spark 延伸模組、連接器或中繼存放區提供額外的 jar

    • ANALYZE TABLE 命令

  • 為了強制執行存取控制,諸如 DESCRIBE TABLEEXPLAIN PLAN 和 DDL 操作不會公開限制資訊。

  • Amazon EMR 限制對已啟用 Lake Formation 之應用程式上的系統驅動程式 Spark 日誌的存取。由於系統驅動程式以更高的許可執行,因此系統驅動程式產生的事件和日誌可能包含敏感資訊。為了防止未經授權的使用者或程式碼存取此敏感資料,Amazon EMR 會停用對系統驅動程式日誌的存取。

    系統設定檔日誌一律保留在受管儲存中 – 這是無法停用的強制性設定。這些日誌會使用客戶受管 KMS 金鑰或 AWS 受管 KMS 金鑰安全地儲存和加密。

    如果您的 Amazon EMR 應用程式位於具有 Amazon S3 VPC 端點的私有子網路中,且您連接端點政策來控制存取,則在任務將日誌資料傳送至 AWS Managed Amazon S3 之前,您必須將 VPC 政策中受管儲存中詳述的許可納入 S3 閘道端點。如需故障診斷請求,請聯絡 AWS 支援。

  • 如果您已向 Lake Formation 註冊資料表位置,無論 Amazon EMR 任務執行時間角色的 IAM 許可為何,資料存取路徑都會經過 Lake Formation 儲存的登入資料。如果您錯誤設定向資料表位置註冊的角色,則使用對該資料表具有 S3 IAM 許可的角色提交的任務將會失敗。

  • 寫入 Lake Formation 資料表會使用 IAM 許可,而非 Lake Formation 授予的許可。如果您的任務執行時期角色具有必要的 S3 許可,則可以使用其來執行寫入操作。

以下是使用 Apache Iceberg 時的考量與限制:

  • 只能將 Apache Iceberg 與工作階段目錄搭配使用,不能與任意命名目錄搭配使用。

  • 在 Lake Formation 中註冊的 Iceberg 資料表僅支援中繼資料資料表 historymetadata_log_entriessnapshotsfilesmanifestsrefs。Amazon EMR 隱藏可能具有敏感資料的資料欄,例如 partitionspathsummaries。此限制不適用於未在 Lake Formation 中註冊的 Iceberg 資料表。

  • 未在 Lake Formation 中註冊的資料表支援所有 Iceberg 儲存的程序。所有資料表都不支援 register_tablemigrate 程序。

  • 建議您使用 Iceberg DataFrameWriterV2 而非 V1。

適用於 7.12 版及更新版本的 Amazon EMR with Lake Formation 考量事項

一般

搭配 Amazon EMR 使用 Lake Formation 時,請檢閱下列限制。

  • 您無法關閉 Lake Formation DynamicResourceAllocation 任務。

  • 只能將 Lake Formation 與 Spark 任務搭配使用。

  • Amazon EMR with Lake Formation 僅支援整個任務的單一 Spark 工作階段。

  • Amazon EMR with Lake Formation 僅支援透過資源連結共用的跨帳戶資料表查詢。

  • 不支援下列內容:

    • 彈性分散式資料集 (RDD)

    • Spark 串流

    • 巢狀資料欄的存取控制

  • Amazon EMR 會封鎖可能會破壞系統驅動程式完整隔離的功能,包括下列項目:

    • UDT、HiveUDF 以及任何涉及自訂類別的使用者定義的函數

    • 自訂資料來源

    • 為 Spark 延伸模組、連接器或中繼存放區提供額外的 jar

    • ANALYZE TABLE 命令

  • 如果您的 Amazon EMR 應用程式位於具有 Amazon S3 VPC 端點的私有子網路中,且您連接端點政策來控制存取,則在任務將日誌資料傳送至 AWS Managed Amazon S3 之前,您必須將 VPC 政策中受管儲存中詳述的許可納入 S3 閘道端點。如需故障診斷請求,請聯絡 AWS 支援。

  • 從 Amazon EMR 7.9.0 開始,Spark FGAC 在與 s3a:// 方案搭配使用時支援 S3AFileSystem。

  • Amazon EMR 7.11 支援使用 CTAS 建立受管資料表。

  • Amazon EMR 7.12 支援使用 CTAS 建立受管資料表和外部資料表。

許可

  • 為了強制執行存取控制,EXPLAIN PLAN 和 DDL 操作,例如 DESCRIBE TABLE 不會公開限制資訊。

  • 當您向 Lake Formation 註冊資料表位置時,資料存取會使用 Lake Formation 儲存的登入資料,而不是 EMR Serverless 任務執行期角色的 IAM 許可。如果資料表位置的註冊角色設定錯誤,即使執行時間角色具有該位置的 S3 IAM 許可,任務也會失敗。

  • 從 Amazon EMR 7.12 開始,您可以使用 DataFrameWriter (V2) 搭配附加模式中的 Lake Formation 憑證來寫入現有的 Hive 和 Iceberg 資料表。對於覆寫操作或建立新資料表時,EMR 會使用執行時間角色登入資料來修改資料表資料。

  • 使用檢視或快取資料表做為來源資料時,適用下列限制 (這些限制不適用於 AWS Glue Data Catalog 檢視):

    • 對於 MERGE、DELETE 和 UPDATE 操作

      • 支援:使用檢視和快取資料表做為來源資料表。

      • 不支援:在指派和條件子句中使用檢視和快取資料表。

    • 對於建立或取代和取代資料表做為 SELECT 操作:

      • 不支援:使用檢視和快取資料表做為來源資料表。

  • 只有在啟用刪除向量時,來源資料中具有 UDFs Delta Lake 資料表才支援 MERGE、DELETE 和 UPDATE 操作。

日誌和偵錯

  • Amazon EMR 限制對已啟用 Lake Formation 之應用程式上的系統驅動程式 Spark 日誌的存取。由於系統驅動程式以更高的許可執行,因此系統驅動程式產生的事件和日誌可能包含敏感資訊。為了防止未經授權的使用者或程式碼存取此敏感資料,Amazon EMR 會停用對系統驅動程式日誌的存取。

    系統設定檔日誌一律保留在受管儲存中 – 這是無法停用的強制性設定。這些日誌會使用客戶受管 KMS 金鑰或 AWS 受管 KMS 金鑰安全地儲存和加密。

Iceberg

使用 Apache Iceberg 時,請檢閱下列考量事項:

  • 只能將 Apache Iceberg 與工作階段目錄搭配使用,不能與任意命名目錄搭配使用。

  • 在 Lake Formation 中註冊的 Iceberg 資料表僅支援中繼資料資料表 historymetadata_log_entriessnapshotsfilesmanifestsrefs。Amazon EMR 隱藏可能具有敏感資料的資料欄,例如 partitionspathsummaries。此限制不適用於未在 Lake Formation 中註冊的 Iceberg 資料表。

  • 未在 Lake Formation 中註冊的資料表支援所有 Iceberg 預存程序。所有資料表都不支援 register_tablemigrate 程序。

  • 我們建議您使用 Iceberg DataFrameWriterV2 而非 V1。