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

为 Azure NetApp 文件卷加密配置客户管理的密钥

用于加密 Azure NetApp 文件卷的客户管理的密钥使你能够在创建新卷时使用自己的密钥而不是平台管理的密钥。 使用客户管理的密钥,你可以全面管理密钥的生命周期、密钥使用权限以及密钥审核操作之间的关系。

下图演示了客户管理的密钥如何与 Azure NetApp 文件配合使用:

客户管理的密钥的概念图。

  1. Azure NetApp 文件向托管标识授予加密密钥的权限。 托管标识可以是你创建和管理的用户分配的托管标识,也可以是与 NetApp 帐户关联的系统分配的托管标识。

  2. 可以使用客户管理的密钥为 NetApp 帐户配置加密。

  3. 可以使用 Azure Key Vault 管理员在步骤 1 中授予权限的托管标识,通过 Microsoft Entra ID 对 Azure Key Vault 的访问权限进行身份验证。

  4. Azure NetApp 文件使用 Azure Key Vault 中的客户管理的密钥包装帐户加密密钥。

    客户管理的密钥不会对 Azure NetApp 文件的性能产生影响。 它与平台管理的密钥的唯一区别在于密钥的管理方式。

  5. 对于读/写操作,Azure NetApp 文件将向 Azure Key Vault 发送解包帐户加密密钥的请求,以执行加密和解密操作。

注意事项

  • 客户管理的密钥只能在新卷上配置。 无法将现有卷迁移到客户管理的密钥加密。
  • 若要使用客户管理的密钥创建卷,必须选择标准网络功能。 无法将客户管理的密钥卷与使用基本网络功能配置的卷一起使用。 按照在卷创建页面中设置网络功能选项中的说明进行操作。
  • 为了提高安全性,可以在密钥保管库的网络设置中选择“禁用公共访问”选项。 选择此选项时,还必须选择“允许受信任的 Microsoft 服务绕过此防火墙”,以允许 Azure NetApp 文件服务访问加密密钥。
  • 客户管理的密钥支持自动托管系统标识 (MSI) 证书续订。 如果证书有效,则无需手动更新。
  • Azure NetApp 文件客户管理的密钥不支持将专用链接子网上的 Azure 网络安全组应用于 Azure Key Vault。 除非在子网上启用了 Private endpoint network policy,否则网络安全组不会影响到专用链接的连接。 必须将此选项保持禁用状态。
  • 如果 Azure NetApp 文件无法创建客户管理的密钥卷,则会显示错误消息。 有关详细信息,请参阅错误消息和故障排除部分。
  • 如果 Azure Key Vault 不可访问,Azure NetApp 文件将失去对加密密钥的访问权限,并且能够读取或将数据写入使用客户管理的密钥启用的卷。 在这种情况下,请创建支持票证,为受影响的卷手动还原访问权限。
  • Azure NetApp 文件在具有跨地区复制或跨区域复制关系的源和数据复制卷上支持客户管理的密钥。

支持的区域

以下区域支持 Azure NetApp 文件客户管理的密钥:

  • 澳大利亚中部
  • 澳大利亚中部 2
  • 澳大利亚东部
  • 澳大利亚东南部
  • 巴西南部
  • 巴西东南部
  • 加拿大中部
  • 加拿大东部
  • 印度中部
  • 美国中部
  • 东亚
  • 美国东部
  • 美国东部 2
  • 法国中部
  • 德国北部
  • 德国中西部
  • 日本东部
  • 日本西部
  • 韩国中部
  • 韩国南部
  • 美国中北部
  • 北欧
  • 挪威东部
  • 挪威西部
  • 卡塔尔中部
  • 南非北部
  • 美国中南部
  • 印度南部
  • 东南亚
  • 瑞典中部
  • 瑞士北部
  • 瑞士西部
  • 阿联酋中部
  • 阿拉伯联合酋长国北部
  • 英国南部
  • 英国西部
  • 西欧
  • 美国西部
  • 美国西部 2
  • 美国西部 3

要求

在创建第一个客户管理的密钥卷之前,必须设置:

  • 一个包含至少一个密钥的 Azure Key Vault
    • 密钥保管库必须启用“软删除”和“清除保护”。
    • 密钥的类型必须为 RSA。
  • 密钥保管库必须具有 Azure 专用终结点
    • 该专用终结点不能驻留在委托给 Azure NetApp 文件的同一子网中。 子网必须与委托给 Azure NetApp 的子网位于同一 VNet 中。

有关 Azure Key Vault 和 Azure 专用终结点的详细信息,请参阅:

