Connect to Azure SQL database using System Assigned Identity (integrated security / no passwords) from RunBook

This is how to grant user from system assigned identity (e.g. automation account) to allow to connect and query azure sql database without any use of keys, secrets, vaults or hard coded passwords.

The app does not have to be contributor in azure sql instance for this to work

Enable System Assigned Identity

  • Navigate to Automation Account / Identity
  • Set System Assigned: On
  • Copy Object (Principal) Id guid
  • Navigate to Azure Active Directory
  • Search for the guid in "Search your tenant" box
  • Find the "enterprise application" popping up
  • Copy the Name this is what you use below [App_Name]

Grant access to Azure SQL Database

CREATE USER [App_Name] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
ALTER ROLE db_datareader ADD MEMBER [App_Name]
ALTER ROLE db_datawriter ADD MEMBER [App_Name]

How to use from runbook (powershell)

$server = "your-sql-server-name.database.windows.net"
$database = "your-database-name"
$query = "select * from dbo.yourtable"

$account = (Connect-AzAccount -Identity)
$access_token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net").Token
invoke-Sqlcmd -ServerInstance $server -Database $database -Query $query -As DataSet -AccessToken $access_token

Comments

Popular posts from this blog

SSIS: Set parent package variable from child package

How to decrypt stored password from SSMS registered servers

Insert bulk statement does not support recompile (SQL 2017)