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

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

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

关于客户托管密钥

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

客户管理密钥在 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
  • 获取

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

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

用户管理的队列和表密钥

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

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

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

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

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

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

密钥保管库要求

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

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

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

密钥保管库会产生相关费用。 有关详细信息,请参阅 密钥保管库 定价。

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

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

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

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

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

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

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

更新密钥版本

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

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

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

重要

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

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

自动更新密钥版本

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

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

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

手动更新密钥版本

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

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

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

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

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

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

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

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

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

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

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

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

后续步骤