本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的已知問題 AWS Lake Formation
檢閱 的這些已知問題 AWS Lake Formation。
主題
篩選資料表中繼資料的限制
AWS Lake Formation 資料欄層級許可可用來限制對資料表中特定資料欄的存取。當使用者使用主控台API或類似 擷取資料表的中繼資料時glue:GetTable
,資料表物件中的資料欄清單只會包含他們有權存取的欄位。請務必了解此中繼資料篩選的限制。
雖然 Lake Formation 提供關於整合服務的資料欄許可的可用中繼資料,但查詢回應中的資料欄實際篩選是整合服務的責任。支援資料欄層級篩選的 Lake Formation 用戶端,包括 Amazon AthenaAmazon Redshift Spectrum 和 Amazon 根據向 Lake Formation 註冊的資料欄許可來EMR篩選資料。使用者將無法讀取他們不應存取的任何資料。目前,AWS Glue ETL 不支援資料欄篩選。
注意
EMR 叢集未完全由 管理 AWS。因此,EMR管理員有責任正確保護叢集,以避免未經授權存取資料。
某些應用程式或格式可能會將Parameters
地圖中的其他中繼資料,包括資料欄名稱和類型,儲存為資料表屬性。這些屬性會傳回未修改,且任何具有任何資料欄SELECT
許可的使用者皆可存取。
例如,Avro SerDe 會將資料表結構描述的JSON表示法存放在名為 的資料表屬性中avro.schema.literal
,可供可存取資料表的所有使用者使用。建議您避免在資料表屬性中存放敏感資訊,並注意使用者可以了解 Avro 格式資料表的完整結構描述。此限制專屬於資料表的中繼資料。
AWS Lake Formation 如果來電者沒有資料表中所有資料欄的SELECT
許可,則在回應 glue:GetTable
或類似請求spark.sql.sources.schema
時, 會移除以 開頭的任何資料表屬性。這可讓使用者無法存取使用 Apache Spark 建立之資料表的其他中繼資料。在 Amazon 上執行時EMR,Apache Spark 應用程式仍可讀取這些資料表,但可能無法套用某些最佳化,且不支援區分大小寫的欄位名稱。如果使用者可存取資料表中的所有資料欄,Lake Formation 會傳回未修改且包含所有資料表屬性的資料表。
重新命名排除的資料欄時發生問題
如果您使用資料欄層級許可來排除資料欄,然後重新命名資料欄,則不再從查詢中排除資料欄,例如 SELECT *
。
刪除CSV資料表中資料欄的問題
如果您使用 CSV 格式建立資料目錄表,然後從結構描述中刪除資料欄,查詢可能會傳回錯誤的資料,而且可能未遵守資料欄層級許可。
因應措施:改為建立新的資料表。
資料表分割區必須在一般路徑下新增
Lake Formation 預期資料表的所有分割區都位於資料表位置欄位中設定的常見路徑下。當您使用爬蟲程式將分割區新增至目錄時,這會順暢運作。但是,如果您手動新增分割區,且這些分割區不在父資料表中設定的位置之下,則資料存取無法運作。
工作流程建立期間建立資料庫的問題
使用 Lake Formation 主控台從藍圖建立工作流程時,如果目標資料庫不存在,您可以建立該工作流程。當您這樣做時,登入的使用者會取得所建立資料庫的CREATE_TABLE
許可。不過,工作流程產生的爬蟲程式會在嘗試建立資料表時擔任工作流程的角色。這會失敗,因為角色在資料庫上沒有 CREATE_TABLE
許可。
因應措施:如果您在工作流程設定期間透過主控台建立資料庫,則在執行工作流程之前,您必須將剛建立之資料庫的CREATE_TABLE
許可授予與工作流程相關聯的角色。
刪除並重新建立使用者的問題
下列案例導致 傳回錯誤的 Lake Formation 許可lakeformation:ListPermissions
:
-
建立使用者並授予 Lake Formation 許可。
-
刪除使用者。
-
使用相同名稱重新建立使用者。
ListPermissions
會傳回兩個項目,一個是舊使用者,另一個是新使用者。如果您嘗試撤銷授予舊使用者的許可,則會從新使用者撤銷該許可。
GetTables
且 SearchTables
APIs 不會更新 IsRegisteredWithLakeFormation
參數的值
Data Catalog API操作有已知的限制,例如 GetTables
和 SearchTables
不會更新 的值IsRegisteredWithLakeFormation parameter
,並傳回預設值,這是 false。建議使用 GetTable
API來檢視 的正確值IsRegisteredWithLakeFormation parameter
。
Data Catalog API操作不會更新 IsRegisteredWithLakeFormation
參數的值
Data Catalog API操作有已知的限制,例如 GetTables
和 SearchTables
不會更新 IsRegisteredWithLakeFormation
參數的值,並傳回預設值,這是 false。建議使用 GetTable
API來檢視 IsRegisteredWithLakeFormation
參數的正確值。
Lake Formation 操作不支援 AWS Glue 結構描述登錄檔
Lake Formation 操作不支援在 SchemaReference
中包含StorageDescriptor
要在結構描述註冊 中使用的 的 AWS Glue 資料表。