4. Azure环境与基础设施交付验收

基础设施验收是Azure项目交付中最容易被“看起来已经建好了”所掩盖的环节。资源确实存在、门户里能点开,并不等于交付合格。真正需要确认的是:资源是否落在正确的订阅与资源组、命名与标签是否符合约定、网络连通与隔离是否达到设计意图、存储与Key Vault的安全基线是否关闭了高风险项、Azure Policy是否处于合规状态。本节围绕这些对象,给出可执行的检查项、配置基线验证方法与合规性判定依据。

一、验收对象的边界与顺序

基础设施验收建议按“归属→网络→数据与密钥→策略合规”的顺序推进。先确认资源归属,是因为订阅和资源组决定了权限边界、成本归属与策略作用域;如果资源放错订阅,后续所有合规检查都可能作用在错误范围上。网络其次,因为存储、Key Vault、计算资源的私有访问都依赖网络先行就绪。数据与密钥再次,它们的安全配置依赖网络隔离是否生效。最后用Azure Policy做全局合规扫描,形成可交付的合规证据。

Azure基础设施交付验收链路 归属确认 → 网络连通 → 数据与密钥基线 → 策略合规取证 ① 订阅与资源组 • 订阅ID与合同一致 • 资源组命名规范 • 标签:env/owner/cost • 资源锁与RBAC范围 ② 网络与连通 • VNet地址空间无重叠 • 子网委派与NSG规则 • 对等/网关连通性 • 私有终结点DNS解析 ③ 存储与Key Vault • 公共网络访问关闭 • 仅TLS1.2+ / 禁匿名 • 软删除与清除保护 • 密钥轮换与访问策略 ④ Policy合规取证 • 分配范围与排除项 • 合规率与不合规资源 • Deny/Audit效果验证 • 豁免有效期与理由 验收判定输出 通过:全部检查项符合基线,Policy合规率100%,无Deny阻断 不通过:存在公共访问开放、密钥未启用清除保护、Policy不合规资源未整改 交付证据清单 资源清单导出(CSV) · NSG规则快照 · 私有终结点DNS验证记录 Key Vault配置截图 · Policy合规报告 · 豁免审批记录

二、订阅与资源组:归属与治理边界

验收第一步是确认资源归属。检查订阅ID是否与合同或设计文档一致,避免资源被建在个人试用订阅或错误的生产订阅中。资源组命名应遵循约定,例如 rg-{项目}-{环境}-{区域},如 rg-dataai-prod-eastasia。标签是成本分摊和自动化治理的基础,至少应包含 env、owner、costCenter 三个键。可以用以下命令导出资源清单并核对标签:

az resource list \
  --resource-group rg-dataai-prod-eastasia \
  --query "[].{name:name, type:type, tags:tags}" \
  --output table

同时检查关键资源组是否配置了 CanNotDelete 资源锁,以及RBAC是否遵循最小权限——例如数据工程师不应拥有订阅级Owner。若发现资源组内存在与项目无关的资源,应在验收记录中标注并要求清理。

三、网络与连通性验证

网络验收的核心是“地址空间不重叠、隔离规则生效、私有访问可解析”。先核对VNet地址空间与本地或其他VNet是否存在重叠,重叠会导致对等连接失败。再检查子网委派是否正确,例如Azure SQL托管实例或App Service需要特定委派。NSG规则应确认没有 0.0.0.0/0 开放高危端口(22、3389、1433)。

私有终结点是常见验收盲区。创建私有终结点后,必须验证DNS解析是否返回私有IP而非公共IP。可在同VNet的虚拟机中执行:

nslookup mystorage.privatelink.blob.core.windows.net
# 期望返回 10.10.2.5 之类的私有地址
# 若返回公网IP,说明私有DNS区域未关联或解析未生效

连通性验证还应包括对等连接状态是否为 Connected,以及网关或防火墙路由是否可达。建议记录每条验证的命令与输出,作为交付证据。

四、存储与Key Vault安全基线

存储账户验收重点检查:公共网络访问是否关闭(publicNetworkAccess=Disabled)、是否仅允许TLS 1.2及以上、是否禁用匿名Blob访问、是否启用软删除与版本控制。Key Vault则需确认软删除和清除保护均已启用,访问策略或RBAC是否只授予必要主体,密钥与机密是否设置了轮换策略。

以下命令可快速核对存储账户关键属性:

az storage account show \
  --name stdataaiprod001 \
  --query "{publicAccess:publicNetworkAccess, tls:minimumTlsVersion, anon:allowBlobPublicAccess, softDelete:deleteRetentionPolicy}"

Key Vault检查示例:

az keyvault show --name kv-dataai-prod \
  --query "{softDelete:properties.enableSoftDelete, purge:properties.enablePurgeProtection, rbac:properties.enableRbacAuthorization}"

若 enablePurgeProtection 为 false,则属于高风险项,必须在验收前开启,否则删除的机密可能被永久清除且无法恢复。

五、Azure Policy合规性验收

Policy验收不是看“有没有分配”,而是看“分配是否生效、合规率是否达标、不合规资源是否整改”。检查分配范围是否覆盖目标订阅或资源组,排除项是否合理,效果是 Audit 还是 Deny。对于 Deny 策略,应实际尝试创建不合规资源,确认被阻断;对于 Audit 策略,应导出合规报告并逐条核对不合规资源。

可使用以下命令获取合规状态:

az policy state list \
  --resource-group rg-dataai-prod-eastasia \
  --query "[?complianceState=='NonCompliant'].{resource:resourceId, policy:policyDefinitionName}" \
  --output table

验收标准建议设定为:关键策略(如禁止公共IP、强制标签、要求TLS1.2)合规率100%;一般策略合规率不低于95%,且剩余不合规项有明确整改计划与责任人。豁免必须记录理由和有效期,避免“永久豁免”成为合规漏洞。

建议在验收前一周先跑一次Policy合规扫描,给整改留出时间;验收当天再跑一次,形成前后对比证据。

六、验收记录与判定

基础设施验收的最终产出是一份可追溯的记录,至少包含:检查项、期望基线、实际值、判定结果、证据位置、整改责任人。判定规则可以简化为:任一高风险项不符合即整体不通过;中低风险项可带条件通过,但需在约定时间内闭环。只有归属、网络、数据密钥、策略合规四类检查全部有据可查,基础设施交付才算真正完成。