当存储帐户使用客户管理的密钥时,某些帐户操作(例如删除帐户、将其迁移到新的Microsoft Entra ID租户),或者切换到其他加密密钥类型,如果不能按正确的顺序执行这些密钥,则数据将永久无法访问。 每个方案中的核心风险是,无法自动恢复或移动将存储帐户链接到密钥保管库的托管标识,从而破坏解密数据的能力。
本文介绍每个操作期间发生的情况,以及可以采取哪些步骤来避免永久数据丢失。
删除和恢复存储帐户
如果删除帐户,然后 恢复该帐户,则无法在删除之前恢复与该帐户关联的任何 托管标识 。
可以恢复存储帐户和密钥保管库,但不能恢复托管标识。 需要设置新的托管标识,并将该标识与帐户和密钥保管库相关联。 否则,无法解密数据以供使用,对存储数据平面的调用将失败。 若要了解如何设置托管标识,请参阅 为现有存储帐户配置托管标识。
将存储帐户迁移到另一个Microsoft Entra ID租户
如果将存储帐户移动到另一个Microsoft Entra ID租户,则与存储帐户关联的托管标识和密钥保管库无法随它一起移动。 迁移帐户后,需要创建新的托管标识。 否则,无法解密该帐户中的数据,并且对该数据的任何调用都将失败。 若要了解如何设置托管标识,请参阅 托管标识。
切换到另一种类型的加密密钥
如果要切换到使用Microsoft托管密钥或客户提供的密钥,请确保在删除客户管理的密钥所需的托管标识或密钥保管库之前进行该切换。 需要这些资源来解密数据,包括帐户设置。 需要修改这些设置才能进行切换。
Microsoft管理的密钥和客户提供的密钥不需要Azure 密钥保管库或托管标识,因此,在帐户切换到使用这些密钥类型之一后,不再需要客户管理的密钥访问,可以安全地删除密钥保管库以及与该密钥保管库关联的任何不需要的托管标识。
如果在尝试切换之前删除了密钥保管库,则只要是在密钥保管库的软删除保留期内,便可以先恢复该密钥保管库,然后更改你的账户所使用的加密密钥方法。 若要了解详细信息,请参阅 密钥保管库 软删除。 但是,如果已删除的密钥保管库超过软删除保留期,则此条件会导致 永久数据丢失,因为数据保持加密且没有密钥访问它。
错误代码疑难解答
如果最近更改了帐户,尝试访问数据时遇到错误,则可能遇到本文前面列出的某个方案。 查看每个部分,以确定其中任何方案是否与帐户更改相关。 如果不确定引用的错误代码是什么,下表提供了最可能的示例,说明你遇到的问题和建议的修补程序。
| 错误代码 | HTTP 状态 | 潜在原因 | 建议的修复方法 |
|---|---|---|---|
| ManagedServiceIdentityNotFound | 400 | 未在请求中指定加密标识 | 在包含加密标识的情况下重试请求 |
| ManagedServiceIdentityNotFound | 400 | 帐户已配置联合客户端 ID,但未分配有效的托管标识 | 为你的帐户设置托管标识,或确认其是否已正确设置 |
| ManagedServiceIdentityNotFound | 400 | 标识资源不存在或已从租户中删除 | 为你的帐户设置托管标识,或确认其是否已正确设置 |
| ManagedServiceIdentityNotFound | 400 | 加密范围需要托管标识,但帐户上未配置任何标识 | 为你的帐户设置托管标识,或确认其是否已正确设置 |
| ManagedServiceIdentityNotFoundOnTenant | 400 | 托管标识存在,但属于与存储账户不同的 Azure 租户 | 为你的帐户设置托管标识,或确认其是否已正确设置 |
| 无法获取托管标识凭据 | 400 | 系统分配的标识凭据缺失或无效 | 验证是否已包含身份凭据,且其内容正确 |
| 无法获取托管标识凭据 | 400 | 用户分配的标识凭据缺失或无效 | 验证是否已包含身份凭据,且其内容正确 |
| MissingUserAssignedIdentity | 400 | 你指定了用户分配的标识类型,但未提供要使用的任何用户分配标识 | 使用包含用户分配的标识重试请求 |