Compartilhar via

用于Azure 存储加密的客户管理的密钥

可以使用自己的加密密钥来保护存储帐户中的数据。 指定客户托管密钥时,该密钥用于保护和控制对数据加密密钥的访问。 使用客户托管密钥可以更灵活地管理访问控制。

可以创建自己的密钥并将其存储在密钥保管库中,也可以使用Azure 密钥保管库 API 生成密钥。 存储帐户和密钥保管库可以位于不同的Microsoft Entra租户、区域和订阅中。

关于客户托管密钥

下图显示了Azure 存储如何使用Microsoft Entra ID和密钥保管库来使用客户管理的密钥发出请求:

图表显示客户管理的密钥在 Azure 存储 中的工作方式

下表说明了图中的编号步骤:

  1. Azure 密钥保管库管理员向托管标识授予加密密钥的权限。 托管标识可以是你创建和管理的用户分配的托管标识,也可以是与存储帐户关联的系统分配的托管标识。
  2. Azure 存储管理员使用客户管理的密钥为存储帐户配置加密。
  3. Azure 存储 使用 Azure 密钥保管库 管理员在步骤 1 中授予权限的托管身份,通过 Microsoft Entra ID 验证对 Azure 密钥保管库 的访问权限。
  4. Azure 存储将帐户加密密钥与客户管理的密钥包装在Azure 密钥保管库中。
  5. 对于读/写操作,Azure 存储向Azure 密钥保管库发送请求,以解包帐户加密密钥以执行加密和解密操作。

与存储帐户关联的托管标识必须至少具有这些权限才能访问Azure 密钥保管库中的客户管理的密钥:

  • wrapkey
  • unwrapkey
  • 获取

有关密钥权限的详细信息,请参阅密钥类型、算法和操作

Azure Policy提供了一个内置策略,要求存储帐户对Blob 存储和Azure 文件存储工作负荷使用客户管理的密钥。 有关详细信息,请参阅 Azure Policy 内置策略定义中的 Storage 部分

用户管理的队列和表密钥

为存储帐户启用客户管理的密钥后,存储在队列和表存储中的数据不会自动受到客户管理的密钥的保护。 创建存储帐户时,可以选择性地将这些服务配置为受到这种保护。

若要详细了解如何创建支持用于队列和表的客户管理的密钥的存储帐户,请参阅创建支持用于表和队列的客户管理的密钥的帐户

为存储帐户配置客户管理的密钥时,Blob 存储和Azure 文件存储中的数据始终受到客户管理的密钥的保护。

为存储帐户启用客户管理的密钥

为存储帐户配置客户管理的密钥时,Azure 存储使用关联的密钥保管库中的客户管理的密钥包装帐户的根数据加密密钥。 根加密密钥的保护会更改,但Azure 存储帐户中的数据始终保持加密状态。 你无需执行任何其他操作来确保数据保持加密状态。 客户管理的密钥的保护会立即生效。

可以随时在客户管理的密钥和Microsoft管理的密钥之间进行切换。 有关Microsoft管理的密钥的详细信息,请参阅 About encryption key management

密钥保管库要求

存储密钥的密钥保管库必须同时启用软删除和清除保护。 Azure存储加密支持大小为 2048、3072 和 4096 的 RSA 密钥。 有关密钥的详细信息,请参阅关于密钥

使用密钥保管库会有相关的成本。 有关详细信息,请参阅 密钥保管库 定价

使用同一租户中的密钥保管库的客户管理的密钥

可以使用同一租户或不同Microsoft Entra租户中的密钥保管库和存储帐户配置客户管理的密钥。 若要了解如何在密钥保管库和存储帐户位于同一租户中时使用客户管理的密钥配置Azure 存储加密,请参阅以下文章之一:

当你使用同一租户中的密钥保管库启用客户管理的密钥时,必须指定一个托管标识,用于授权访问密钥所在的密钥保管库。 托管标识可以是用户分配的托管标识,也可以是系统分配的托管标识:

  • 如果在创建存储帐户时配置客户管理的密钥,则必须使用用户分配的托管标识。
  • 在现有的存储帐户上配置客户管理的密钥时,可以使用用户分配的托管标识或系统分配的托管标识。