将 NetApp 帐户配置为使用客户管理的密钥

  1. 在 Azure 门户和 Azure NetApp 文件下,选择“加密”。

    使用“加密”页可以管理 NetApp 帐户的加密设置。 它包括一个选项,用于将 NetApp 帐户设置为使用自己的加密密钥,该密钥存储在 Azure Key Vault 中。 此设置为 NetApp 帐户提供系统分配的标识,并为具有所需密钥权限的标识添加访问策略。

    加密菜单的屏幕截图。

  2. 将 NetApp 帐户设置为使用客户管理的密钥时,可以通过两种方式指定密钥 URI:

    • 从密钥保管库中选择”选项可用于选择密钥保管库和密钥。 选择密钥界面的屏幕截图。

    • 输入密钥 URI”选项允许你手动输入密钥 URI。 显示密钥 URI 字段的加密菜单的屏幕截图。

  3. 选择要用于 Azure Key Vault 身份验证的标识类型。 如果 Azure Key Vault 配置为使用保管库访问策略作为其权限模型,则这两个选项均可用。 否则,只有用户分配的选项可用。

    • 如果选择“系统分配”,请选择“保存”按钮。 Azure 门户通过以下流程自动配置 NetApp 帐户:系统分配的标识将添加到 NetApp 帐户。 将在 Azure Key Vault 上创建具有“获取”、“加密”、“解密”密钥权限的访问策略。

    包含系统分配的选项的加密菜单的屏幕截图。

    • 如果选择“用户分配”,则必须选择一个标识。 选择“选择标识”打开上下文窗格,在其中选择用户分配的托管标识。

    用户分配的子菜单的屏幕截图。

    如果已将 Azure Key Vault 配置为使用 Vault 访问策略,Azure 门户将通过以下流程自动配置 NetApp 帐户:选择的用户分配标识将添加到 NetApp 帐户。 在 Azure Key Vault 上创建具有“获取”、“加密”、“解密”密钥权限的访问策略。

    如果已将 Azure Key Vault 配置为使用 Azure 基于角色的访问控制,则需要确保所选用户分配的标识在具有操作权限的密钥保管库上具有角色分配:

  4. 选择“保存”,然后观察传达操作状态的通知。 如果操作不成功,则会显示一条错误消息。 请参阅错误消息和故障排除以获取解决错误的帮助。

使用基于角色的访问控制

可以使用配置为使用 Azure 基于角色的访问控制的 Azure Key Vault。 若要通过 Azure 门户配置客户管理的密钥,需要提供用户分配的标识。

  1. 在 Azure 帐户中,依次导航到“密钥保管库”和“访问策略”。

  2. 若要创建访问策略,请在“权限模型”下选择“Azure 基于角色的访问控制”。 访问配置菜单的屏幕截图。

  3. 创建用户分配的角色时,需要授予三个权限才能使用客户管理的密钥:

    1. Microsoft.KeyVault/vaults/keys/read
    2. Microsoft.KeyVault/vaults/keys/encrypt/action
    3. Microsoft.KeyVault/vaults/keys/decrypt/action

    尽管存在包含这些权限的预定义角色,但这些角色所获得的权限超出了所需权限。 建议创建仅具有所需最低权限的自定义角色。 有关详细信息,请参阅 Azure 自定义角色

    {
        "id": "/subscriptions/<subscription>/Microsoft.Authorization/roleDefinitions/<roleDefinitionsID>",
        "properties": {
            "roleName": "NetApp account",
            "description": "Has the necessary permissions for customer-managed key encryption: get key, encrypt and decrypt",
            "assignableScopes": [
                "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroup>"
            ],
            "permissions": [
              {
                "actions": [],
                "notActions": [],
                "dataActions": [
                    "Microsoft.KeyVault/vaults/keys/read",
                    "Microsoft.KeyVault/vaults/keys/encrypt/action",
                    "Microsoft.KeyVault/vaults/keys/decrypt/action"
                ],
                "notDataActions": []
                }
            ]
          }
    }
    
  4. 创建自定义角色并可用于密钥保管库后,可以将其应用至用户分配的标识。

RBAC 审阅和分配菜单的屏幕截图。

使用客户管理的密钥创建 Azure NetApp 文件卷

  1. 从 Azure NetApp 文件中,选择“”,然后选择“+ 添加卷”。

  2. 请按照为 Azure NetApp 文件卷配置网络功能中的说明进行操作:

  3. 对于配置为使用客户管理的密钥的 NetApp 帐户,“创建卷”页面包括选项“加密密钥源”。

    若要使用密钥加密卷,请在“加密密钥源”下拉菜单中选择“客户管理的密钥”。

    使用客户管理的密钥创建卷时,还必须为“网络功能”选项选择“标准”。 不支持基本网络功能。

    还必须选择密钥保管库专用终结点。 下拉菜单显示所选虚拟网络中的专用终结点。 如果所选虚拟网络中没有密钥保管库的专用终结点,则下拉列表为空,你将无法继续。 如果是这样,请参阅 Azure 专用终结点

    创建卷菜单的屏幕截图。

  4. 继续完成卷创建流程。 请参阅:

