将 Azure Key Vault 与 Azure Policy 集成

Azure Policy 是一种治理工具,可让用户大规模审核和管理其 Azure 环境,使他们能够在 Azure 资源上设置防护措施,以确保其符合分配的策略规则。 它允许用户对其 Azure 环境执行审核、实时强制和修正。 策略执行的审核的结果将显示在合规性仪表板中,用户可以在其中查看合规和不合规的资源和组件的明细。 有关详细信息,请参阅 Azure Policy 服务概述

使用方案示例:

  • 你想通过在公司的密钥保管库中实现密钥大小下限和证书有效期上限的要求来提高你公司的安全态势,但是你不知道哪些团队合规、哪些不合规。
  • 当前没有解决方案可在组织中执行审核,或者你通过要求组织内各个团队报告其合规性来对环境进行手动审核。 你正在寻找一种方法来自动执行此任务,实时执行审核,并保证审核的准确性。
  • 你需要强制实施公司安全策略,并阻止个人创建自签名证书,但你不能通过自动方式来阻止其创建。
  • 你希望放宽对测试团队的一些要求,但想要对生产环境保持严格控制。 你需要一种简单的自动化方式来分隔你的资源的强制实施。
  • 你需要确保在发生实时站点问题时可以回滚新策略的强制实施。 需要一键式解决方案才能关闭策略的强制实施。
  • 你依赖于第三方解决方案来审核自己的环境,并且希望使用 Azure 内部产品/服务。

策略影响和指南的类型

强制执行策略时,可以确定它对生成的评估的效果。 对于每个策略定义,都可以从多种效果中选择一种。 因此,策略强制实施的行为可能会有所不同,具体取决于要评估的操作类型。 通常,与 Key Vault 集成的策略的效果包括:

  • 审核:当策略的效果设置为 Audit 时,策略不会对环境造成任何中断性变更。 它只会通过在策略合规性仪表板中将组件(例如在指定范围内不符合策略定义的证书)标记为不合规,提醒你注意这些组件。 如果未选择任何策略影响,则“审核”为默认值。

  • 拒绝:当策略的效果设置为 Deny 时,策略将阻止创建新组件(例如证书),并阻止不符合策略定义的现有组件。 密钥保管库中现有的不合规资源不受影响。 “审核”功能将继续运行。

  • 禁用:当策略的效果设置为 Disabled 时,仍会评估策略,但强制实施不会生效,因此符合 Disabled 效果的条件。 这对于针对特定条件(而不是所有条件)禁用策略非常有用。

  • 修改:当策略的效果设置为 Modify时,可以执行资源标记的添加,例如将 Deny 标记添加到网络。 这对于禁用 Azure Key Vault 托管 HSM 对公用网络的访问权限非常有用。 必须通过 roleDefinitionIds 参数为策略定义配置管理标识,以利用 Modify 效果。

  • DeployIfNotExists:当策略的效果设置为 DeployIfNotExists 时,会在满足条件时执行部署模板。 这可用于为 Key Vault 配置诊断设置,以便将资源日志流式传输到 Log Analytics 工作区。 必须通过 roleDefinitionIds 参数为策略定义配置管理标识,以利用 DeployIfNotExists 效果。

  • AuditIfNotExists:当策略的效果设置为 AuditIfNotExists 时,可以识别缺少策略条件详细信息中指定的属性的资源。 这对于识别未启用资源日志的密钥保管库非常有用。 必须通过 roleDefinitionIds 参数为策略定义配置管理标识,以利用 DeployIfNotExists 效果。

可用的“内置”策略定义

预先确定的策略(称为“内置”)有助于对密钥保管库进行治理,因此无需编写 JSON 格式的自定义策略来强制实施与最佳安全做法关联的常用规则。 尽管内置是预先确定的,但某些策略也要求你定义参数。 例如,通过定义策略的效果,可以在强制实施拒绝操作之前审核密钥保管库及其对象,以防止中断。 Azure Key Vault 的当前内置分为四个主要组:密钥保管库、证书、密钥和机密管理。 在每个类别中,策略都进行了分组以驱动特定的安全目标。

密钥保管库

访问控制

使用 Azure Policy 服务,可以跨保管库管理迁移到 RBAC 权限模型。 阅读从保管库访问策略迁移到 Azure 基于角色的访问控制权限模型,了解详细信息

