通过具有 MFA(Active Directory 交互)的 PowerShell 对 SQL Server 进行身份验证

Fin*_*rta 2 sql-server powershell azure-sql-database always-encrypted

我正在尝试设置一个 PowerShell 脚本以在我们的 Azure SQL Server 数据库上启用始终加密。我正在遵循本指南,其中提供了以下示例代码:

# Import the SqlServer module
Import-Module "SqlServer"  

# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr

# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database
Run Code Online (Sandbox Code Playgroud)

然而,我在使数据库连接正常工作时遇到了问题。从看来,Get-SqlDatabase所使用的 SqlServer 模块中的命令似乎不支持通过 MFA 登录。我们公司强制执行这种类型的登录,所以我似乎找不到解决方法。

运行时Get-SqlDatabase -ConnectionString 'Server=myserver.database.windows.net; Database=myDB; Authentication=Active Directory Interactive;'我收到以下错误:

找不到“ActiveDirectoryInteractive”的身份验证提供程序。

SqlServer-module 是否缺乏支持 MFA 登录的能力?或者我还缺少其他东西吗?

Ven*_*dda 6

Get-SqlDatabaseCmdlet 使用以下文档System.Data.SqlClient,其中身份验证关键字支持以下值。

有效值为:

  • 活动目录集成
  • 活动目录密码
  • sql密码

Active Directory Integrated:要使用此身份验证模式,您需要将本地 Active Directory 联合身份验证服务 (ADFS) 与云中的 Azure Active Directory 联合起来

Active Directory 密码authentication=ActiveDirectoryPassword 可用于使用 Azure AD 用户名和密码连接到 Azure SQL 数据库/Synapse Analytics。

Sql 密码Use authentication=SqlPassword使用用户名/用户和密码属性连接到 SQL Server。

如果您想通过带有 MFA 的 PowerShell 对 Sql Server 进行身份验证,则需要Active Directory Interactive在身份验证关键字中使用,该关键字不受system.data.sqlclient

Active Directory Interactiveauthentication=ActiveDirectoryInteractive可用于使用交互式身份验证流程(多重身份验证)连接到 Azure SQL 数据库/Synapse Analytics

请注意,System.Data.SqlClient驱动程序以及相应的Get-SqlDatabase cmdlet不支持全部 Azure AD 身份验证方法。如果受支持的方法在您的环境中均不起作用,则使用 SQL 身份验证可能是唯一的选择。

  • 我提出了文档增强问题以阻止其他人遇到此问题。https://github.com/MicrosoftDocs/sql-docs/issues/7028 (3认同)