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:
| Action | When to use |
|---|---|
| Fulfill | Approve the request and attach a share |
| Mark as pending | Need additional information or internal review |
| Deny | Request 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 requestsw.provider_listings- Manage listings programmaticallyw.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
- Navigate to the recipient in your Provider Console
- Remove them from the share or delete the recipient entirely
- 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
- Set up monitoring to track consumer activity
- Automate fulfillment with workflow scripts
- Configure dynamic views for fine-grained access control