【问题标题】:Run SQL query using powershell and AAD authentication with an SSO account使用 SSO 帐户使用 powershell 和 AAD 身份验证运行 SQL 查询
【发布时间】:2023-01-25 20:59:26
【问题描述】:

我正在尝试使用需要 Azure AD 用户的 powershell 从 Cloud Shell 运行一组查询。我通常使用 invoke-sqlcmd 使用服务器管理员和密码,但我想运行的特定查询需要 AD 用户。我想以我自己的身份运行查询。我发现我可以使用 ConnectionString 参数来执行此操作,但我的问题是我在通过 SSO 登录 Azure 时没有密码。我基本上想模仿在 Azure 中转到我的数据库、转到查询编辑器、使用 AAD 身份验证并运行查询的过程,但使用 powershell。有什么办法可以做到这一点?我在下面尝试做的事情的例子:

$serverName = 'server'
$dbName = 'database'
$query = 'CREATE USER [AAD_User] FROM EXTERNAL PROVIDER;'
Invoke-Sqlcmd -ServerInstance $ServerName -Database $dbName -Query $query

当我尝试这样做时,我得到:

Invoke-Sqlcmd: Cannot authenticate using Kerberos. Ensure Kerberos has been initialized on the client with 'kinit' and a Service Principal Name has been registered for the SQL Server to allow Kerberos authentication.

【问题讨论】:

    标签: powershell azure-active-directory azure-cloud-shell invoke-sqlcmd


    【解决方案1】:

    我尝试在我的环境中重现相同的内容并得到如下结果:

    由于启用了通过 SSO 的 Azure 并且您没有密码,因此您可以尝试生成访问令牌执行操作。

    我使用以下脚本在 Azure 数据库中添加用户:

    Connect-AzAccount
    
    $connectionString = "Server=testrukserver.database.windows.net;Initial Catalog=testdb;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30"
    $accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
    
    $sqlConn = New-Object System.Data.SqlClient.SqlConnection
    $sqlConn.ConnectionString = $connectionString
    $sqlConn.AccessToken = $accessToken
    $sqlConn.Open()
    Invoke-Sqlcmd -ServerInstance testrukserver.database.windows.net -Database testdb -AccessToken $accessToken -query 'CREATE USER [test@xxx.onmicrosoft.com] FROM EXTERNAL PROVIDER'
    $sqlConn.Close()
    

    用户成功添加到 Azure 数据库中,如下所示:

    参考:

    Connecting to Azure SQL Database with AAD Authentication using Powershell by alex stuart

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 2019-01-13
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      相关资源
      最近更新 更多