创建配置了用户分配的托管标识和跨租户 CMK 用于 TDE 的 Azure SQL 数据库逻辑服务器

适用于:Azure SQL 数据库

在本指南中,我们将完成使用透明数据加密(TDE)和客户管理的密钥(CMK) 在 Azure SQL 数据库中创建逻辑服务器 的步骤,该服务器使用 用户分配的托管标识 在与逻辑服务器的租户不同的Microsoft Entra 租户中访问 Azure 密钥保管库 。 有关详细信息,请参阅使用透明数据加密的跨租户客户管理的密钥。

注意

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

先决条件

首个租户的必要资源

考虑到本教程的教学目标,我们假设第一个租户属于独立软件供应商 (ISV),第二个租户来自其客户端。 有关此场景的详细信息,请参阅使用透明数据加密的跨租户客户管理的密钥。

在使用跨租户 CMK 为 Azure SQL 数据库配置 TDE 之前,需要具有一个多租户 Microsoft Entra 应用程序,该应用程序配置了用户分配的托管标识,该标识分配为应用程序的联合标识凭据。 按照先决条件中的指南之一操作。

  1. 在要创建 Azure SQL 数据库的第一个租户上,创建和配置多租户Microsoft Entra 应用程序

  2. 创建用户分配的托管标识

  3. 配置用户分配的托管标识,使之成为多租户应用程序的联合标识凭据

  4. 记录应用程序名称和应用程序 ID。 这可以在 Azure 门户>Microsoft Entra ID>企业应用程序中找到,然后搜索创建的应用程序

第二个租户上所需的资源

注意

我们计划在 2024 年 3 月 30 日弃用 Azure AD PowerShell。 若要了解详细信息,请阅读弃用更新。

我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 Microsoft Graph PowerShell 允许访问所有Microsoft Graph API,并在 PowerShell 7 上可用。 有关常见迁移查询的解答,请参阅迁移常见问题解答。

  1. 在 Azure 密钥保管库 所在的第二个租户上,使用第一个租户中注册应用程序的应用程序 ID 创建服务主体(应用程序)。 下面是一些有关如何注册多租户应用程序的示例。 将 <TenantID> 和 <ApplicationID> 分别替换为 Microsoft Entra ID 中的客户端 租户 ID 和多租户应用程序中的 应用程序 ID:

    • PowerShell:

      Connect-AzureAD -TenantID <TenantID> -Environment AzureChinaCloud
      New-AzADServicePrincipal  -ApplicationId <ApplicationID>
      
    • Azure CLI:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. 请转到 Azure 门户>Microsoft Entra ID>企业应用程序,然后搜索创建的应用程序。

  3. 创建 Azure 密钥保管库(如果还没有),并创建密钥

  4. 创建或设置访问策略。

    1. 创建访问策略时,在“密钥权限”下选择“获取、包装密钥和解包密钥”权限
    2. 在创建访问策略时,选择在 主体 选项的第一步中创建的多租户应用程序

    Azure 门户中 Azure 密钥保管库 的访问策略菜单的屏幕截图。

  5. 创建访问策略和密钥后, 从 Azure 密钥保管库 检索密钥 并记录 密钥标识符

使用客户管理的跨租户密钥 (CMK) 创建已配置 TDE 的服务器

本指南将指导你完成使用用户分配的托管标识创建新的逻辑服务器和数据库的过程,以及如何设置跨租户客户托管密钥。 在服务器创建阶段为透明数据加密设置客户管理的密钥时,必须使用用户分配的托管标识。

重要

使用 API 创建 SQL 逻辑服务器的用户或应用程序需要在订阅上拥有SQL Server 参与者和托管标识操作员 RBAC 角色或更高级别。

若要在 Azure 门户中创建新的 Azure SQL 数据库,请执行以下操作:

  1. 转到 Azure SQL 中心。

  2. 在资源菜单中,展开 Azure SQL 数据库 并选择 SQL 数据库。

  3. 在 + 创建 下拉菜单中,选择 SQL 数据库。

    Azure 门户中的屏幕截图,其中显示了“SQL 数据库”页、“创建”按钮和“SQL 数据库”选项。

  4. 在“创建 SQL 数据库”窗体的“基本信息”选项卡上的“项目详细信息”下,选择所需的 Azure订阅 。

  5. 对于“资源组”,请选择“新建”,输入资源组的名称,然后选择“确定” 。

  6. 输入数据库名称。 例如,ContosoHR。

  7. 对于“服务器”,选择“新建”,并使用以下值填写“新服务器”窗体 :

    • 服务器名称:输入唯一的服务器名称。 对于 Azure 中的所有服务器,服务器名称必须全局唯一,而不只是在订阅中唯一。 输入类似 mysqlserver135 的值,Azure 门户将告知你的输入内容是否可用。
    • 服务器管理员登录名:输入管理员登录名,例如:。
    • 密码:输入符合密码要求的密码,然后在“确认密码”字段中再次输入该密码。
    • 位置:从下拉列表中选择一个位置

    重要

    不要在服务器管理员登录名字段中包括任何个人、敏感或机密信息。 在此字段中输入的数据不被视为 客户数据。

  8. 选择“ 下一步:网络 ”移动到下一步。

  9. 在“网络”选项卡上,对于“连接方法”,选择“公共终结点” 。

  10. 对于“防火墙规则”,将“添加当前客户端 IP 地址”设置为“是” 。 将“允许 Azure 服务和资源访问此服务器”设置保留为“否” 。 此页面上的其余选择可以保留为默认值。

  11. 选择“ 下一步:安全性 ”移动到下一步。

  12. 在“安全”选项卡的“身份”下,选择“配置身份”。

  13. 在“标识”菜单上,为“系统分配的托管标识”选择“关闭”,然后在“用户分配的托管标识”下选择“添加”。 选择所需的订阅,然后在“用户分配的托管标识”下,从所选订阅中选择所需的用户分配的托管标识。 然后选择“添加”按钮。

  14. 在“主要标识”下,选择在上一步中选择的相同用户指定的托管标识。

  15. 对于“联合客户端标识”,请选择“更改标识”选项,并搜索在先决条件中创建的多租户应用程序。

    配置服务器标识时用户分配的托管标识的屏幕截图。

    注意

    如果多租户应用程序尚未添加到具有所需权限(获取、包装密钥、解包密钥)的密钥保管库访问策略,在 Azure 门户中使用此应用程序进行联合身份验证将显示错误。 在配置联合客户端标识之前,请确保正确配置权限。

  16. 选择应用。

  17. 在“安全”选项卡上的 “透明数据加密密钥管理”下,可以配置 服务器级密钥 或 数据库级密钥。 服务器级别密钥的默认值为服务管理的密钥。 如果要为服务器配置客户管理的密钥,请选择“ 配置透明数据加密 ”。

  18. 在 “透明数据加密 ”页中,选择 “客户管理的密钥”,并显示一个选项,用于 输入密钥标识符 。 添加从第二个租户中的密钥获取的密钥标识符。

    使用密钥标识符配置 TDE 的屏幕截图。

    有关配置数据库级别密钥的信息,请参阅 具有数据库级客户管理的密钥的 TDE 的标识和密钥管理。

  19. 选择应用。

  20. 选择“下一步: 其他设置”。

  21. 选择下一步:标签。

  22. 考虑使用 Azure 标记。 例如,用于标识谁创建了资源的“所有者”或“CreatedBy”标记,以及用于标识此资源是否在生产、开发等环境中的环境标记。

  23. 选择“查看 + 创建”。

  24. 在“查看 + 创建”页上,查看后选择“创建”。