你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 门户为 Azure Database for MySQL 进行数据加密

适用于:Azure Database for MySQL - 单一服务器

重要

Azure Database for MySQL 单一服务器处于停用路径。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?

了解如何使用 Azure 门户为 Azure Database for MySQL 设置和管理数据加密。

Azure CLI 的先决条件

  • 必须有一个 Azure 订阅,并且是该订阅的管理员。

  • 在 Azure Key Vault 中,创建密钥保管库和用于客户托管密钥的密钥。

  • 该密钥保管库必须具有以下属性才能用作客户管理的密钥:

    • 软删除

      az resource update --id $(az keyvault show --name \ <key_vault_name> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
      
    • 清除保护

      az keyvault update --name <key_vault_name> --resource-group <resource_group_name>  --enable-purge-protection true
      
    • 保留天数设置为 90 天

      az keyvault update --name <key_vault_name> --resource-group <resource_group_name>  --retention-days 90
      
  • 该密钥必须具有以下属性才能用作客户管理的密钥:

    • 无过期日期
    • 未禁用
    • 执行 getwrapunwrap 操作
    • recoverylevel 属性设置为 Recoverable(这要求启用软删除,并将保留期设置为 90 天)
    • 已启用清除保护

    可以使用以下命令来验证密钥的上述属性:

    az keyvault key show --vault-name <key_vault_name> -n <key_name>
    
  • Azure Database for MySQL - 单一服务器应位于常规用途或内存优化定价层和常规用途存储 v2 上。 在继续操作之前,请参阅使用客户管理的密钥进行数据加密的限制。

为密钥操作设置正确的权限

  1. 在 Key Vault 中,选择“访问策略”>“添加访问策略”。

    Screenshot of Key Vault, with Access policies and Add Access Policy highlighted

  2. 选择“密钥权限”,然后选择“Get”、“Wrap”、“Unwrap”和“Principal”(MySQL 服务器的名称)。 如果在现有主体列表中找不到你的服务器主体,则需要注册服务器主体。 如果你首次尝试设置数据加密并且失败,系统将提示你注册服务器主体。

    Access policy overview

  3. 选择“保存”。

为 Azure Database for MySQL 设置数据加密

  1. 在 Azure Database for MySQL 中,选择“数据加密”以设置客户管理的密钥。

    Screenshot of Azure Database for MySQL, with Data encryption highlighted

  2. 可以选择密钥保管库和密钥对,也可以输入密钥标识符。

    Screenshot of Azure Database for MySQL, with data encryption options highlighted

  3. 选择“保存”。

  4. 为确保所有文件(包括临时文件)完全加密,请重新启动服务器。

对还原或副本服务器使用数据加密

在使用客户存储在 Key Vault 中的托管密钥对 Azure Database for MySQL 进行加密后,还将对服务器的任何新创建的副本进行加密。 可通过本地或异地还原操作,或通过副本(本地/跨区域)操作来创建这个新副本。 因此,对于加密的 MySQL 服务器,可以使用以下步骤来创建加密的还原服务器。

  1. 在服务器上,选择“概述”>“还原”。

    Screenshot of Azure Database for MySQL, with Overview and Restore highlighted

    或对于启用了复制的服务器,在“设置”标题下,选择“复制”。

    Screenshot of Azure Database for MySQL, with Replication highlighted

  2. 还原操作完成后,创建的新服务器将用主服务器的密钥进行加密。 但服务器上的功能和选项已禁用,并且服务器不可访问。 这会阻止任何数据操作,因为尚未向新服务器的标识授予访问密钥保管库的权限。

    Screenshot of Azure Database for MySQL, with Inaccessible status highlighted

  3. 要使服务器可访问,请重新验证已还原服务器上的密钥。 选择“数据加密”>“重新验证密钥”。

    注意

    第一次尝试重新验证时将失败,因为需要为新服务器的服务主体授予密钥保管库的访问权限。 要生成服务主体,请选择“重新验证密钥”,虽然将显示错误,但会生成服务主体。 之后,请参阅本文前面的这些步骤

    Screenshot of Azure Database for MySQL, with revalidation step highlighted

    你必须授予密钥保管库对新服务器的访问权限。 有关详细信息,请参阅分配 Key Vault 访问策略

  4. 注册服务主体后再次重新验证密钥,服务器将恢复其正常功能。

    Screenshot of Azure Database for MySQL, showing restored functionality

后续步骤