策略 效果
Azure Key Vault 应使用 RBAC 权限模型 审核(默认值)、拒绝、禁用

网络访问

通过限制公用网络访问、启用 Azure 专用链接连接、创建专用 DNS 区域以替代专用终结点的 DNS 解析,并启用防火墙保护,使密钥保管库默认无法由任何公共 IP 访问,从而降低数据泄露的风险。

策略 效果
Azure 密钥保管库应禁用公用网络访问 审核(默认值)、拒绝、禁用
[预览版]:Azure Key Vault 应使用专用链接 审核(默认值)、拒绝、禁用
[预览版]:为 Azure Key Vault 配置专用终结点 DeployIfNotExists(默认值)、禁用
预览:将 Azure 密钥保管库配置为使用专用 DNS 区域 DeployIfNotExists(默认值)、禁用
Azure 密钥保管库应启用防火墙 审核(默认值)、拒绝、禁用
配置密钥保管库以启用防火墙 修改(默认值)、禁用

删除保护

通过启用软删除和清除保护,防止密钥保管库及其对象的永久数据丢失。 虽然软删除允许在可配置的保留期内恢复意外删除的密钥保管库,但清除保护通过强制实施软删除密钥保管库的强制保留期来保护你免受内部攻击。 只有启用软删除后才能启用清除保护。 你的组织或 Azure 内的任何人都无法在软删除保持期内清除你的密钥保管库。

策略 效果
密钥保管库应启用软删除 审核(默认值)、拒绝、禁用
密钥保管库应启用清除保护 审核(默认值)、拒绝、禁用

诊断

启用资源日志来重新创建活动线索,以在发生安全事件或网络被入侵时用于调查目的。

策略 效果
将 Key Vault 的诊断设置部署到事件中心 DeployIfNotExists(默认值)
部署 - 为 Key Vault 配置诊断设置,以便将资源日志流式传输到 Log Analytics 工作区 DeployIfNotExists(默认值)、禁用
应启用 Key Vault 中的资源日志 AuditIfNotExists(默认值)、已禁用

证书

证书的生命周期

通过最大程度地减少持续损坏的时间范围并降低证书对攻击者的价值,提倡使用短期证书来缓解未检测到的攻击。 实现生存期较短的证书时,建议定期监视其过期日期以避免中断,以便在过期前充分轮换证书。 还可以控制为证书指定的生存期操作,这些证书要么处于有效期的特定天数内,要么已达到其使用寿命的一定百分比。

策略 效果
[预览版]:证书应具有指定的最长有效期 效果:审核(默认值)、拒绝、禁用
[预览版]:证书在指定的天数内不应过期 效果:审核(默认值)、拒绝、禁用
证书应具有指定的生存期操作触发器 效果:审核(默认值)、拒绝、禁用

注意

建议多次应用具有不同到期阈值(例如 180、90、60 和 30 天阈值)的证书到期策略

证书颁发机构

审核或强制选择特定的证书颁发机构来颁发证书,该证书颁发机构可以依赖于 Azure Key Vault 的集成证书颁发机构之一(Digicert 或 GlobalSign),也可以依赖于你偏好的非集成证书颁发机构。 还可以审核或拒绝创建自签名证书。

策略 效果
证书应由指定的集成证书颁发机构颁发 审核(默认值)、拒绝、禁用
证书应由指定的非集成证书颁发机构颁发 审核(默认值)、拒绝、禁用

证书属性

将密钥保管库的证书类型限制为 RSA、ECC 或 HSM 支持。 如果使用椭圆曲线加密或 ECC 证书,则可以自定义和选择曲线名称,例如 P-256、P-256K、P-384 和 P-521。 如果使用 RSA 证书,则可以选择证书的最小密钥大小为 2048 位、3072 位或 4096 位。

策略 效果
证书应使用允许的密钥类型 审核(默认值)、拒绝、禁用
使用椭圆曲线加密的证书应使用允许的曲线名称 审核(默认值)、拒绝、禁用
使用 RSA 加密的证书应具有指定的最小密钥大小 审核(默认值)、拒绝、禁用

HSM 支持的密钥