重新为 NetApp 帐户下的所有卷生成密钥

如果已为 NetApp 帐户配置客户管理的密钥,并且有一个或多个使用客户管理的密钥加密的卷,则可以更改用于加密 NetApp 帐户下所有卷的密钥。 可以选择同一密钥保管库中的任何密钥。 不支持更改密钥保管库。

  1. 在 NetApp 帐户下,导航至“加密”菜单。 在“当前密钥”输入字段下,选择“重新生成密钥”链接。 加密密钥的屏幕截图。

  2. 在“重新生成密钥”菜单中,从下拉菜单中选择可用密钥之一。 所选密钥必须与当前密钥不同。 重新生成密钥菜单的屏幕截图。

  3. 选择“确定”进行保存。 重新生成密钥操作可能需要几分钟。

从系统分配的标识切换到用户分配的标识

若要从系统分配的标识切换到用户分配的标识,必须向目标标识授予对正在使用的密钥保管库的访问权限以及读取/获取、加密和解密权限。

  1. 通过使用 az rest 命令发送 PATCH 请求来更新 NetApp 帐户:

    az rest -m PATCH -u <netapp-account-resource-id>?api-versions=2022-09-01 -b @path/to/payload.json
    

    有效负载应使用以下结构:

    {
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
         "<identity-resource-id>": {}
        }
      },
      "properties": {
        "encryption": {
          "identity": {
            "userAssignedIdentity": "<identity-resource-id>"
          }
        }
      }
    }
    
  2. 使用 az netappfiles account show 命令确认操作成功完成。 输出包括以下字段:

        "id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.NetApp/netAppAccounts/account",
        "identity": {
            "principalId": null,
            "tenantId": null,
            "type": "UserAssigned",
            "userAssignedIdentities": {
                "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity>": {
                    "clientId": "<client-id>",
                    "principalId": "<principalId>",
                    "tenantId": <tenantId>"
                }
            }
        },
    

    请确保:

    • encryption.identity.principalIdidentity.userAssignedIdentities.principalId 中的值匹配
    • encryption.identity.userAssignedIdentityidentity.userAssignedIdentities[] 中的值匹配
    "encryption": {
        "identity": {
            "principalId": "<principal-id>",
            "userAssignedIdentity": "/subscriptions/<subscriptionId>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity>"
        },
        "KeySource": "Microsoft.KeyVault",
    },
    

错误消息和故障排除

本部分列出了 Azure NetApp 文件无法配置客户管理的密钥加密或使用客户管理的密钥创建卷时的错误消息和可能的解决方案。

在 NetApp 帐户上配置客户管理的密钥加密时出错

错误条件 解决方法
The operation failed because the specified key vault key was not found 手动输入密钥 URI 时,请确保 URI 正确。
Azure Key Vault key is not a valid RSA key 确保所选密钥为 RSA 类型。
Azure Key Vault key is not enabled 确保所选密钥已启用。
Azure Key Vault key is expired 确保所选密钥未过期。
Azure Key Vault key has not been activated 确保所选密钥处于活动状态。
Key Vault URI is invalid 手动输入密钥 URI 时,请确保 URI 正确。
Azure Key Vault is not recoverable. Make sure that Soft-delete and Purge protection are both enabled on the Azure Key Vault 将密钥保管库恢复级别更新为:
“Recoverable/Recoverable+ProtectedSubscription/CustomizedRecoverable/CustomizedRecoverable+ProtectedSubscription”
Account must be in the same region as the Vault 确保密钥保管库与 NetApp 帐户位于同一区域。

创建使用客户管理的密钥加密的卷时出错

错误条件 解决方法
Volume cannot be encrypted with Microsoft.KeyVault, NetAppAccount has not been configured with KeyVault encryption 未为 NetApp 帐户启用客户管理的密钥加密。 将 NetApp 帐户配置为使用客户管理的密钥。
EncryptionKeySource cannot be changed 无解决方法。 无法更改卷的 EncryptionKeySource 属性。
Unable to use the configured encryption key, please check if key is active 检查:
- 密钥保管库上的所有访问策略(获取、加密、解密)是否都正确?
- 是否存在密钥保管库的专用终结点?
-VNet 中是否存在虚拟网络 NAT,并且已启用委托 Azure NetApp 文件子网?
Could not connect to the KeyVault 确保专用终结点设置正确,并且防火墙没有阻止从虚拟网络到 KeyVault 的连接。

后续步骤