本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的已知問題 AWS Lake Formation
檢閱的這些已知問題 AWS Lake Formation。
主題
篩選表格中繼資料的限制
AWS Lake Formation 資料行層級權限可用來限制對資料表中特定資料行的存取。當使用者使用主控台或類似 API 擷取有關資料表的中繼資料時glue:GetTable
,資料表物件中的資料行清單只會包含他們有權存取的欄位。瞭解此中繼資料篩選的限制非常重要。
雖然 Lake Formation 為整合式服務提供有關資料行權限的中繼資料,但實際篩選查詢回應中的資料行是整合式服務的責任。支援資料行層級篩選的湖泊形成用戶端,包括 Amazon 雅典娜、亞馬遜 Redshift 頻譜和亞馬遜 EMR 會根據向 Lake Formation 註冊的欄許可來篩選資料。使用者將無法讀取他們不應該存取的任何資料。目前,AWS GlueETL 不支援資料行篩選。
注意
EMR 叢集並非由完全管理 AWS。因此,EMR 管理員有責任妥善保護叢集,以避免未經授權的資料存取。
某些應用程式或格式可能會將其他中繼資料 (包括欄名稱和類型) 儲存在Parameters
地圖中作為表格屬性。這些屬性會以未修改的方式傳回,且任何具有任何資料行SELECT
權限的使用者都可以存取。
例如,Avro 會將資料表結構定義的 JSON 表示法SerDe儲存在名為的資料表屬性中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
API 不會更新IsRegisteredWithLakeFormation
參數的值
有一個已知的限制,即資料目錄 API 作業 (例如GetTables
和SearchTables
不會更新的值)IsRegisteredWithLakeFormation parameter
,並傳回預設值 (此為 false)。建議您使用 GetTable
API 來檢視的正確值IsRegisteredWithLakeFormation parameter
。
資料目錄 API 作業不會更新IsRegisteredWithLakeFormation
參數的值
資料目錄 API 作業 (例如GetTables
和SearchTables
不會更新IsRegisteredWithLakeFormation
參數的值),並傳回預設值 (即 false) 存在已知限制。建議您使用 GetTable
API 來檢視IsRegisteredWithLakeFormation
參數的正確值。
Lake Formation 操作不支持 AWS Glue 模式註冊表
Lake Formation 作業不支援包含StorageDescriptor
要SchemaReference
在架構註冊中使用的中的 AWS Glue 表格。