教程:使用自动化为 SQL Server 设置 Microsoft Entra 管理员

适用于: SQL Server 2022 (16.x)

注意

此功能在 SQL Server 2022 (16.x) 或更高版本中可用,并且仅支持用于 Windows 和 Linux 主机上的本地 SQL Server 以及 Windows Azure VM 上的 SQL Server 2022

在本文中,我们将介绍如何设置 Microsoft Entra 管理员,以便使用 Azure 门户和例如下列 API SQL Server 进行 Microsoft Entra ID(以前称为 Azure Active Directory)身份验证:

  • PowerShell
  • Azure CLI
  • ARM 模板

我们还将介绍在 Azure 门户中设置 SQL Server 的 Microsoft Entra 管理员这一更新功能,该功能可自动创建证书和注册应用程序。 以前,设置 SQL Server 的 Microsoft Entra 身份验证需要通过 Azure 证书和应用程序注册手动设置 Microsoft Entra 管理员

注意

虽然 Microsoft Entra ID 是 Azure Active Directory (Azure AD) 的新名称,但为了防止中断现有环境,Azure AD 仍保留在一些硬编码的元素中,例如 UI 字段、连接提供程序、错误代码和 cmdlet。 在本文中,这两个名称是可互换的。

先决条件

  • 已安装 SQL Server 2022 (16.x) 或更高版本。
  • SQL Server 已连接到 Azure 云。 有关详细信息,请参阅将 SQL Server 连接到 Azure Arc
  • Microsoft Entra ID 配置为在与 Azure Arc 实例相同的租户中进行身份验证。
  • 需要 Azure Key Vault

设置 Microsoft Entra 管理员之前的准备

在 SQL Server – Azure Arc 和密钥保管库资源中设置 Microsoft Entra 管理员需要以下权限。

配置 Azure Arc 的权限

按照指南操作,确保 SQL Server 已连接到 Azure Arc。为 SQL Server – Azure Arc 资源设置 Microsoft Entra 管理员的用户应具有服务器的“参与者”角色。

  1. 转到 Azure 门户
  2. 选择“SQL Server – Azure Arc”,然后选择 SQL Server 主机的实例。
  3. 选择访问控制 (IAM)
  4. 选择“添加”>“添加角色分配”为设置 Microsoft Entra 管理员的用户添加“参与者”角色。

配置 Azure Key Vault 的权限

如果还没有 Azure Key Vault,请创建 Azure Key Vault。 设置 Microsoft Entra 管理员的用户应具有 Azure 密钥保管库的“参与者”角色。 要为 Azure Key Vault 中的用户添加角色,请执行以下操作:

  1. 转到 Azure 门户
  2. 转到密钥保管库资源。
  3. 选择“访问控制 (IAM)”
  4. 选择“添加”>“添加角色分配”为设置 Microsoft Entra 管理员的用户添加“参与者”角色。

设置 SQL Server 主机访问策略

  1. 在 Azure 门户导航到 Azure Key Vault 实例并选择“访问策略”

  2. 选择“添加访问策略”。

  3. 对于“密钥权限”,请使用“Sign”

  4. 对于“机密权限”,请选择“获取”和“列出”。

  5. 对于“证书权限”,请选择“获取”和“列出”

  6. 选择下一步

  7. 在“主体”页上,搜索你计算机的名称 - Azure Arc 实例,是 SQL Server 主机的主机名。

    Screenshot of Azure Arc server resource in portal.

  8. 通过选择两次“下一步”或选择“审查 + 创建”,跳过“应用程序(可选)”。

    Screenshot of Azure portal to review and create access policy.

    验证“主体”的“对象 ID”匹配分配给实例的托管标识的“主体 ID”。

    Screenshot of portal control of JSON view of machine definition.

    若要确认,请转到资源页并在“概览”页的“Essentials”框的右上角选择“JSON 视图”。 在标识下会找到“principalId

  9. 选择创建

必须选择“创建”以确保应用权限。 若要确保已存储权限,请刷新浏览器窗口并检查 Azure Arc 实例的行是否仍然存在。

为 Microsoft Entra 用户设置访问策略

  1. 在 Azure 门户导航到 Azure Key Vault 实例并选择“访问策略”
  2. 选择“添加访问策略”。
  3. 对于“密钥权限”,请选择“获取”、“列出”和“创建”
  4. 对于“机密权限”,请选择“获取”、“列出”和“设置”
  5. 对于“证书权限”,请选择“获取”、“列出”和“创建”
  6. 对于“选择主体”,请添加要用于连接到 SQL Server 的 Microsoft Entra 用户。
  7. 依次选择“添加”、“保存”。