HSM 是存储密钥的硬件安全模块。 HSM 为加密密钥提供物理保护层。 加密密钥不能离开物理 HSM,物理 HSM 可提供比软件密钥更高的安全级别。 某些组织具有强制使用 HSM 密钥的合规性要求。 可以使用此策略审核密钥保管库中存储的不受 HSM 支持的任何密钥。 还可使用此策略阻止创建不受 HSM 支持的新密钥。 此策略将应用于所有密钥类型(包括 RSA 和 ECC)。

策略 效果
密钥应由硬件安全模块 (HSM) 提供支持 审核(默认值)、拒绝、禁用

密钥的生命周期

使用生命周期管理内置功能时,可以标记或阻止没有过期日期的密钥,在密钥轮换延迟可能导致中断时获取警报,防止创建接近其到期日期的新密钥,限制密钥的生存期和活动状态以推动密钥轮换,以及防止密钥处于活动状态超过指定天数。

策略 效果
密钥应具有轮换策略,确保在创建后的指定天数内安排其轮换 审核(默认)、禁用
Key Vault 密钥应具有到期日期 审核(默认值)、拒绝、禁用
密钥的剩余有效期应超过指定的天数 审核(默认值)、拒绝、禁用
密钥应具有指定的最长有效期 审核(默认值)、拒绝、禁用
密钥的已生效时间不应超过指定的天数 审核(默认值)、拒绝、禁用

重要

如果密钥已设置激活日期,上述策略将计算从该密钥的激活日期到当前日期所经过的天数。 如果天数超出你设置的阈值,该密钥将被标记为不符合策略。 如果密钥未设置激活日期,此策略将计算从该密钥的创建日期到当前日期所经过的天数。 如果天数超出你设置的阈值,该密钥将被标记为不符合策略。

键属性

将 Key Vault 的密钥类型限制为 RSA、ECC 或 HSM 支持。 如果使用椭圆曲线加密或 ECC 密钥,则可以自定义和选择曲线名称,例如 P-256、P-256K、P-384 和 P-521。 如果使用 RSA 密钥,则可以强制使用当前密钥和新密钥的最小密钥大小为 2048 位、3072 位或 4096 位。 请记住,使用密钥大小较小的 RSA 密钥不是一种安全的设计做法,因此建议阻止创建不满足最低大小要求的新密钥。

策略 效果
密钥应为指定的加密类型 RSA 或 EC 审核(默认值)、拒绝、禁用
使用椭圆曲线加密的密钥应使用指定的曲线名称 审核(默认值)、拒绝、禁用
使用 RSA 加密的密钥应具有指定的最小密钥大小 审核(默认值)、拒绝、禁用

机密

机密的生命周期

使用生命周期管理内置功能时,可以标记或阻止没有过期日期的密钥,在机密轮换延迟可能导致中断时获取警报,防止创建接近其到期日期的新密钥,限制密钥的生存期和活动状态以推动密钥轮换,以及防止密钥处于活动状态超过指定天数。

策略 效果
机密应具有到期日期 审核(默认值)、拒绝、禁用
机密的剩余有效期应超过指定的天数 审核(默认值)、拒绝、禁用
机密应具有指定的最长有效期 审核(默认值)、拒绝、禁用
机密的已生效时间不应超过指定的天数 审核(默认值)、拒绝、禁用

重要

如果机密已设置激活日期,上述策略将计算从该机密的激活日期到当前日期所经过的天数。 如果天数超出你设置的阈值,该机密将被标记为不符合策略。 如果机密未设置激活日期,此策略将计算从该机密的创建日期到当前日期所经过的天数 。 如果天数超出你设置的阈值,该机密将被标记为不符合策略。

机密属性

任何纯文本或编码文件都可以存储为 Azure 密钥保管库机密。 但是,你的组织可能想要对密码、连接字符串或存储为密钥的证书设置不同的轮换策略和限制。 内容类型标记可帮助用户查看机密对象中存储的内容,而无需读取机密的值。 可以审核未设置内容类型标记的机密,或者阻止创建新机密(如果它们没有设置内容类型标记)。

策略 效果
应为机密设置内容类型 审核(默认值)、拒绝、禁用

示例方案

