Een catalog mirroren betekent niet dat je het security model mirrort.
Fabric kan Azure Databricks Unity Catalog-tabellen ontsluiten via een mirrored catalog en OneLake-shortcuts, maar Databricks-permissions worden niet automatisch OneLake-roles. Een kleine omgeving kan beide handmatig bijhouden. Een veranderende catalog met veel groepen, masks en row filters heeft een herhaalbaar synchronisatieproces nodig.
Policy Weaver is Microsofts open-source accelerator voor die taak. Hij leest source permissions, mapt ondersteunde policies, resolved principals en schrijft OneLake data access roles voor een mirrored item.
Het belangrijke woord is ondersteunde.
Waar het past
Dit vervolgt Azure Databricks Unity Catalog-data in Fabric gebruiken met shortcuts.
Unity Catalog grants, groups, masks, and row filters
|
v
Policy Weaver
|
+--> resolve effective privileges
+--> map supported constraints
+--> resolve Entra principals
|
v
OneLake data access roles on the mirrored catalog
Policy Weaver kopieert geen data en vervangt de mirrored catalog niet. Het synchroniseert policy intent waar de twee policy languages overlappen. De repository bevat ook Snowflake- en Dataverse-connectors; Dataverse wordt als beta beschreven.
Wat de Databricks-connector kan
Hij kan:
- Unity Catalog-privileges en inherited access inspecteren;
- rekening houden met nested group membership;
- table access naar OneLake-scopes mappen;
- roles per group of table maken;
- ondersteunde column masks en row filters vertalen;
- een
grant- ofdeny-fallback toepassen wanneer vertaling niet wordt ondersteund; en - de resulterende roles naar het Fabric-item schrijven.
Begin voor security automation met deny voor niet-ondersteunde regels. Een
vertaling die stilletjes ruimere toegang verleent is een onaangename verrassing.
Role-based of table-based mapping?
| Mode | Resultaat | Beste toepassing |
|---|---|---|
role_based | Roles gebaseerd op source groups of roles | Source-aligned row- en columnconstraints |
table_based | Een role per table met gecombineerde principals | Eenvoudige table-level access |
Gebruik role_based wanneer row-level of column-level security nodig is.
Column security en row security vereisen die mapping mode.
Vereisten
Fabric:
- een workspace met capacity;
- een Mirrored Azure Databricks catalog;
- OneLake security ingeschakeld;
- een service principal als workspace Admin;
- service principals toegestaan om Fabric public APIs aan te roepen; en
- item access voor users en groups die aan roles zijn toegewezen.
Databricks:
- via Entra gesynchroniseerde account users en groups;
- toegang voor de Policy Weaver-identity om security metadata te lezen;
- de gedocumenteerde service-principalsetup uit de repository; en
- zorgvuldige omgang met de vereisten voor Account Admin en OAuth secret.
Principal resolution kan Microsoft Graph User.Read.All application
permission vereisen. Verleen alleen wat de gekozen connector nodig heeft.
De enforcementcontroles die mensen missen
Gegenereerde roles in de UI bewijzen geen enforcement.
Het SQL analytics endpoint moet User’s identity access mode gebruiken:
- open Security;
- open View data access mode;
- selecteer User’s identity access mode; en
- pas dit toe.
Delegated identity mode negeert OneLake-roles en gebruikt SQL-permissions. Het opnieuw maken van het mirrored item kan deze setting resetten.
Governed consumers horen normaal Viewers te zijn. Admins, Members en Contributors omzeilen OneLake security. Een group in een OneLake-role heeft ook Fabric-toegang tot het item of de workspace nodig.
1. Installeer het package
Policy Weaver vereist Python 3.11 of later:
pip install policy-weaver
Pin en test de versie voor herhaalbare automation. Valideer het betaproject tegen een non-production mirrored catalog.
2. Bescherm credentials
Commit geen secrets, tokens of tenantspecifieke credentials. Gebruik Key
Vault-secret names in configuratie. Gebruik in een Fabric-notebook
fabric_notebook authentication; buiten Fabric ondersteunt het project Azure
CLI authentication.
3. Begin met een smalle configuratie
keyvault:
use_key_vault: true
name: my-policy-weaver-vault
authentication_method: fabric_notebook
fabric:
mirror_id: "<mirrored-catalog-item-id>"
mirror_name: "sales_catalog"
workspace_id: "<fabric-workspace-id>"
tenant_id: "<entra-tenant-id>"
fabric_role_suffix: "PW"
delete_default_reader_role: true
policy_mapping: role_based
constraints:
columns:
columnlevelsecurity: true
fallback: deny
rows:
rowlevelsecurity: true
fallback: deny
service_principal:
client_id: "kv-policy-weaver-client-id"
client_secret: "kv-policy-weaver-client-secret"
tenant_id: "kv-policy-weaver-tenant-id"
source:
name: "sales_catalog"
schemas:
- name: "sales"
tables:
- "orders"
- "customers"
type: UNITY_CATALOG
databricks:
workspace_url: "https://adb-xxxxxxxxxxxxxxxx.x.azuredatabricks.net/"
account_id: "<databricks-account-id>"
account_api_token: "kv-databricks-oauth-secret"
delete_default_reader_role: true kan brede standaardtoegang verwijderen.
Gebruik dit alleen nadat je hebt getest dat iedere bedoelde role wordt
gegenereerd en toegewezen.
4. Draai de synchronisatie
from policyweaver.weaver import WeaverAgent
from policyweaver.plugins.databricks.model import DatabricksSourceMap
config = DatabricksSourceMap.from_yaml("/lakehouse/default/Files/policy-weaver/config.yaml")
await WeaverAgent.run(config)
De run past de actuele sourcestate toe. Het is geen continue control plane, dus plan hem via een job, pipeline of notebook. Serialiseer runs tegen dezelfde roleset.
5. Test toegang, niet alleen het maken van roles
Gebruik minstens twee beperkte Viewer-identities:
- één die een geselecteerde tabel moet kunnen lezen;
- één die geweigerd moet worden of een beperkte subset moet zien.
Verifieer:
- roles en principals;
- toegestane en geweigerde queries;
- masks en row filters;
- reports over unsupported policies en fallbacks;
- verwijdering van een source grant na de volgende synchronisatie; en
- dat geen Admin-, Member- of Contributor-account als enforcementtest is gebruikt.
Een role die er in de UI goed uitziet, maar alleen door een workspace Admin is getest, is niet getest.
6. Beheer het als security automation
- pin het package;
- houd secret-free configuratie in source control;
- haal credentials op uit Key Vault;
- plan runs en alert op failures;
- archiveer waar passend snapshots van source- en generated policies;
- beoordeel unmapped policies; en
- herhaal restricted-identitytests na wijzigingen aan endpoint of mirror.
Snapshot hooks ondersteunen auditworkflows, maar het normale
WeaverAgent.run-pad past nog steeds policystate toe. Een testitem is veiliger
dan aannemen dat snapshots een dry run zijn.
Belangrijke beperkingen
- unsupported expressions vereisen een fallbackbeslissing;
- lokale Databricks workspace groups zijn niet het ondersteunde identity model;
- table-based mapping kan geen column security uitdrukken;
- enforcement hangt af van item access en endpoint identity mode;
- verhoogde workspaceroles omzeilen OneLake security;
- het opnieuw maken van het mirrored item kan endpointsettings resetten;
- sourcewijzigingen worden pas actief wanneer synchronisatie draait; en
- het project is een open-source accelerator zonder warranty.
Policy Weaver vermindert repetitief beheer. Het vervangt geen policydesign, least-privilege review, restricted-identitytests of monitoring.
Wanneer ik het zou gebruiken
Gebruik het wanneer Unity Catalog de source of truth is, dezelfde governed data in Databricks en Fabric wordt gebruikt en ondersteunde policies de belangrijkste toegangspatronen dekken. Houd handmatige roles wanneer de dataset klein is, toegang stabiel is of de source sterk leunt op expressions die niet veilig kunnen worden gemapt.
Bron en verder lezen
- Microsoft Policy Weaver op GitHub
- Policy Weaver-configuratie en connectorguidance
- Aan de slag met OneLake security
- Een Azure Databricks catalog mirroren in Fabric
- Entra ID SCIM configureren voor Unity Catalog
Als de accelerator nuttig is, geef de Policy Weaver-repository een star en gebruik de issue tracker voor productspecifieke vragen.
Reacties laden…