Azure SQL — Managed Identity
Requirements
Identify the managed identity
az identity list -g <resource-group> \
--query "[?clientId=='<client-id>'].{name:name, principalId:principalId}" -o tableCREATE USER [teleskope-identity] FROM EXTERNAL PROVIDER WITH OBJECT_ID = '<principalId>';Permissions
1
2
Grant read access in each database
SERVER='<server-name>' # without .database.windows.net
RG='<resource-group>'
IDENTITY='<identity-name>'
# once per server: master user + enumeration grant
sqlcmd -S "$SERVER.database.windows.net" -d master -G -Q "
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = '$IDENTITY')
CREATE USER [$IDENTITY] FROM EXTERNAL PROVIDER;
GRANT VIEW ANY DATABASE TO [$IDENTITY];"
# every database on the server: read grants
for DB in $(az sql db list --server "$SERVER" -g "$RG" --query "[?name!='master'].name" -o tsv); do
sqlcmd -S "$SERVER.database.windows.net" -d "$DB" -G -Q "
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = '$IDENTITY')
CREATE USER [$IDENTITY] FROM EXTERNAL PROVIDER;
GRANT SELECT TO [$IDENTITY];
GRANT VIEW DATABASE STATE TO [$IDENTITY];"
done3
Last updated
Was this helpful?
