Skip to main content

Access management

This page covers the operational side of managing consumer access—fulfilling requests, responding promptly, and revoking access when needed. For listing setup and access model choices (instant vs request-only), see Listings. For official documentation, see Manage listing access requests.

Fulfillment workflow

When a consumer requests access to a request-only listing, the request appears in your Consumer Requests table in the Provider Console. You'll also receive an automated email with the request details.

From the Provider Console, you can take one of three actions:

ActionWhen to use
FulfillApprove the request and attach a share
Mark as pendingNeed additional information or internal review
DenyRequest doesn't meet your criteria

All actions trigger an email notification to the consumer.

Set up alerts via system tables to avoid stale requests sitting in your queue.

Programmatic fulfillment

You can manage access requests entirely via the Databricks SDK without using the Provider Console:

  • w.provider_personalization_requests - List, approve, or deny consumer requests
  • w.provider_listings - Manage listings programmatically
  • w.provider_exchanges - Manage private exchanges

This enables:

  • Automated approval workflows triggered by CRM or ticketing systems
  • Complex entitlement logic (dynamic views, recipient properties)
  • Integration with existing onboarding pipelines

See Workflow and automation for example scripts.

Revoking access

You can revoke access at any time through multiple methods:

Via Provider Console

  1. Navigate to the recipient in your Provider Console
  2. Remove them from the share or delete the recipient entirely
  3. Access is revoked immediately

Via SQL

-- Revoke access to a specific share
REVOKE SELECT ON SHARE my_share FROM RECIPIENT acme_corp;

-- Or delete the recipient entirely
DROP RECIPIENT acme_corp;

Via SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Revoke from a specific share
w.shares.update_permissions(
name="my_share",
changes=[{"principal": "acme_corp", "remove": ["SELECT"]}]
)

# Or delete the recipient
w.recipients.delete("acme_corp")

Revocation takes effect immediately—the consumer loses access on their next query.

Auditing access changes

Track all access grants and revocations using system tables:

SELECT
event_time,
action_name,
request_params,
user_identity.email as actor
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createRecipient', 'deleteRecipient', 'grantShare', 'revokeShare')
ORDER BY event_time DESC;

See Monitoring for dashboard and alerting patterns.

What's next