教程:使用 Azure SQL 启用仅限 Microsoft Entra 身份验证
Artículo 08/12/2024
2 colaboradores
Comentarios
En este artículo
适用于: Azure SQL 数据库 Azure SQL 托管实例
本文将引导你启用 Azure SQL 数据库和 Azure SQL 托管实例中的仅限 Microsoft Entra 身份验证 功能。 如果希望预配启用了“仅限 Microsoft Entra 身份验证”的 SQL 数据库或 SQL 托管实例,请参阅在 Azure SQL 中创建启用了“仅限 Microsoft Entra 身份验证”的服务器 。
本教程介绍如何执行下列操作:
分配角色以启用“仅限 Microsoft Entra 身份验证”
使用 Azure 门户、Azure CLI 或 PowerShell 启用“仅限 Microsoft Entra 身份验证”
检查是否已启用“仅限 Microsoft Entra 身份验证”
测试与 Azure SQL 的连接
使用 Azure 门户、Azure CLI 或 PowerShell 禁用“仅限 Microsoft Entra 身份验证”
先决条件
分配角色以启用“仅限 Microsoft Entra 身份验证”
若要启用或禁用“仅限 Microsoft Entra 身份验证”,执行本教程中操作的 Microsoft Entra 用户需要具有所选的内置角色。 在本教程中,我们将为用户分配 SQL 安全管理者 角色。
若要详细了解如何为 Microsoft Entra 帐户分配角色,请参阅为使用 Microsoft Entra ID 的用户分配管理员和非管理员角色
有关启用或禁用“仅限 Microsoft Entra 身份验证”时所需权限的详细信息,请参阅“仅限 Microsoft Entra 身份验证”一文的“权限”部分 。
在本示例中,我们将为用户 UserSqlSecurityManager@contoso.partner.onmschina.cn
分配“SQL 安全管理者”角色。 使用可分配 Microsoft Entra 角色的特权用户身份登录到 Azure 门户 。
转到你的 SQL 服务器资源,然后在菜单中选择“访问控制(IAM)”。 选择“添加”按钮,然后在下拉菜单中选择“添加角色分配” 。
在“添加角色分配” 窗格中选择“SQL 安全管理者” 角色,然后选择要为其授予权限、使其能够启用或禁用“仅限 Microsoft Entra 身份验证”的用户。
单击“ 保存 ”。
启用“仅限 Microsoft Entra 身份验证”
使用 Azure 门户在 SQL 数据库中启用
若要在 Azure 门户中启用“仅限 Microsoft Entra 身份验证”,请执行以下步骤:
使用具有 SQL 安全管理者 角色的用户身份转到 Azure 门户 。
转到 SQL Server 资源,然后在“设置” 菜单下选择“Microsoft Entra ID” 。
如果尚未添加 Microsoft Entra 管理员 ,则需要先设置此设置,然后才能启用“仅限 Microsoft Entra 身份验证”。
为此服务器选中“仅支持 Microsoft Entra 身份验证”复选框 。
此时会显示“启用‘仅限 Microsoft Entra 身份验证’” 弹出窗口。 选择“是” 以启用该功能,然后保存 设置 。
使用 Azure 门户在 SQL 托管实例中启用
若要在 Azure 门户中启用“仅限 Microsoft Entra 身份验证”,请参阅以下步骤。
使用具有 SQL 安全管理者 角色的用户身份转到 Azure 门户 。
转到“SQL 托管实例” 资源,然后选择“设置” 菜单下的“Microsoft Entra 管理员” 。
如果尚未添加 Microsoft Entra 管理员 ,则需要先设置此设置,然后才能启用“仅限 Microsoft Entra 身份验证”。
选择“仅支持此托管实例的 Microsoft Entra 身份验证” 复选框。
此时会显示“启用‘仅限 Microsoft Entra 身份验证’” 弹出窗口。 选择“是” 以启用该功能,然后保存 设置 。
使用 Azure CLI 在 SQL 数据库中启用
若要使用 Azure CLI 在 Azure SQL 数据库中启用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。 安装最新版本的 Azure CLI 。 必须使用 Azure CLI 2.14.2 或更高版本。 有关这些命令的详细信息,请参阅 az sql server ad-only-auth 。
有关使用 API 管理“仅限 Microsoft Entra 身份验证”的详细信息,请参阅使用 API 管理“仅限 Microsoft Entra 身份验证” 。
注意
必须先为此服务器设置 Microsoft Entra 管理员才能启用“仅限 Microsoft Entra 身份验证”。 否则 Azure CLI 命令将会失败。
有关用户需要哪些权限和操作才能执行这些命令来启用“仅限 Microsoft Entra 身份验证”的信息,请参阅仅限 Microsoft Entra 身份验证 一文。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql server ad-only-auth enable --resource-group <myresource> --name <myserver>
使用 Azure CLI 在 SQL 托管实例中启用
若要使用 Azure CLI 在 Azure SQL 托管实例中启用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。 安装最新版本的 Azure CLI 。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql mi ad-only-auth enable --resource-group <myresource> --name <myserver>
使用 PowerShell 在 SQL 数据库中启用
若要使用 PowerShell 在 Azure SQL 数据库中启用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。 需使用 Az.Sql 2.10.0 模块或更高版本来执行这些命令。 有关这些命令的详细信息,请参阅 Enable-AzSqlInstanceActiveDirectoryOnlyAuthentication 。
有关使用 API 管理“仅限 Microsoft Entra 身份验证”的详细信息,请参阅使用 API 管理“仅限 Microsoft Entra 身份验证”
注意
必须先为此服务器设置 Microsoft Entra 管理员才能启用“仅限 Microsoft Entra 身份验证”。 否则 PowerShell 命令将会失败。
有关用户需要哪些权限和操作才能执行这些命令来启用“仅限 Microsoft Entra 身份验证”的信息,请参阅仅限 Microsoft Entra 身份验证 一文。 如果用户的权限不足,将出现以下错误:
Enable-AzSqlServerActiveDirectoryOnlyAuthentication : The client
'UserSqlServerContributor@contoso.partner.onmschina.cn' with object id
'<guid>' does not have authorization to perform
action 'Microsoft.Sql/servers/azureADOnlyAuthentications/write' over scope
'/subscriptions/<guid>...'
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
Enable-AzSqlServerActiveDirectoryOnlyAuthentication -ServerName <myserver> -ResourceGroupName <myresource>
使用 PowerShell 在 SQL 托管实例中启用
若要使用 PowerShell 在 Azure SQL 托管实例中启用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。 需使用 Az.Sql 2.10.0 模块或更高版本来执行这些命令。
有关使用 API 管理“仅限 Microsoft Entra 身份验证”的详细信息,请参阅使用 API 管理“仅限 Microsoft Entra 身份验证” 。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令,将 <myinstance>
替换为 SQL 托管实例名称,将 <myresource>
替换为包含 SQL 托管实例的 Azure 资源。
Enable-AzSqlInstanceActiveDirectoryOnlyAuthentication -InstanceName <myinstance> -ResourceGroupName <myresource>
检查“仅限 Microsoft Entra 身份验证”的状态
检查是否为服务器或实例启用了“仅限 Microsoft Entra 身份验证”。
检查 SQL 数据库中的状态
在 Azure 门户 中转到你的 SQL 服务器资源。 在设置 菜单下选择 Microsoft Entra ID 。
检查 SQL 托管实例中的状态
转到 Azure 门户 中的“SQL 托管实例”资源。 在“设置” 下,选择“Microsoft Entra 管理员” 。
这些命令可用于检查是否为 Azure SQL 数据库或 SQL 托管实例的逻辑服务器 启用了“仅限 Microsoft Entra 身份验证”。 SQL Server 参与者 和 SQL 托管实例参与者 角色的成员可以使用这些命令检查“仅限 Microsoft Entra 身份验证”的状态,但不能启用或禁用该功能。
检查 SQL 数据库中的状态
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。 有关使用 API 管理“仅限 Microsoft Entra 身份验证”的详细信息,请参阅使用 API 管理“仅限 Microsoft Entra 身份验证”
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql server ad-only-auth get --resource-group <myresource> --name <myserver>
应会看到以下输出:
{
"azureAdOnlyAuthentication": true,
"/subscriptions/<guid>/resourceGroups/mygroup/providers/Microsoft.Sql/servers/myserver/azureADOnlyAuthentications/Default",
"name": "Default",
"resourceGroup": "myresource",
"type": "Microsoft.Sql/servers"
}
检查 SQL 托管实例中的状态
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql mi ad-only-auth get --resource-group <myresource> --name <myserver>
应会看到以下输出:
{
"azureAdOnlyAuthentication": true,
"id": "/subscriptions/<guid>/resourceGroups/myresource/providers/Microsoft.Sql/managedInstances/myinstance/azureADOnlyAuthentications/Default",
"name": "Default",
"resourceGroup": "myresource",
"type": "Microsoft.Sql/managedInstances"
}
这些命令可用于检查是否为 Azure SQL 数据库或 SQL 托管实例的逻辑服务器 启用了“仅限 Microsoft Entra 身份验证”。 SQL Server 参与者 和 SQL 托管实例参与者 角色的成员可以使用这些命令检查“仅限 Microsoft Entra 身份验证”的状态,但不能启用或禁用该功能。
如果已启用该功能,则状态将返回 True;如果已禁用,则返回 False 。
检查 SQL 数据库中的状态
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。 有关使用 API 管理“仅限 Microsoft Entra 身份验证”的详细信息,请参阅使用 API 管理“仅限 Microsoft Entra 身份验证”
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
Get-AzSqlServerActiveDirectoryOnlyAuthentication -ServerName <myserver> -ResourceGroupName <myresource>
检查 SQL 托管实例中的状态
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令,将 <myinstance>
替换为 SQL 托管实例名称,将 <myresource>
替换为包含 SQL 托管实例的 Azure 资源。
Get-AzSqlInstanceActiveDirectoryOnlyAuthentication -InstanceName <myinstance> -ResourceGroupName <myresource>
测试 SQL 身份验证时连接失败
启用“仅限 Microsoft Entra 身份验证”后,使用 SQL Server Management Studio (SSMS) 进行测试,以连接到 SQL 数据库或 SQL 托管实例 。 使用 SQL 身份验证进行连接。
应会看到类似于以下输出的登录失败消息:
Cannot connect to <myserver>.database.chinacloudapi.cn.
Additional information:
Login failed for user 'username'. Reason: Azure Active Directory only authentication is enabled.
Please contact your system administrator. (Microsoft SQL Server, Error: 18456)
禁用“仅限 Microsoft Entra 身份验证”
可以通过禁用“仅限 Microsoft Entra 身份验证”功能来允许执行 Azure SQL 的 SQL 身份验证和 Microsoft Entra 身份验证。
使用 Azure 门户在 SQL 数据库中禁用
使用具有 SQL 安全管理者 角色的用户身份转到 Azure 门户 。
转到 SQL Server 资源,然后在“设置” 菜单下选择“Microsoft Entra ID” 。
若要禁用“仅限 Microsoft Entra 身份验证”功能,请取消选中“仅支持此服务器的 Microsoft Entra 身份验证” 复选框,然后保存 设置 。
使用 Azure 门户在 SQL 托管实例中禁用
使用具有 SQL 安全管理者 角色的用户身份转到 Azure 门户 。
转到“SQL 托管实例”资源,然后选择“设置”菜单下的“Active Directory 管理员” 。
若要禁用“仅限 Microsoft Entra 身份验证”功能,请取消选中“仅支持此托管实例的 Microsoft Entra 身份验证” 复选框,然后保存 设置 。
使用 Azure CLI 在 SQL 数据库中禁用
若要使用 Azure CLI 在 Azure SQL 数据库中禁用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql server ad-only-auth disable --resource-group <myresource> --name <myserver>
禁用“仅限 Microsoft Entra 身份验证”后,在检查状态时应会看到以下输出:
{
"azureAdOnlyAuthentication": false,
"/subscriptions/<guid>/resourceGroups/mygroup/providers/Microsoft.Sql/servers/myserver/azureADOnlyAuthentications/Default",
"name": "Default",
"resourceGroup": "myresource",
"type": "Microsoft.Sql/servers"
}
使用 Azure CLI 在 SQL 托管实例中禁用
若要使用 Azure CLI 在 Azure SQL 托管实例中禁用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
az login
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
az sql mi ad-only-auth disable --resource-group <myresource> --name <myserver>
禁用“仅限 Microsoft Entra 身份验证”后,在检查状态时应会看到以下输出:
{
"azureAdOnlyAuthentication": false,
"id": "/subscriptions/<guid>/resourceGroups/myresource/providers/Microsoft.Sql/managedInstances/myinstance/azureADOnlyAuthentications/Default",
"name": "Default",
"resourceGroup": "myresource",
"type": "Microsoft.Sql/managedInstances"
}
使用 PowerShell 在 SQL 数据库中禁用
若要使用 PowerShell 在 Azure SQL 数据库中禁用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令(请将其中的 <myserver>
替换为你的 SQL 服务器名称,将 <myresource>
替换为承载该 SQL 服务器的 Azure 资源)。
Disable-AzSqlServerActiveDirectoryOnlyAuthentication -ServerName <myserver> -ResourceGroupName <myresource>
使用 PowerShell 在 SQL 托管实例中禁用
若要使用 PowerShell 在 Azure SQL 托管实例中禁用“仅限 Microsoft Entra 身份验证”,请参阅以下命令。
使用具有 SQL 安全管理者 角色的帐户登录到 Azure 。
Connect-AzAccount -Environment AzureChinaCloud
运行以下命令,将 <myinstance>
替换为 SQL 托管实例名称,将 <myresource>
替换为包含托管实例的 Azure 资源。
Disable-AzSqlInstanceActiveDirectoryOnlyAuthentication -InstanceName <myinstance> -ResourceGroupName <myresource>
再次测试连接到 Azure SQL
禁用“仅限 Microsoft Entra 身份验证”后,使用 SQL 身份验证登录名测试连接。 现在应该可以连接到你的服务器或实例。
后续步骤