你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
概述
创新是当今竞争格局中的新货币。 骑行共享、流媒体内容、自动驾驶汽车和其他服务从根本上改变了人们的日常节奏,同时使市场倒置,并展示了竞争格局如何从实物资产转向数字体验。
这些类型的高级数字体验正在导致一场中断,因为成熟的企业面临来自能够更快地创新并为客户提供价值的公司的激烈竞争。 为了竞争和避免中断,企业需要建立创新文化,并使用最合适的工具和云服务。
GitHub 提供了一系列功能,可帮助公司:
- 利用 Azure 服务和功能。
- 现代化其做法。
- 在这个文化转变中,变得更加敏捷和创新。
公司可以利用 GitHub 与开源社区的连接,并从成功采用 Azure 服务的组织找到成千上万的已重申、增强和随时部署的云解决方案示例。 他们可以轻松地借用并改进这些解决方案,以满足他们的业务需求。
借助 GitHub,组织可以轻松地在团队中共享,从而更快地实现新式化和部署下一个应用程序或工作负荷。 公司可以寻求 InnerSource(一个关键的创新原则)来借用共享和重用、协作和通信等最佳做法,以及开源社区中的更多内容,并将其应用到其组织内。
从保护开源包到每天编写的知识产权,保护整个软件供应链应该是每个公司的主要优先事项。 此目标需要可在整个生命周期内合并和自动化的高级安全技术,以及 GitHub 高级安全性和 GitHub Actions 等本机 GitHub 功能提供此类型的灵活性。
利用开源资产
高效组织认识到开源软件(OSS)对于新式软件开发至关重要,而不是可选。 他们与依赖的开发人员社区互动,并使用安全平台以战略方式投资 OSS。 因此,这些组织会快速创新,超越竞争对手,并降低成本,同时将风险降到最低。
OSS 由合并到应用程序中的包、库、脚本和依赖项组成。 OSS 还以基础结构即代码(IaC)、文档和指南的形式包含成千上万的开源资产,这些资产适用于定义完善的 Azure 体系结构。 Microsoft、合作伙伴、供应商、客户和个人将这些包贡献给 OSS 社区。 可以在 GitHub 中找到它们,并修改、重复使用并将其部署到特定的 Azure 环境。
基础结构即代码
IaC 是基础结构的管理,其中包括描述性模型中的网络、虚拟机、负载均衡器和连接拓扑。 IaC 使用 DevOps 团队用于源代码的相同版本控制系统。 例如,DevOps 团队遵循相同的源代码生成相同二进制文件的原则。 IaC 模型还遵循该原则,并在每次应用模型时生成相同的环境。 IaC 是一项关键的 DevOps 实践,可用于持续交付(CD)。
IaC 已演变为解决发布管道中的环境偏移问题。 如果没有此设置,团队必须维护各个部署环境的设置,并且环境之间的不一致会导致部署过程中出现问题。 每个环境最终都会变成雪花,这是无法自动重现的唯一配置。 使用雪花时,基础结构管理和维护需要手动流程,这些流程会导致错误,并且难以跟踪。使用 IaC 的基础结构部署是可重复的,并防止因配置偏移或缺少依赖项而导致的运行时问题。
借助 IaC,团队对环境说明和配置模型进行版本控制,这通常采用 JSON 等记录良好的代码格式:有关详细信息,请参阅 Azure 资源管理器模板 。 开发人员可以通过在与应用程序源代码相同的 GitHub 存储库中托管 IaC 代码来简化工作流,并为 由 GitHub Actions 提供支持的 IaC 采用相同的持续集成 (CI) /CD 做法。
请参阅 AzOps GitHub 动作,了解如何在各种 Azure 范围内部署自定义的资源管理器模板的示例。 如果不熟悉资源管理器模板或 IaC,还可以浏览 azure-quickstart-templates
GitHub 上的存储库,找到要部署的模板,然后选择“部署到 Azure”按钮以测试其工作原理。
云模式组件和最佳做法
以下体系结构关系图突出显示了在 GitHub DevSecOps 环境的 GitHub 和 Azure 组件中运行的安全检查:
GitHub 提供了一个代码托管平台,开发人员可用于在开源和 InnerSource 项目上进行协作。
Codespaces 是一个联机开发环境。 此工具由 GitHub 托管,由 Microsoft Visual Studio Code 提供支持,可在云中提供完整的开发解决方案。
GitHub 安全性 的工作原理是通过多种方式消除威胁。 代理和服务识别存储库和依赖包中的漏洞。 它们还会将依赖项升级到当前和安全版本。
GitHub Actions 是直接在存储库中提供 CI/CD 功能的自定义工作流。 由名为“运行器”的计算机承载这些 CI/CD 作业。
Microsoft Entra ID 是一种多租户基于云的标识服务,用于控制对 Azure 和其他云应用程序的访问,例如 Microsoft 365 和 GitHub。
Azure 应用服务 提供用于生成、部署和缩放 Web 应用的框架。 此平台提供内置的基础设施维护、安全更新和扩展能力。
Azure Policy 通过可强制实施云资源规则的策略定义来帮助团队管理和防止 IT 问题。 例如,如果项目即将部署具有无法识别 SKU 的虚拟机,Azure Policy 会发送有关问题的警报并停止部署。
Microsoft Defender for Cloud 跨混合云工作负载提供统一的安全管理和高级威胁防护。
Azure Monitor 收集和分析性能指标、活动日志和其他应用程序遥测数据。 此服务在标识不规则情况时向应用程序和人员发出警报。
InnerSource
InnerSource 概述
许多公司都使用 InnerSource 一词来描述其工程团队如何在代码上协同工作。 InnerSource 是一种开发方法,工程师使用 Kubernetes 或 Visual Studio Code 等大规模开源项目(如 Kubernetes 或 Visual Studio Code)的最佳做法构建专有软件。
大规模开源项目需要跨成千上万的参与者进行协调和团队合作。 最成功的项目由对未来和日常用户需求的愿景驱动:速度、可靠性和功能。 这些项目运营的规模提供了一些教训,可以帮助公司更快地使用 InnerSource 构建更好的软件。
通过 GitHub 的拉取请求和问题,协作和代码评审融入了开发流程。 内部和外包团队可以在一个位置共享工作、讨论更改并获取反馈。 这有助于组织在内部共享专业知识,并避免重塑为其他项目开发的经过现场测试的解决方案。
InnerSource 项目的剖析
个人、团队和资源的正确组合可以确保项目的成功。 许多开源项目遵循类似的组织结构,可帮助组织设置跨职能团队来管理 InnerSource 项目。 典型的开源项目具有以下类型的人员:
维护: 这些参与者负责推动愿景和管理项目的组织方面。 它们可能不是代码的原始所有者或作者。
贡献: 这些人都是为该项目贡献了一些东西的人。
社区成员: 这些是使用该项目的人员。 他们可能活跃在对话中,或者表达他们对项目方向的看法。
更大的项目可能还有专注于不同任务(如工具、会审和社区调节)的次级委员会或工作组。 InnerSource 项目可能遵循类似的结构。 许多工程组织将开发人员分为应用程序工程、平台工程和 Web 开发等团队。 这样构建组织可能会留下排除合格人员的盲点。 组织一个由整个组织团队支持的核心决策小组,可以有助于汇聚必要的专业知识,从而更快地解决问题。
在企业中,参与者是公司内的开发人员,维护人员是项目的负责人和关键决策者。
维护: 负责推动项目愿景和管理日常贡献的公司内的开发人员、产品经理和其他关键决策者。
贡献: 帮助推动软件前进的公司内的开发人员、数据科学家、产品经理、营销人员和其他角色。 参与者可能不是直接项目团队的一部分,而是通过贡献代码、提交 bug 修复等来帮助构建软件。
有关详细信息,请参阅白皮书 InnerSource 简介。
自动化
GitHub Actions 允许用户直接在其 GitHub 存储库中创建自定义工作流。 用户可以发现、创建和共享操作,以执行任何作业,包括 CI/CD,并在完全自定义的工作流中合并这些操作。 它们还可以创建 CI 工作流,以不同的编程语言生成和测试项目。 GitHub Actions 指南中提供了示例。
GitHub Actions 可用于合并 IaC 概念和 CI/CD 做法,以自动化整个端到端部署生命周期,包括以可重复的方式预配或更新目标环境,以及打包和部署应用程序本身。
示例:
Azure 的 GitHub Actions 旨在简化将部署过程自动化到面向 Azure 服务(例如 Azure 应用服务、Azure Kubernetes 服务、Azure Functions 等)的方式。 Azure 初学者作工作流存储库包括端到端工作流,用于生成和部署任何语言的 Web 应用以及任何生态系统到 Azure。 请访问 GitHub 市场以查看所有可用的操作。
安全
GitHub 的左移安全功能
从开发的第一步开始,DevSecOps 遵循安全最佳做法。 DevSecOps 使用左移策略来重定向安全焦点。 它不是在结束时指向审核,而是在开始时转向开发。 这种快速失败方法不仅可以生成可靠的代码,还能在问题容易解决时解决它们。
借助许多安全功能,GitHub 提供了支持 DevSecOps 工作流的每个部分的工具:
- 具有内置安全扩展插件的基于浏览器的 IDE
- 代理,可持续监视安全建议,并替换易受攻击和过时的依赖项
- 扫描源代码是否存在漏洞的搜索功能
- 基于动作的工作流,可以自动化开发、测试和部署的每一个步骤。
- 提供私下讨论和解决安全威胁的方法的空间,然后发布信息
- 这些功能与 Azure 的监视和评估功能相结合,为构建安全云解决方案提供了出色的服务
示例:
GitHub DevSecOps 安装涵盖许多安全方案。 可能包括以下情况:
- 想要利用提供安全功能的预配置环境的开发人员。
- 管理员必须随时可以查看按优先级排序的最新安全报告,以及有关受影响代码的详细信息和建议的修复措施。
- 经过精简的组织需要具有一些系统,能够在代码中公开机密时自动获取未泄露的新安全设备。
- 开发团队能够得益于在有更新或更安全的外部包版本可用时自动升级。
有关详细信息,请参见:
- GitHub 中的 DevSecOps:Azure 解决方案创意
- 在 Azure DevOps 管道中使用 GitHub 高级安全功能对 GitHub 存储库进行代码扫描
- 将 DevSecOps 应用于软件供应链
后续步骤
- 选择你的实现团队(通常是开发人员经理和一些定义为管理员的开发人员),并部署 GitHub。
- 了解常用和高级 Git 工作流,以增强如何使用 GitHub。
以下链接提供有关 GitHub 的详细信息。