为 SQL Server 设置 Microsoft Entra 管理员

借助全新 API 和门户功能,用户可以为 SQL Server 设置 Microsoft Entra 管理员,无需单独创建 Azure 证书和 Microsoft Entra 应用程序。 选择一个选项卡,了解如何通过自动创建证书和应用程序为连接到 Azure Arc 的 SQL Server 设置 Microsoft Entra 管理员。

注意

在设置 Microsoft Entra 管理员之前,ARM 模板仍需创建 Azure 密钥保管库证书和 Microsoft Entra 应用程序。有关此过程的更多信息,请参阅“教程:为 SQL Server 设置 Microsoft Entra 身份验证”。

使用 Azure 门户设置 Microsoft Entra 管理员,在同一过程中创建 Azure 密钥保管库证书和 Microsoft Entra 应用程序。 在 SQL Server 中使用 Microsoft Entra 身份验证需要完成上述操作。

注意

以前,在设置 Microsoft Entra 管理员之前,需要注册 Azure 密钥保管库证书和 Microsoft Entra 应用程序。 虽然现在不再需要这样做,但用户仍可以选择提供自己的证书和应用程序来设置 Microsoft Entra 管理员。

使用 Azure 门户 设置 Microsoft Entra 管理员

  1. 转到 Azure 门户,选择“SQL Server – Azure Arc”,然后选择 SQL Server 主机的实例。

  2. 检查“SQL Server - Azure Arc”资源的状态,并查看它是否已通过转到“属性”菜单进行连接。 有关详细信息,请参阅验证已启用 Arc 的 SQL Server 资源

  3. 从“资源”菜单的“设置”下选择“Microsoft Entra ID 和 Purview”

  4. 选择“设置管理员”,打开“Microsoft Entra ID”窗格,然后选择将作为管理员登录添加到 SQL Server 的帐户。

  5. 选择“服务托管证书”

  6. 选择“更改密钥保管库”,然后选择现有 Azure Key Vault 资源。

  7. 选择“服务托管的应用注册”

  8. 选择“保存”。 这会向 Arc 服务器代理发送请求,该代理将为该 SQL Server 实例配置 Microsoft Entra 身份验证。 该操作可能需要几分钟才能完成;尝试 Microsoft Entra 登录之前,请等待保存过程确认为 Saved successfully

    服务托管的应用注册为你执行以下操作:

    • 在密钥保管库中创建名称格式为 <hostname>-<instanceName><uniqueNumber> 的证书。
    • 创建名称为 <hostname>-<instanceName><uniqueNumber> 等的 Microsoft Entra 应用程序,并为该应用程序分配必要的权限。 有关详细信息,请参阅授予应用程序权限
    • 为应用程序分配 Azure 密钥保管库中的新证书。
    • 将这些设置保存到 Azure Arc。

    Screenshot of setting Microsoft Entra authentication with automatic certificate and application generation in the Azure portal.

注意

为 Microsoft Entra 创建的证书不会自动轮换。 客户可以选择提供自己的证书和应用程序设置 Microsoft Entra 管理员。 有关更多信息,请参阅“教程:为 SQL Server 设置 Microsoft Entra 身份验证”。

设置 Microsoft Entra 管理员后,使用 Microsoft Entra 管理员凭据即可连接到 SQL Server。 但是,在向 Microsoft Entra 应用程序授予管理员同意之前,涉及创建新的 Microsoft Entra 登录和用户的任何进一步数据库活动均将失败。

注意

要向应用程序授予“管理员同意”,授予同意的帐户需要 Microsoft Entra ID 全局管理员或特权角色管理员的角色。 这些角色是向应用程序授予管理员同意所必需的,但设置 Microsoft Entra 管理员则不需要。

  1. Azure 门户,选择“Microsoft Entra ID”>“应用注册”,然后选择新创建的应用程序。 应用程序的名称应类似于 <hostname>-<instanceName><uniqueNumber>

  2. 选择“API 权限”菜单。

  3. 选择“授予管理员同意”。

    Screenshot of application permissions in the Azure portal.

若未向应用程序授予管理员同意,在 SQL Server 中创建 Microsoft Entra 登录或用户将导致以下错误:

Msg 37455, Level 16, State 1, Line 2
Server identity does not have permissions to access MS Graph.

使用 Microsoft Entra 身份验证连接到 SQL Server

现已为连接到 Azure Arc 的 SQL Server 设置了 Microsoft Entra 身份验证。按照教程:为 SQL Server 设置 Microsoft Entra 身份验证一文中设置 Microsoft Entra 管理员之后的章节使用 Microsoft Entra 身份验证连接到 SQL Server。

另请参阅