继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

理解DevSecOps的基本原则

MYYA
关注TA
已关注
手记 462
粉丝 75
获赞 327

DevSecOps 是将 安全措施和实践 集成到 DevOps 工作流中。它确保安全是开发、运维和安全团队共同的责任,而不是一个孤立的流程。(DevSecOps)

(此处省略)

DevSecOps的几个关键点

  1. 安全左移
    安全测试在软件开发生命周期(SDLC)的初期就开始了,通常在规划和开发阶段,以便及早发现漏洞。

  2. 自动化

自动化安全流程,例如代码扫描、漏洞评估和合规检查,以减少人工工作并加速反馈回路。在CI/CD管道中执行这些自动化操作可以减少人工努力并加速反馈循环。

  1. 协作
    促进开发、运维和安全团队之间的合作,确保安全责任由大家共同承担。

  2. 持续地监控

持续地监控应用程序、基础设施和容器中的漏洞、入侵行为或异常情况。常用的工具有Prometheus和ELK(Elasticsearch, Logstash, Kibana)栈。

  1. 不可变基础设施

使用基础设施即代码(IaC)来定义、部署和管理安全且可重复的基础设施设置。

  1. 最小权限原则

实施严格访问控制措施,确保用户及进程仅拥有履行其角色所需的必要权限。

  1. 代码合规

将监管和合规要求内置到自动化的安全检查中。


(注:此部分保留原文的Markdown格式,翻译仅保留相应的标点符号。)

简化后直接翻译:


(最终简化直接保留原文格式)


DevSecOps:关键做法

  1. 安全编码规范
  • 使用静态应用安全测试(SAST)工具在代码开发过程中扫描漏洞。
  • 示例:SonarQube,Checkmarx。

    1. 容器的安全
  • 扫描容器镜像中的漏洞(比如,可以使用 Aqua SecurityTrivy 等工具)。
  • 强制仅使用验证过的镜像。

    1. 依赖管理
  • 定期更新库和依赖项以避免第三方软件中的安全漏洞。
  • 工具:Snyk、Dependabot。这些工具可以帮助我们管理依赖项的更新。

    1. 代码基础设施(IaC)的安全性
  • 扫描IaC模板(如Terraform、CloudFormation)中的配置错误项。
  • 工具:Checkov、TFSec。

    1. 动态应用程序安全测试(DAST)
  • 对运行中的应用程序进行实时安全测试,以识别运行时的漏洞。

    1. 威胁建模:通过这种方法,我们可以预测和评估潜在的安全威胁。
  • 在设计阶段进行威胁建模以识别潜在的攻击途径。

    1. 应急响应
  • 制定一个自动化并有详细文档的事件响应计划,以便,快速应对安全威胁。

DevSecOps 的好处有哪些

  1. 减少漏洞:

通过及早识别和修复问题,团队可以减少在开发周期中的潜在漏洞。

  1. 更快的送达

自动化的安全检查减少了由于人工审核和测试导致的延误,从而提高了效率。

  1. 改善协作
    团队一起努力解决安全问题,培养共同承担责任的文化氛围。

  2. 合规遵守

自动化的合规检查可以确保应用程序符合监管标准,无需增加额外的工作量。

  1. 增强的韧性:

持续监控和安全整合使系统更耐攻击。

此处省略内容

DevSecOps(开发安全运维)工具

区域 工具
SAST SonarQube(工具名),Checkmarx(工具名),Fortify(工具名)
DAST OWASP ZAP(工具名),Burp Suite(工具名)
容器安全检查 Aqua Security(工具名),Trivy(工具名),Twistlock(工具名)
CI/CD整合 Jenkins(工具名),GitLab CI(工具名),CircleCI(工具名)
IaC扫描 Checkov(工具名),TFSec(工具名),CloudSploit(工具名)
依赖项扫描 Snyk(工具名),Dependabot(工具名),Whitesource(工具名)
- 监控 Prometheus(工具名),ELK Stack(工具名),Splunk(工具名)