若要详细了解系统分配的托管标识与用户分配的托管标识,请参阅Azure资源的托管标识。 若要了解如何创建和管理用户分配的托管标识,请参阅管理用户分配的托管标识

在不同租户中的密钥保管库中进行客户管理的密钥

若要了解如何在密钥保管库和存储帐户位于不同的Microsoft Entra租户中时使用客户管理的密钥配置Azure 存储加密,请参阅以下文章之一:

更新密钥版本

遵循加密最佳做法意味着定期轮换保护存储帐户的密钥,通常至少每两年轮换一次。 Azure 存储永远不会修改密钥保管库中的密钥,但你可以配置密钥轮换策略,以便根据合规性要求轮换密钥。 有关详细信息,请参阅 Azure 密钥保管库 中配置加密密钥自动轮换。

在密钥保管库中轮换密钥后,必须更新存储帐户的客户管理的密钥配置,以使用新的密钥版本。 客户管理的密钥支持自动和手动更新保护帐户的密钥的密钥版本。 可以决定在配置客户管理的密钥或更新配置时要使用的方法。

修改密钥或密钥版本时,根加密密钥的保护会更改,但Azure 存储帐户中的数据始终保持加密状态。 无需执行其他操作即可确保数据受到保护。 轮换密钥版本不会影响性能。 轮换密钥版本不会造成停机。

重要

若要轮换密钥,请根据你的合规性要求,在密钥保管库中创建新版本的密钥。 Azure 存储不处理密钥轮换,因此需要管理密钥保管库中的密钥轮换。

轮换用于客户管理的密钥时,该操作当前不会记录到Azure 存储的Azure Monitor日志中。

自动更新密钥版本

若要在有新版本可用时自动更新客户管理的密钥,请在为存储帐户启用“使用客户管理的密钥进行加密”时省略密钥版本。 如果省略密钥版本,则Azure 存储每天检查密钥保管库中是否有新版本的客户管理的密钥。 如果新的密钥版本可用,则Azure 存储会自动使用最新版本的密钥。

Azure 存储每天仅检查一次新密钥版本的密钥保管库。 轮换密钥时,请务必等待 24 小时,然后再禁用旧版本。

如果存储帐户以前配置为手动更新密钥版本,而你想要将其更改为自动进行更新,则可能需要将密钥版本显式更改为空字符串。 若要详细了解如何执行此操作,请参阅配置加密以自动更新密钥版本

手动更新密钥版本

若要使用特定版本的密钥进行Azure 存储加密,请在为存储帐户启用客户管理的密钥加密时指定该密钥版本。 如果指定密钥版本,则Azure 存储使用该版本进行加密,直到手动更新密钥版本。

显式指定密钥版本后,必须手动更新存储帐户,以便在创建新版本时使用新密钥版本 URI。 若要了解如何更新存储帐户以使用新版本的密钥,请参阅使用存储在 Azure 密钥保管库 中的客户管理的密钥配置加密。

撤销对使用客户管理的密钥的存储帐户的访问权限

要撤销对使用客户管理密钥的存储帐户的访问权限,请禁用密钥保管库中的密钥。 要了解如何禁用密钥,请参阅撤销对使用客户管理的密钥的存储帐户访问权限

在禁用密钥之后,客户端将无法调用在资源或其元数据中进行读取或写入的操作。 对于所有用户,尝试调用以下操作将会失败,并显示错误代码 403(禁止访问)

若要再次调用这些操作,请还原对客户托管密钥的访问权限。

撤销客户管理的密钥、禁用或删除密钥后,以下部分中未列出的所有数据操作可以继续进行。

若要撤销对客户管理的密钥的访问权限,请使用 PowerShellAzure CLI

Blob 存储撤消密钥后失败的操作

Azure 文件存储撤消密钥后失败的操作

Azure托管磁盘的客户自管密钥

客户管理的密钥还可用于管理Azure托管磁盘的加密。 客户管理的密钥对于托管磁盘的行为方式不同于Azure 存储资源。 有关详细信息,请参阅适用于 Windows 的 Azure 托管磁盘的服务器端加密 或适用于 Linux 的 Azure 托管磁盘的服务器端加密

后续步骤