Data Analytics Tools Permisson Reference
In a previous article I mentioned that securing the permissions for your data lake analytics tools in addition to the data lake itself. This is just a short reference article to highlight various use cases in two popular tools: Azure Synapse Analytics and Azure Databricks.
(I apologize for the format - LinkedIn today doesn't allow tables. This article is organized by access layer, then by use case, with descriptions of the roles or permission you need to accomplish the use case, plus where you'll find those settings.)
Table of Contents
Storage
Read/write from external tool and query data from SQL pool/endpoint
View contents in Azure portal
Databricks Workspace
Access workspace
Databricks cluster
Ability to execute notebooks against a cluster
Databricks SQL
SQL workspace
Databricks Spark databases
Access hive databases via Databricks SQL only
GRANT USAGE, SELECT ON SCHEMA spark_db TO test@domain.com;
Recommended by LinkedIn
SHOW GRANT ON database_name.table_name
SHOW GRANT ON SCHEMA database_name
Access hive databases via Databricks notebooks
Synapse Studio
Edit pipelines, notebooks, etc
Execute Spark notebooks and jobs
Publish new or updated artifacts to the service
Commit code to git
Azure Synapse SQL pool databases
Use SQL Pool via Azure Synapse Studio, SSMS, SSRS
CREATE LOGIN [email@domain.com] FROM EXTERNAL PROVIDER use [database name]
CREATE USER [name] FROM LOGIN [email@domain.com]; ALTER ROLE db_datareader ADD MEMBER [test@domain.com]
Group:
CREATE LOGIN [VXC_GroupName] FROM EXTERNAL PROVIDER use [database name]
CREATE USER [VXC_GroupName] FROM LOGIN [VXC_GroupName]; ALTER ROLE db_datareader ADD MEMBER [VXC_GroupName]
-- server logins
SELECT name, CONVERT(uniqueidentifier, sid) as sid, create_date
FROM sys.server_principals WHERE type in ('E', 'X')
-- database users
SELECT name, CONVERT(uniqueidentifier, sid) as sid, create_date
FROM sys.database_principals WHERE type in ('E', 'X')
-- database roles
SELECT r.name role_principal_name, m.name AS member_principal_name
FROM sys.database_role_members rm
JOIN sys.database_principals r ON rm.role_principal_id = r.principal_id
JOIN sys.database_principals m ON rm.member_principal_id = m.principal_id
ALTER ROLE db_datawriter ADD MEMBER [<My group name>]
ALTER ROLE db_ddladmin ADD MEMBER [<My group name>]