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

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

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

必须使用下列其中一个 Azure 密钥存储来存储客户管理的密钥:

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

注意

Azure 密钥保管库 和 Azure 密钥保管库 托管 HSM 支持使用相同的 API 和管理接口来配置客户管理的密钥。 Azure 密钥保管库 托管 HSM 也支持 Azure 密钥保管库 支持的任何操作。

关于客户管理的密钥

下图说明了 Azure 存储如何使用 Microsoft Entra ID 以及密钥保管库或托管 HSM,通过客户管理的密钥发出请求:

客户管理密钥在 Azure 存储中与 Microsoft Entra ID 和密钥保管库配合使用的工作原理图。

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

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

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

  • wrapkey
  • unwrapkey
  • get

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

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

用于队列和表的客户管理的密钥

存储在队列和表存储中的数据,当你为存储账户启用客户管理的密钥时,并不会自动受到客户管理密钥的保护。 你可以选择在创建存储账户时配置这些服务纳入保护范围。

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

Blob 存储 和 Azure 文件存储 中的数据在配置存储账户时始终由客户管理的密钥保护。

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

配置存储帐户的客户管理的密钥时,Azure 存储将使用关联密钥保管库或托管 HSM 中客户管理的密钥来包装帐户的根数据加密密钥。 根加密密钥的保护会更改,但是 Azure 存储帐户中的数据将始终保持加密状态。 您无需采取额外措施来确保数据保持加密。 客户管理的密钥的保护会立即生效。

可随时在客户管理的密钥与 Microsoft 管理的密钥之间进行切换。 有关 Microsoft 管理的密钥的详细信息,请参阅关于加密密钥管理。

密钥保管库要求

存储密钥的密钥库或托管HSM必须满足以下要求:

  • 已启用软删除。
  • 已启用清除保护。
  • 密钥是RSA或 RSA-HSM 密钥。
  • 密钥大小为2048、3072或4096。

有关密钥的详细信息,请参阅关于密钥。

密钥库或托管HSM会带来相关成本。 有关详细信息,请参阅 密钥保管库 定价。

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

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

当你在同一租户中启用客户管理的密钥库时,必须指定托管身份以授权访问包含该密钥的密钥库。 托管身份可以是用户分配的或系统分配的托管身份:

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

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

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

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

使用托管 HSM 的客户管理的密钥

可以使用 Azure 密钥保管库托管 HSM 为新帐户或现有帐户配置客户管理的密钥。 还可以使用与存储帐户位于同一租户或其他租户中的托管 HSM 配置客户管理的密钥。 在托管 HSM 中配置客户管理的密钥的过程与在密钥保管库中配置客户管理的密钥的过程相同,但权限略有不同。 有关详细信息,请参阅使用 Azure 密钥保管库 托管 HSM 中存储的客户管理的密钥配置加密。

更新密钥版本

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

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

修改密钥或密钥版本时,根加密密钥的保护会更改,但是 Azure 存储帐户中的数据将始终保持加密状态。 无需执行任何额外操作即可确保您的数据被保护。 旋转密钥版本不会影响性能。 轮换密钥版本时,不会发生停机。

重要说明

若要轮换密钥,请根据合规性要求在密钥保管库或托管 HSM 中创建新版本的密钥。 Azure 存储不处理密钥轮换,所以你必须在密钥库中管理密钥的轮换。

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

自动更新密钥版本

若要在有新版本可用时自动更新客户管理的密钥的密钥版本,请在为存储帐户启用“使用客户管理的密钥进行加密”时省略密钥版本。 如果你省略了密钥版本,Azure 存储 会每天检查密钥库或受管理的 HSM,寻找客户管理密钥的新版本。 如果有新的密钥版本,Azure 存储 会自动使用该密钥的最新版本。

Azure 存储每天只会在密钥保管库中检查一次是否存在密钥的新版本。 轮换密钥时,请等待 24 小时,然后禁用旧版本。

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

手动更新密钥版本

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

当你明确指定密钥版本时,创建新版本时必须手动更新存储账户,使其使用新的密钥版本URI。 若要了解如何将存储帐户更新为使用新密钥版本,请参阅使用 Azure 密钥保管库 中存储的客户管理的密钥配置加密或使用 Azure 密钥保管库 托管 HSM 中存储的客户管理的密钥配置加密。

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

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

禁用密钥后,客户端无法调用读取或写入资源或其元数据的操作。 所有用户尝试调用这些操作均以错误代码403(禁止)失败。

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

所有未列在以下章节中的数据操作,都可以在客户管理的密钥被撤销或某个密钥被禁用或删除后继续进行。

若要撤销对客户托管密钥的访问权限,请使用 PowerShell 或 Azure CLI。

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

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

Azure 托管磁盘的由客户管理的密钥

你也可以使用客户管理的密钥来管理 Azure 管理磁盘的加密。 客户管理的密钥对托管磁盘的工作方式与 Azure 存储 资源不同。 有关详细信息,请参阅Azure托管磁盘的服务器端加密。

后续步骤