使用Azure虚拟机系统分配的托管标识从Powershell访问Azure SQL



我需要在azure sql数据库上通宵运行一些批量操作。

我有一个PowerShell脚本,它使用服务帐户的sql凭据来调用sql命令。这里有一个例子:

$params = @{
'Database' = 'test-db'
'ServerInstance' = 'my-db.database.windows.net'
'Username' = 'service_account'
'Password' = 'my exposed password'
'OutputSqlErrors' = $true
'Query' = 'SELECT top 10 * FROM dbo.CaseHistory'
}
Invoke-Sqlcmd @params

我想把它设置为一个windows调度任务,每天晚上从我的VM上运行,但我不喜欢在PowerShell脚本中有SQL凭据。

有问题的虚拟机有一个系统分配的托管标识,我已经在使用它来访问blob存储。

我已经在azure sql:中为这个身份设置了一个sql用户

CREATE USER [myVmName] FROM EXTERNAL PROVIDER

我已经授予了所有必需的权限。

如何使用PowerShell脚本中的托管标识?

附言:坚持使用Invoke-Sqlcmd并不珍贵。

祝贺Twisted找到了解决方案:

"我发现这个页面底部有一节关于使用具有托管身份的PowerShell:教程:使用Windows VM系统分配的托管身份访问Azure SQL">

我帮他把它作为答案发布,这对其他社区成员来说是有益的。

最新更新