azure-dbx-delta-sharing-open

Creating a Delta Sharing share with OPEN recipients produces publicly downloadable signed URLs for the shared data, enabling unauthenticated data exfiltration.

derived azure emits CanExfiltrate

match (effective permission)

{ "action": "databricks:unitycatalog:create_share", "scope_type": "metastore|workspace" }

where

principal has Unity Catalog CREATE_SHARE privilege (metastore Admin or CREATE_SHARE on the metastore) principal can configure the recipient with sharing_type OPEN (no authentication required) principal has SELECT privilege on the tables being shared

emit

source typeIdentity
target typeData
source<principal>
target<Unity Catalog shared tables (Data)>
permissionsdatabricks:unitycatalog:create_share (CREATE_SHARE privilege on metastore; metastore Admin role)
conditionsiam_permission
state logicACTIVE when the recipient sharing_type is OPEN (public download URL, no authentication required). CONDITIONAL(trust_relationship) when sharing_type is DATABRICKS (requires recipient to hold a Databricks token — not truly public).

Narrative

{principal.name} can create an OPEN Delta Sharing share from Unity Catalog tables {target.name} (CREATE_SHARE privilege), generating publicly accessible signed download URLs and exfiltrating the data without authentication controls.

Raw rule rules/derived/azure/databricks.yaml

id: azure-dbx-delta-sharing-open
emits: CanExfiltrate
description: Creating a Delta Sharing share with OPEN recipients produces publicly downloadable signed
  URLs for the shared data, enabling unauthenticated data exfiltration.
match_effective_permission:
  action: databricks:unitycatalog:create_share
  scope_type: metastore|workspace
where:
- principal has Unity Catalog CREATE_SHARE privilege (metastore Admin or CREATE_SHARE on the metastore)
- principal can configure the recipient with sharing_type OPEN (no authentication required)
- principal has SELECT privilege on the tables being shared
emit:
  source_type: Identity
  target_type: Data
  source: <principal>
  target: <Unity Catalog shared tables (Data)>
  permissions:
  - databricks:unitycatalog:create_share (CREATE_SHARE privilege on metastore; metastore Admin role)
  conditions:
  - iam_permission
  state_logic: "ACTIVE when the recipient sharing_type is OPEN (public download URL, no authentication\
    \ required). CONDITIONAL(trust_relationship) when sharing_type is DATABRICKS (requires recipient to\
    \ hold a Databricks token \u2014 not truly public)."
  false_positive_note: "OPEN sharing produces a sharing profile JSON with a bearerToken that enables reading\
    \ signed URLs \u2014 effectively public data export. DATABRICKS sharing requires the recipient to\
    \ have a Databricks account token; that path is not unauthenticated exfil. Only emit ACTIVE for OPEN\
    \ sharing. The principal must have SELECT on the shared tables AND CREATE_SHARE privilege on the metastore\
    \ (or be metastore admin)."
  narrative: '{principal.name} can create an OPEN Delta Sharing share from Unity Catalog tables {target.name}
    (CREATE_SHARE privilege), generating publicly accessible signed download URLs and exfiltrating the
    data without authentication controls.'
move · open · esc close