共用方式為

将 Azure 托管 HSM 与 Azure Policy 集成

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

使用方案示例:

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

策略影响和指南的类型

审核:当策略的影响设置为“审核”时,策略不会对环境造成任何中断性变更。 它只会对不符合指定范围内策略定义的组件(如密钥)发出警报,并在策略符合性仪表板中将这些组件标记为不合规。 如果未选择任何策略影响,则“审核”为默认值。

拒绝:当策略的效果设置为拒绝时,该策略会阻止创建新组件(如弱密钥),并阻止不符合策略定义的现有密钥的新版本。 托管 HSM 中的现有不合规资源不会受到影响,并且“审核”功能将继续运行。

使用椭圆曲线加密的密钥应使用指定的曲线名称

如果使用椭圆曲线加密或 ECC 密钥,则可以从此列表中自定义允许的曲线名称列表。 默认选项允许所有以下曲线名称。

  • P-256
  • P-256K
  • P-384
  • P-521

应为密钥设置到期日期

此策略会审核托管 HSM 中的所有密钥,并标记未将过期日期设置为不符合的密钥。 还可使用此策略阻止创建未设置到期日期的密钥。

密钥的剩余有效期应超过指定的天数

如果密钥临近到期,组织延迟轮换密钥可能会导致服务中断。 密钥应在到期前的指定天数轮换,以提供足够的时间来应对故障。 此策略审核即将到期的密钥,并允许您设置以天为单位的阈值。 还可使用此策略阻止创建临近其到期日期的新密钥。

使用 RSA 加密的密钥应具有指定的最小密钥大小

使用较小的 RSA 密钥是不安全的设计实践。 可能需要遵守强制使用最小密钥大小的审核和认证标准。 通过以下策略,可以对托管 HSM 设置最小密钥大小要求。 你可以审核不满足这一最低要求的密钥。 此策略还可用于阻止创建不满足最小密钥大小要求的新密钥。

通过 Azure CLI 启用和管理托管 HSM 策略

授予每日扫描权限

若要检查池清单密钥的合规性,客户必须将“托管 HSM 加密审核员”角色分配到“Azure 密钥保管库托管 HSM 密钥治理服务”(应用 ID:a1b76039-a76c-499f-a2dd-846b4cc32627),以便它可以访问密钥的元数据。 如果不授予权限,清单密钥将不会报告 Azure Policy 符合性报告,只会检查符合性的新密钥、更新的密钥、导入的密钥和轮换密钥。 为此,对托管 HSM 具有“托管 HSM 管理员”角色的用户需要运行以下 Azure CLI 命令:

在 Windows 上:

az ad sp show --id a1b76039-a76c-499f-a2dd-846b4cc32627 --query id

将打印的内容复制,并将id 粘贴到以下命令中:

az keyvault role assignment create --scope / --role "Managed HSM Crypto Auditor" --assignee-object-id "the id printed in previous command" --hsm-name <hsm name>

在 Linux 或 Linux 的 Windows 子系统上:

spId=$(az ad sp show --id a1b76039-a76c-499f-a2dd-846b4cc32627 --query id|cut -d "\"" -f2)
echo $spId
az keyvault role assignment create --scope / --role "Managed HSM Crypto Auditor" --assignee-object-id $spId --hsm-name <hsm name>

创建策略分配 - 定义审核和/或拒绝规则

策略分配具有为策略定义的参数定义的具体值。 在 Azure 门户中转到“策略”,按“密钥保管库”类别进行筛选,并找到这四个预览版密钥治理策略定义。 选择其中一个定义,然后选择顶部的“分配”按钮。 填写每个字段。 如果策略分配用于请求拒绝,请使用有关策略的明确名称,因为当请求被拒绝时,策略分配的名称将显示在错误中。 选择“下一步”,取消选中“仅显示需要输入或查看的参数”,然后输入策略定义的参数值。 跳过“修正”并创建分配。 服务最多需要 30 分钟才能执行“拒绝”分配。

  • Azure Key Vault 托管 HSM 密钥应具有过期日期
  • 使用 RSA 加密的 Azure Key Vault 托管 HSM 密钥应指定最小密钥大小
  • Azure Key Vault 托管 HSM 密钥的过期前天数应超过指定的天数
  • 使用椭圆曲线加密的 Azure Key Vault 托管 HSM 密钥应具有指定的曲线名称

也可以使用 Azure CLI 执行此操作。 请参阅 “创建策略分配”,以使用 Azure CLI 识别不符合的资源

测试设置

如果您有一个效果为“拒绝”的策略分配,请尝试更新或创建一个违反规则的密钥,这样会向您的请求返回403状态码。 查看审核策略分配的清单密钥扫描结果。 12 小时后,检查策略的“合规性”菜单,按“密钥保管库”类别进行筛选,并找到你的分配。 选择其中的每个分配,以检查合规性结果报告。

故障排除

如果在一天后没有池的合规性结果。 检查步骤 2 角色分配是否成功。 如果没有步骤 2,密钥治理服务将无法访问密钥的元数据。 Azure CLI az keyvault role assignment list 命令可以验证是否已分配角色。

后续步骤