使用 MFA (Active Directory Interactive) 通过 PowerShell 向 SQL 服务器进行身份验证
Authenticate to SQL Server through PowerShell with MFA (Active Directory Interactive)
我正在尝试设置 PowerShell 脚本以在我们的 Azure SQL 服务器数据库上启用 Always Encrypted。我正在关注此 guide,它提供了以下示例代码:
# 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
我 运行 在使数据库连接正常工作方面遇到了问题。从使用的 SqlServer 模块的 Get-SqlDatabase
命令看来,似乎不支持通过 MFA 登录。我们公司已经强制执行这种类型的登录,所以我似乎找不到解决这个问题的方法。
当 运行ning Get-SqlDatabase -ConnectionString 'Server=myserver.database.windows.net; Database=myDB; Authentication=Active Directory Interactive;'
我收到以下错误:
Cannot find an authentication provider for 'ActiveDirectoryInteractive'.
SqlServer-module 是否缺少支持 MFA 登录的功能?还是我漏掉了什么?
Get-SqlDatabase
Cmdlet 使用 System.Data.SqlClient
,其中根据 documentation 以下值在身份验证关键字中受支持。
有效值为:
- Active Directory 集成
- 活动目录密码
- Sql 密码
Active Directory Integrated :要使用此身份验证模式,您需要将内部部署的 Active Directory Federation Services (ADFS) 与云中的 Azure Active Directory 联合
Active Directory 密码:authentication=ActiveDirectoryPassword
可用于使用 Azure AD 用户名连接到 Azure SQL Database/Synapse Analytics 和密码。
Sql 密码 :Use authentication=SqlPassword
使用 userName/user 和密码属性连接到 SQL 服务器。
如果您想通过带有 MFA 的 PowerShell 向 Sql 服务器进行身份验证,您需要在 system.data.sqlclient
不支持的身份验证关键字中使用 Active Directory Interactive
Active Directory Interactive:authentication=ActiveDirectoryInteractive
可用于使用交互式身份验证流程连接到 Azure SQL Database/Synapse Analytics(多-因素身份验证)
请注意,System.Data.SqlClient
驱动程序以及 Get-SqlDatabase cmdlet
不支持所有 Azure AD 身份验证方法。如果 none 支持的方法适用于您的环境,则使用 SQL 身份验证可能是唯一的选择。
我正在尝试设置 PowerShell 脚本以在我们的 Azure SQL 服务器数据库上启用 Always Encrypted。我正在关注此 guide,它提供了以下示例代码:
# 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
我 运行 在使数据库连接正常工作方面遇到了问题。从使用的 SqlServer 模块的 Get-SqlDatabase
命令看来,似乎不支持通过 MFA 登录。我们公司已经强制执行这种类型的登录,所以我似乎找不到解决这个问题的方法。
当 运行ning Get-SqlDatabase -ConnectionString 'Server=myserver.database.windows.net; Database=myDB; Authentication=Active Directory Interactive;'
我收到以下错误:
Cannot find an authentication provider for 'ActiveDirectoryInteractive'.
SqlServer-module 是否缺少支持 MFA 登录的功能?还是我漏掉了什么?
Get-SqlDatabase
Cmdlet 使用 System.Data.SqlClient
,其中根据 documentation 以下值在身份验证关键字中受支持。
有效值为:
- Active Directory 集成
- 活动目录密码
- Sql 密码
Active Directory Integrated :要使用此身份验证模式,您需要将内部部署的 Active Directory Federation Services (ADFS) 与云中的 Azure Active Directory 联合
Active Directory 密码:authentication=ActiveDirectoryPassword
可用于使用 Azure AD 用户名连接到 Azure SQL Database/Synapse Analytics 和密码。
Sql 密码 :Use authentication=SqlPassword
使用 userName/user 和密码属性连接到 SQL 服务器。
如果您想通过带有 MFA 的 PowerShell 向 Sql 服务器进行身份验证,您需要在 system.data.sqlclient
Active Directory Interactive
Active Directory Interactive:authentication=ActiveDirectoryInteractive
可用于使用交互式身份验证流程连接到 Azure SQL Database/Synapse Analytics(多-因素身份验证)
请注意,System.Data.SqlClient
驱动程序以及 Get-SqlDatabase cmdlet
不支持所有 Azure AD 身份验证方法。如果 none 支持的方法适用于您的环境,则使用 SQL 身份验证可能是唯一的选择。