Spark Catalog & AuthZ Foundation
Catalog, analyzer, logical plan, SQLConf và enforcement point trước khi đọc UC/FGAC.
Câu hỏi
Spark query đi qua catalog/analyzer như thế nào trước khi chạy?
Mental model
Một SQL/DataFrame query không nhảy thẳng xuống file. Nó đi qua plan path:
SQL/DataFrame API
-> parse / build unresolved logical plan
-> analyzer resolve table, column, function, catalog
-> optimizer
-> physical planning
-> executionCatalog nằm ở phase resolve:
table name
-> catalog/session catalog/external catalog
-> metadata/schema/location/providerNếu muốn enforce quyền ở mức table/column/row, analyzer/catalog path là điểm rất mạnh, vì mọi query hợp lệ đều phải resolve metadata trước.
AuthZ baseline
Open-source stack thường ghép:
Spark/Trino
-> HMS/Iceberg catalog để lấy metadata
-> Ranger/OPA/custom plugin để check policy
-> object storage IAM để đọc fileNhưng nếu storage credential quá rộng, hoặc user có đường đọc raw path, policy ở catalog/query layer có thể bị bypass.
Vì sao liên quan Databricks Runtime
Khi đọc Databricks UC/FGAC, mình cần hỏi:
ManagedCatalogSessionCatalogthay/bọc catalog path nào?CheckPermissionslà analyzer rule hay API check?- Row filter/column mask được rewrite vào logical plan ở đâu?
InlineUserInfoExpressionsgiúp policy phụ thuộc user ra sao?- UC derive path credential từ quyền logical thế nào?