有关安全部署做法的建议

适用于此 Power Platform Well-Architected 卓越运营清单建议:

OE:10 明确定义工作负荷的安全部署做法。 强调小型、增量、质量关口的发布方法的理想方案。 使用新式部署模式来控制风险。 考虑例程部署和紧急部署或修补程序部署。

本指南介绍了使用安全部署做法的建议。 安全部署流程和过程定义如何安全地对工作负荷进行更改和部署。 实施这些策略需要您从管理风险的角度来考虑部署。 通过实施这些做法,您可以最大限度地降低部署中人为错误的风险,并限制有问题的部署对用户的影响。

关键设计策略

实施安全部署做法时,需要牢记四个重要准则:

  • 安全性和一致性:对生产工作负载的所有更改本质上都存在风险,必须以安全性和一致性为重点进行。
  • health 模型:部署必须通过 health 检查,然后才能开始渐进式暴露的每个阶段。
  • 问题检测:检测到问题时,应立即进行 halted 并启动恢复。

以下部分提供了有关其中每一点的详细建议。

安全性和一致性

无论您是将更新部署到应用程序代码、基础设施即代码(IaC)、功能标志还是配置,都会给工作负载带来风险。 没有低风险的生产部署。 每个部署都必须遵循标准模式,并且应自动执行,以强制实施一致性并最大程度地降低人为错误的风险。 工作负荷供应链和部署管道必须可靠、安全且具有明确定义的部署标准,这一点至关重要。 将每个部署视为可能的风险,并将每个部署都设置为相同的风险管理级别。

尽管存在风险,但应继续部署对工作负荷的定期更改。 未能部署定期更新会带来其他风险,例如必须通过部署解决的安全漏洞。 有关详细信息,请参阅 有关设计工作负载开发供应链的建议。

频繁的小型部署比不常见的大型部署更可取。 当出现问题时,小更改更容易解决,频繁部署有助于团队在部署流程中建立信心。 在部署期间遇到异常时,通过查看工作负荷流程,从生产中吸取经验教训也很重要。 您可能会发现基础结构设计或推出方面的弱点。 当部署期间出现问题时,请确保无指责的事后分析是捕获事件经验教训的过程的一部分。

健康状况模型

开发可靠的健康状况模型作为可观测性平台和可靠性策略的一部分。 健康状况模型应提供对工作负荷组件和整体健康状况的深入可见性。 在推出后密切监控 health 指标。 如果您在推出期间收到有关 health 更改的警报,请立即调查问题并确定下一步行动方案,例如回滚更改。 如果用户没有报告问题并且所有 health 指示器都保持绿色,则应继续推出。 请务必在 health 模型中包含使用量度,以帮助确保缺少用户报告的问题和负面的 health 信号不会隐藏问题。 在执行故障模式分析 的建议中了解更多信息。

问题检测

当部署导致推出组之一出现问题时,必须立即停止推出。 在收到警报后立即对问题原因和影响严重性进行调查。 从问题中恢复可能包括:

  • 通过撤消在部署中所做的更改并恢复到上一个已知的工作配置来回滚
  • 通过在推出期间解决问题来前 滚。 可以通过应用修补程序或其他最大限度缓解问题来解决推出中的问题。
  • 使用上一个已知的工作配置部署新的基础设施

回滚更改(尤其是数据库、架构或其他有状态组件更改)可能很复杂。 安全部署实践指南应提供有关如何根据工作负载的数据资产设计处理数据更改的明确说明。 同样,必须仔细处理前滚,以确保不会忽视安全的部署过程,并确保安全地执行修补程序或其他最小化工作。

一般建议

  • 跨生成项目实现版本控制,以帮助确保可以在必要时回滚和前滚。

  • 使用发布流或基于中继的分支结构,该结构在开发团队中强制实施紧密同步的协作,而不是基于 Gitflow 或环境的分支结构。

  • 尽可能多地自动化您的安全部署实践。 在实施自动化的建议中 了解更多信息

  • 使用持续集成 (CI) 做法定期将代码更改集成到存储库中。 CI 做法可帮助您识别集成冲突,并降低发生大型风险合并的可能性。 在持续集成的 Recommendations 中了解更多信息。

  • 使用功能标志有选择地启用或禁用生产中的新功能或更改。 功能标志可以帮助您控制新代码的公开,并在出现问题时快速回滚部署。

  • 将更改部署到镜像生产环境的过渡环境。 练习环境允许您在部署到实时环境之前测试受控设置中的更改。

  • 建立预部署检查,包括代码评审、安全扫描和合规性检查,以帮助确保更改安全进行部署。

  • 实施断路器以自动停止流向遇到问题的服务的流量,并帮助防止系统进一步降级。

应急协议

建立规范性协议,定义如何针对修补程序或紧急问题(如安全漏洞或漏洞暴露)调整安全部署流程。 例如,您的应急协议可能包括:

  • 提升审批阶段加速
  • 冒烟测试和集成测试加速
  • 减少烘焙时间

在某些情况下,紧急情况可能会限制质量和测试关口,但仍应尽快运行关口作为带外练习。 确保您定义谁可以在紧急情况下批准安全部署加速,以及必须满足哪些条件才能批准加速。 使您的应急协议与紧急 回复计划 相对齐,以帮助确保根据相同的协议处理所有紧急情况。

注意事项

生成和维护安全部署做法很复杂。 能否完全实施可靠的标准取决于您在许多软件开发领域做法的成熟度。 使用自动化、仅 IaC 进行基础设施更改、分支策略的一致性、功能标志和其他做法有助于确保安全部署。 使用本指南优化工作负荷,并随着实践的发展,告知改进计划。

Power Platform 便利化

管道旨在通过 Power Platform 将 ALM 自动化以及持续集成和持续交付(CI/CD)功能引入服务,为 Power Platform Dynamics 365 客户实现应用程序生命周期管理(ALM)的大众化。

Microsoft Power Platform Build Tools for Azure DevOps 可用于自动执行与所构建 Power Platform应用程序相关的常见构建和部署任务。

GitHub Actions 使 Power Platform 开发人员能够构建自动化的软件开发生命周期工作流。 借助适用于 Microsoft Power Platform 的 GitHub Actions,您可以在存储库中创建工作流来构建、测试、打包、发布和部署应用;执行自动化;以及管理基于 Power Platform 构建的机器人和其他组件。

ALM Accelerator 是一个开源工具,由一组应用程序、脚本和管道组成,旨在自动化持续集成/持续交付过程。

使用 Azure Pipelines 自动执行测试。

解决方案 中的环境变量存储参数键和值,然后将其用作其他应用程序对象的输入。 将参数与使用的对象分开可以在同一环境中或在将解决方案迁移到其他环境时更改值。

Power Platform 环境 提供可帮助您回滚的时间点还原功能。

后续步骤