在实现 DevSecOps 时面临的挑战

  1. 文化转变:

团队可能会抵制将安全融入DevOps,认为这会增加他们的工作负担。

  1. 工具过多

选择合适的工具并防止功能重复可能颇具挑战。

  1. 培训和技能不足

开发人员和运维团队应该进行安全方面的培训。

  1. 性能影响

部分自动化安全检测可能会拖慢 CI/CD 流水线的速度。

  1. 平衡安全与速度

在实施安全措施的同时确保快速交付,需要周密的规划。

……

任务 :实施基本的DevSecOps实践(DevSecOps

  1. 在 CI/CD 中,自动化安全扫描
  • 添加如 SonarQube 之类的静态代码分析工具到你的 CI/CD 管道中来扫描代码中的漏洞。
  • Jenkins 示例:
阶段('代码分析') {
     步骤 {
         sh 'sonar-scanner -Dsonar.projectKey=my-project'
     }
}
  1. 安全的Docker镜像
  • 使用 Trivy 在部署之前对 Docker 容器镜像进行扫描检查:
      trivy image my-image:latest
  1. 监控安全状况
  • 使用 AWS Security Hub 监控您的 AWS 环境中的合规状态和安全问题。

    1. 强制执行 IAM 策略,确保策略得到有效执行:
  • 为 AWS IAM 角色和用户应用最小权限原则。

    1. 运行渗透测试
  • 使用比如 OWASP ZAP 這樣的工具來測試應用程序中的安全漏洞。

无内容

计划将安全整合进CI/CD流水线流程(持续集成和持续部署)

将安全性集成到 CI/CD 管道中可以确保在开发周期的早期阶段能够发现并解决这些问题。以下是一份详细的步骤指南,将安全措施融入您的管道,推动 DevSecOps 理念的发展。

此处省略若干内容(此处用以表示分隔或作为占位符)

1. 确定安全目标

  • 目标:确保部署的所有代码是安全的,没有已知漏洞,且符合行业标准。
  • 重点领域:包括以下重点领域:

  • 代码安全:(静态和动态分析)。

  • 依赖管理和工件扫描。

  • 基础设施的安全性。

  • 包括运行时监控。

(沉默/停顿)

2. 在 CI/CD 流水线中添加安全检查

安全措施最好在每个环节都融入整个流程中。

第一步:预提交钩子检查

  • 使用如 pre-commit 这样的工具来强制编码标准的执行,并在推送更改前扫描代码中的机密信息等。
  • 例如:使用 git-secrets 检测硬编码的凭证(例如用户名和密码)。

第2步:源代码扫描

  • 工具:静态应用安全测试(SAST)工具,例如SonarQubeCheckmarxFortify
  • 实施:具体实施步骤或建议可以在此处添加。

  • 添加一个流水线阶段来对所有提交运行SAST扫描(静态应用安全测试)。
  • 例如在Jenkins中的做法:
    在Jenkins中的例子:
阶段名称('静态代码分析') {
    步骤 {
        sh 'sonar-scanner -Dsonar.projectKey=my-project'
    }
}
  • 目的:找出例如SQL注入、XSS和不安全的设置等漏洞。

第三步:进行依赖检查

  • 工具:使用如 SnykDependabotWhitesource 等工具扫描依赖中的安全漏洞。
  • 实施措施

  • 在构建阶段自动进行依赖检查。

  • 如果发现关键漏洞,自动阻止构建。

第四步:容器安全

  • 工具有如TrivyAqua SecurityTwistlock
  • 实施

  • 在部署前扫描镜像中的漏洞。
  • 例如:

扫描镜像 my-container-image:latest

第五步:代码即基础设施(IaC)检查

  • 工具:使用像 Checkov、TFSec 和 CloudSploit 这样的工具扫描像 Terraform 和 CloudFormation 这样的 IaC 模板。
  • 实施

  • 在流水线中增加一个步骤,检查基础设施配置中是否有误配置或安全漏洞。

第六步:动态应用安全测试(DAST,Dynamic Application Security Testing)

  • 工具:通常使用 OWASP ZAP 或 Burp Suite 这类工具。
  • 操作

  • 对正在运行的预演环境中的应用程序进行实时漏洞扫描。
  • 例如使用OWASP ZAP:

zap-cli 快速扫描(quick scan) --独立 --启动选项为 "-config api.addrs.bind=127.0.0.1" http://staging-app-url

第七步:合规检查

  • 工具:使用如 AWS ConfigKubernetes 基准测试 等工具来确保云和容器合规。
  • 实施

  • 自动化执行 CIS 基准和 GDPR 等政策的合规性检查。

      • 或 此处省略

3. 添加安全门

  • 实现条件门,如果检测到关键漏洞或安全策略违规,则阻止部署。
  • 示例:

  • 如果 SAST 作业失败,则在 GitLab 中阻止合并请求。

  • 在 SonarQube 中设置质量门,如果代码评分未达到阈值,则使管道失败。

    • *

4. 整合警报和报告功能

  • 使用像 ELK StackSplunkAWS Security Hub 这样的集中日志和监控工具来收集安全日志。
  • 为关键问题配置告警。

  • 将通知与 Slack、微软 Teams 或 PagerDuty 等工具进行集成。

    • *

5. 实施RBAC

  • 限制谁可以批准、合并或部署代码:

  • 开发人员只能推送代码到功能分支。

  • 质量保证团队可以批准构建版本。

  • 只有 DevOps 和安全团队能向生产环境部署代码。

    • *

部署后的安全保障

  • 使用像 FalcoSysdig 這樣的運行時安全工具來監控應用程序在生產環境中的運行。
  • 定期更新和打補丁依賴項及容器鏡像。

    • *

7. 为开发人员自动进行安全培训

  • 提供持续的安全编码实践培训。
  • 使用例如 Hack The BoxSecure Code Warrior 这样的游戏化学习平台。

    • *

CI/CD流水线工作流程

  1. 代码
  • 提交前钩子扫描密钥并强制执行标准规范。

    1. 构建
  • 运行SAST和依赖项扫描。

  • 编译并打包应用程序。

    1. 测试
  • 执行单元测试和集成测试。

  • 运行DAST扫描。

    1. 部署到预发布阶段
  • 扫描容器镜像。

  • 验证IaC模板。

  • 进行合规性检查。

    1. 审批关卡
  • 如果安全关卡失败,部署将被阻止。

    1. 部署到生产环境
  • 使用运行时安全工具监控应用程序运行。

    • *

Jenkins 中的 CI/CD 安全集成简单示例

    pipeline {
        agent any
        stages {
            stage('静态代码审查') {
                steps {
                    sh 'sonar-scanner -Dsonar.projectKey=my-project'
                }
            }
            stage('依赖检查') {
                steps {
                    sh 'snyk test'
                }
            }
            stage('容器安全性') {
                steps {
                    sh 'trivy image my-image:latest'
                }
            }
            stage('动态安全评估') {
                steps {
                    sh 'zap-cli quick-scan http://staging-app-url'
                }
            }
            stage('合规性审核') {
                steps {
                    sh 'checkov -d .'
                }
            }
            stage('部署至生产环境') {
                when {
                    expression {
                        return currentBuild.result == null || currentBuild.result == 'SUCCESS'
                    }
                }
                steps {
                    sh './deploy.sh'
                }
            }
        }
    }

全屏,退出全屏


结尾

_DevSecOps 确保安全是软件开发生命周期中持续、自动化和集成的一部分。它弥合了速度与安全之间的鸿沟,使组织能够更快地交付更安全的软件,同时降低风险。通过采用 DevSecOps 的原则和实践,团队可以在不断演变的威胁面前保持优势,构建更强大的系统。

将安全性融入 CI/CD 流水线可以确保在整个软件开发生命周期(SDLC)中尽早并持续处理漏洞。通过自动化安全测试并实施强大监控,可以增强应用程序的抗压能力,同时保持快速交付周期。


学习愉快!😊

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP