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

时间:2020-04-22 08:43:30

标签: azure powershell azure-active-directory azure-sql-database azure-powershell

我需要在一夜之间在azure sql数据库上运行一些批量操作。

我有一个PowerShell脚本,该脚本使用对服务帐户使用sql凭据的invoke-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凭据。

有问题的VM具有系统分配的托管身份,我已经使用该身份访问blob存储。

我已经在Azure SQL中为此身份设置了一个sql用户:

CREATE USER [myVmName] FROM EXTERNAL PROVIDER

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

如何使用PowerShell脚本中的托管身份?

P.S。我坚持使用Invoke-Sqlcmd并不珍贵。

1 个答案:

答案 0 :(得分:0)

恭喜Twisted找到了解决方案:

“”我找到了此页面,该页面的右下部分是使用带有托管身份的PowerShell的底部:Tutorial: Use a Windows VM system-assigned managed identity to access Azure SQL

我帮助他将其发布为答案,这可能对其他社区成员有益。