你管理多个团队使用的包含 100 个证书的 Key Vault,你想要确保 Key Vault 中所有证书有效期都不超过两年。

  1. 分配“证书应具有指定的最长有效期”策略,指定证书的最长有效期为 24 个月,并将策略的影响设置为“审核”。
  2. 你查看 Azure 门户上的相容性报告,发现 20 个证书不合规且有效期超过两年,而剩余的证书符合要求。
  3. 你与这些证书的所有者联系,传达证书的有效期不能超过 2 年的新安全要求。 某些团队做出了响应,续订了 15 个最长有效期为两年或更短的证书。 其他团队不做出响应,你的密钥保管库中仍有 5 个不合规的证书。
  4. 你将分配的策略的影响改为“拒绝”。 5 个不合规的证书未被吊销,且继续工作。 但是,它们续签的有效期不能长于 2 年。

通过 Azure 门户启用和管理 Key Vault 策略

选择策略定义

  1. 登录到 Azure 门户。

  2. 在搜索栏中搜索“策略”,然后选择“策略”

    显示“搜索栏”的屏幕截图。

  3. 在“策略”窗口中,选择“定义”

    突出显示“定义”选项的屏幕截图。

  4. 在“类别筛选器”中,取消选择“全选”,然后选择“Key Vault”

    显示“类别筛选器”和所选的 Key Vault 类别的屏幕截图。

  5. 现在,你应该能够查看适用于 Azure Key Vault 公共预览版的所有策略。 确保你已阅读并理解上述策略指南部分,并选择要分配给某个范围的策略。

    显示处于公共预览状态的策略的屏幕截图。

将策略分配到范围

  1. 选择要应用的策略,在此示例中,显示“管理证书有效期”策略。 单击左上角的“分配”按钮。

    显示“管理证书有效期”策略的屏幕截图。

  2. 选择要应用策略的订阅。 你可以选择将范围限制为一个订阅中的单个资源组。 如果要将策略应用于整个订阅并排除某些资源组,还可以配置排除列表。 如果希望产生策略的影响(审核或拒绝),则将策略强制实施选择器设置为“启用”;如果希望关闭影响(审核或拒绝),则将策略强制实施选择器设置为“禁用”。

    屏幕截图,显示可在其中选择将范围限制为一个订阅中的单个资源组的位置。

  3. 单击屏幕顶部的“参数”选项卡,以指定所需的最长有效期(以月为单位)。 如果需要输入参数,可以取消选中“仅显示需要输入或评审的参数”选项。 按照以上部分中的指导,选择“审核”或“拒绝”作为策略的影响。 选择“查看 + 创建”按钮。

    显示“参数”选项卡的屏幕截图,可在其中指定所需的最长有效期(以月为单位)。

查看合规性结果

  1. 返回到“策略”边栏选项卡,然后选择“合规性”选项卡。单击要查看其合规结果的策略分配。

    显示“合规性”选项卡的屏幕截图,可在其中选择要查看其合规性结果的策略分配。

  2. 从此页中,可以按合规或不合规的保管库筛选结果。 可在此处查看策略分配范围内不合规的 Key Vault 的列表。 如果保管库中的任何组件(证书)不合规,则将保管库视为不合规。 可以选择单独的保管库来查看各个不合规组件(证书)。

  3. 查看保管库中不合规的组件的名称

    屏幕截图,显示了可在其中查看保管库中不合规的组件名称的位置。

  4. 如果需要检查是否拒绝用户在 Key Vault 中创建资源,可以单击“组件事件(预览版)”选项卡,以查看已拒绝的证书操作的摘要以及请求的请求者和时间戳。

    Azure 密钥保管库的工作原理概述

功能限制

分配具有“拒绝”影响的策略可能需要多达 30 分钟(平均情况)和 1 小时(最坏情况),才能开始拒绝创建不合规的资源。 延迟是指以下场景 -

  1. 已分配新策略。
  2. 已更改现有策略分配。
  3. 已在包含现有策略的范围中创建新的 KeyVault(资源)。

保管库中现有组件的策略评估可能需要长达 1 小时(平均情况)和 2 小时(最坏情况),才能在门户 UI 中查看合规性结果。

如果合规性结果显示为“未启动”,则可能是由于以下原因:

  • 尚未完成策略评估。 在最坏情况下,初始评估延迟可能长达 2 小时。
  • 策略分配的范围中没有 Key Vault。
  • 策略分配的范围中没有带证书的 Key Vault。

注意

Azure Policy 资源提供程序模式(如 Azure Key Vault 的模式)提供了有关组件合规性页上合规性的信息。

后续步骤