了解 Microsoft Azure 中的 DevSecOps

翻译自:Understanding DevSecOps in Microsoft Azure

Microsoft Azure 以及一般的云平台为开发人员提供了构建复杂的开发、部署和运营 DevOps 管道所需的工具。但是,团队经常在不了解基本概念的情况下直接深入到 DevOps 实践中。这不仅最大限度地减少了 Azure 的固有优势,而且经常引入新的安全问题。

我建议团队具备工作知识的四个关键概念包括:

  • 如何使用活动目录
  • 授权模式的区别
  • 如何制定集成安全性的策略
  • 如何监控安全合规性

Azure 活动目录

保护资源通常从身份验证和授权开始。Azure Active Directory 允许你通过为每个用户和帐户分配自己的用户名和密码以及可选的多因素身份验证方法来集中创建和管理多个用户和帐户。最重要的是,Azure 可以使用联合身份验证来使用公司目录中的凭据同步和访问 Azure Active Directory 帐户。

Azure 基于角色的访问控制 (RBAC)

若要控制对 Azure 资源的访问,请创建由三个元素组成的角色分配:

  • 安全主体 - 对应于 Active Directory 用户、组或服务身份的身份
  • 角色定义 - 通过该角色允许的操作列表。
  • 分配范围 - 定义角色分配适用于哪些资源

可以使用访问控制 (IAM) 边栏选项卡、PowerShell、Azure CLI、REST API 或使用资源模板在 Azure 门户中为每个服务创建和管理角色分配。

Azure Active Directory 还提供了一种超越简单 RBAC 的高级访问控制功能,称为条件访问。使用条件访问,可以定义在授予访问权限之前必须满足的条件或信号。例如,可以创建一个条件,要求任何开发人员执行特权部署任务或完全阻止从不受信任的网络访问这些任务的多因素身份验证。条件访问的一些信号是用户或组成员资格;IP 范围或位置;设备平台或管理状态;客户申请;以及实时和计算的风险检测。条件访问策略是一种宝贵的安全工具,尤其是在复杂的 DevOps 环境中。

特权身份管理 (PIM)

DevOps 的关键原则之一是开发人员参与部署工作流的所有阶段。但是,始终为任何角色提供所需的最少权限集也是最佳实践。不要让每个用户都成为管理员。为了允许开发人员在不授予太多权限的情况下访问特权操作,Azure AD 提供了 PIM。此服务允许根据开始和结束日期、激活前手动批准和多重身份验证授予对 Azure 资源的即时或临时特权访问。

通过限制用户拥有特权访问的时间,可以减轻受感染帐户的损害,尤其是那些有权访问应用程序资源和部署的帐户。无需立即使用 PIM 的所有功能,它仍可用于监视和查看现有的特权访问。

Azure 政策

将安全性集成到 DevOps 中的一个目标是在持续部署的同时实现持续合规性。Azure Policy 提供了一个用于制定策略、确保合规性和管理补救的框架。使用内置策略定义或创建策略定义,您可以控制资源分配和配置、强制资源标记或配置资源监控。

基础设施即代码

为确保 Azure 体系结构有据可查且可重复,应将基础结构和安全配置视为持续集成/持续交付 CI/CD 管道中的任何其他代码。

Azure 通过两项关键服务促进了这一点

  • Azure 资源管理器 (ARM) 模板 - JSON 文件,其中包含根据既定的安全策略和标准创建和部署资源所需的所有参数。这些定义不仅定义了资源的特征,还定义了访问权限。此外,由于 Azure 策略是一种资源,它允许大规模管理安全合规性。
  • Azure 蓝图 - 允许您定义一个完整的安全兼容环境,其中包括资源组、策略、角色分配和资源管理器模板。例如,这允许包含所有工件和资源,以便为应用程序设置测试或生产环境。

管道安全策略

要将安全性注入管道,请关注三个主要策略:

  1. 确定在每个阶段可以执行自动和手动安全测试的位置
  2. 考虑需要保护哪些机密,例如加密密钥或服务凭证
  3. 确保对所有传输和静止数据进行加密

确定在哪里执行安全测试在很大程度上取决于产品的类型及其构建方式。例如,Web 应用程序可能需要静态应用程序安全测试 (SAST)、动态应用程序安全测试 (DAST)、交互式应用程序安全测试 (IAST) 和模糊测试。每一个都可以通过 PowerShell 或其他 shell 脚本、Azure Functions 或安全和合规性评估任务集成到管道中。

密码保护

在 DevOps 管道中,有各种秘密:API 密钥、加密密钥、证书或其他服务(如数据库或其他外部帐户)的密码。集中创建和管理机密的最常见和最安全的方法是使用 Key Vault。Key Vaults 允许以安全的方式存储 RSA 密钥、机密和证书,从而允许控制和监视每个的使用。可以通过 RBAC 或 Key Vault 访问策略来授权管理和使用密钥。

管理秘密的另一种方法是通过管道库,其中可以定义存储一组用于管道的键/值对的变量组,或者可以上传证书和签名密钥等安全文件。

Key Vaults 通常是存储机密的最佳选择,尽管创建管道库对于在管道本身中对机密进行本地管理更有意义的情况很有用。请注意,变量组中的变量可以直接链接到 Key Vault 值以在管道中使用。

Azure 安全中心

可靠的 DevSecOps 管道必须向每个开发、安全和运营团队提供反馈。反馈和指标需要洞察力,可通过 Azure 安全中心获得。

Azure 安全中心是一种统一的基础结构安全管理服务,可跨云资源和工作负载提供高级威胁保护、监控和修复。它监控云基础设施以识别不符合选定标准的配置。它还提供安全状况的概述,并允许查看不合规的资源以及任何建议。

除了内置标准和建议之外,还可以开发自定义策略。为了应对不断变化的威胁,Azure 安全中心提供了基于 Microsoft 正在进行的安全研究、遥测和威胁情报的高级保护和警报。通过这种威胁情报、行为分析和异常检测,Azure 安全中心将持续监控和警告新出现的威胁。

Azure哨兵

由于 DevOps 在很大程度上依赖于自动化才能取得成功,因此设置适当的工具进行监控和警报至关重要。Azure Sentinel 是 Microsoft 的云原生安全信息和事件管理(或 SIEM)服务。它从云和本地设备和应用程序收集和聚合日志和配置数据。使用高级分析,您可以实时检测、调查和响应安全事件。

将安全性集成到 Azure DevOps 管道中需要准备和规划,但即使是利用这些最佳实践对安全性做出很小的承诺,也可以导致整个过程的巨大改进。

你可能感兴趣的:(microsoft,azure,devops)