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.
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 — 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.'