DevSecOps(有时称为 Secure DevOps)基于 DevOps 的原则,但在整个应用程序生命周期中将安全性置于中心位置。 此概念称为“转移左安全”:它将安全从仅生产关注转移到包括规划和开发的早期阶段。 每个在应用程序上运行的团队和人员都需要考虑安全性。
Microsoft和 GitHub 提供解决方案,让你对生产中运行的代码充满信心。 这些解决方案会检查代码,并允许其可追溯性,以跟踪正在使用的第三方组件的工作项和见解。
使用 GitHub 保护代码
开发人员可以使用代码扫描工具快速自动分析 GitHub 存储库中的代码,以查找安全漏洞和编码错误。
可以扫描代码来查找、会审和确定现有问题的修复优先级。 代码扫描还阻止开发人员引入新问题。 可以计划特定日期和时间的扫描,或者在存储库中发生特定事件(例如推送)时触发扫描。 还可以跟踪存储库的依赖项,并在 GitHub 检测到易受攻击的依赖项时接收安全警报。
使用 Azure Boards 跟踪工作
Teams 可以使用 Azure Boards Web 服务来管理软件项目。 Azure Boards 提供了一组丰富的功能,包括对 Scrum 和 Kanban 的本机支持、可自定义的仪表板和集成报告。
使用 Azure Pipelines 生成和部署容器
轻松集成 Azure Pipelines 和 Kubernetes 群集。 可以使用相同的 YAML 文档生成多阶段管道即代码,以便持续集成和持续交付。
Azure Pipelines 将元数据跟踪集成到容器映像中,包括来自 Azure Boards 的提交哈希和问题编号,以便可以放心地检查应用程序。
使用 YAML 文件创建部署管道并将其存储在源代码管理中,有助于在依赖于清晰可读文档的开发团队和运营团队之间推动更紧密的反馈循环。
- 在 Azure 容器注册表中存储 Docker 映像
- 使用 Azure Pipelines 生成 Docker 映像
- 部署到具有完全可跟踪性的 Kubernetes
- 保护 Azure Pipelines
使用 Bridge to Kubernetes 运行和调试容器
开发 Kubernetes 应用程序可能很有挑战性。 需要 Docker 和 Kubernetes 配置文件。 需要了解如何在本地测试应用程序,并与其他依赖服务进行交互。 你可能需要一次开发和测试多个服务,并与一个开发人员团队一起。
Bridge to Kubernetes 允许在开发计算机上运行和调试代码,同时仍使用应用程序或服务的其余部分连接到 Kubernetes 群集。 可以测试代码端到端、命中群集中运行的代码断点,并在团队成员之间共享开发群集,而不会造成干扰。
使用 Microsoft Defender for Containers 和 Azure Policy 强制实施容器安全性
Microsoft Defender for Containers 是用于保护容器的云原生解决方案。
使用Microsoft标识平台管理标识和访问
Microsoft标识平台是 Azure Active Directory(Azure AD)开发人员平台的演变。 它允许开发人员生成登录所有Microsoft标识的应用程序,并获取令牌来调用Microsoft API,例如Microsoft Graph 或开发人员生成的 API。
Microsoft Entra 外部 ID 以服务的形式提供企业到客户标识。 客户使用他们的首选社交、企业或本地帐户标识来获取对应用程序和 API 的单一登录访问权限。
云资源的访问管理是任何使用云的组织的关键功能。 Azure 基于角色的访问控制(Azure RBAC)可帮助你管理谁有权访问 Azure 资源、他们可以对这些资源执行哪些作,以及他们可以访问哪些区域。
可以使用Microsoft标识平台对 DevOps 工具的其余部分进行身份验证,包括 Azure DevOps 中的本机支持,并与 GitHub Enterprise 集成。
目前,Azure Kubernetes 服务(AKS)群集(特别是 Kubernetes 云提供程序)需要标识才能在 Azure 中创建其他资源,例如负载均衡器和托管磁盘。 此标识可以是托管标识或服务主体。 如果使用服务主体,则必须提供一个服务主体,否则 AKS 必须代表你创建一个服务主体。 如果使用托管标识,AKS 会自动为你创建一个托管标识。 对于使用服务主体的群集,最终必须续订服务主体才能使群集正常工作。 管理服务主体增加了复杂性,这就是为什么改用托管标识更容易。 相同的权限要求适用于服务主体和托管标识。
托管标识本质上是围绕服务主体的包装器,并使其管理更简单。
使用 Azure Key Vault 管理密钥和机密
Azure Key Vault 可用于安全地存储和控制对令牌、密码、证书、API 密钥和其他机密的访问。 通过集中存储 Key Vault 中的应用程序机密,可以控制其分发。 Key Vault 大大减少了机密可能被意外泄露的可能性。 使用 Key Vault 时,应用程序开发人员不再需要在其应用程序中存储安全信息,因此无需将此信息纳入代码。 例如,应用程序可能需要连接到数据库。 可以安全地将其存储在 Key Vault 中,而不是将连接字符串存储在应用代码中。
监视应用程序
使用 Azure Monitor,可以实时监视应用程序和基础结构,识别代码问题以及潜在的可疑活动和异常。 Azure Monitor 与 Azure Pipelines 中的发布管道集成,以便根据监视数据自动批准质量入口或发布回滚。
了解如何使用 Azure Application Insights 和 Azure Monitor 监视应用程序和基础结构。
构建正确的体系结构
安全性是任何体系结构最为重视的方面之一。 安全性提供机密性、完整性和可用性保证,防止故意攻击和滥用有价值的数据和系统。 失去这些保证可能会对业务运营和收入以及组织的声誉产生负面影响。