# 工程质量安全

# 示例

以下为两个参考示例

# 概述

本文档描述了工程质量安全的主题,包括一系列检测和相关的 YAML 文件。这些检测旨在提高工程的质量和安全性,确保代码的可靠性和可维护性。

# 你将获取

  • 代码分析引擎 CodeQL 的配置和报表
  • 容器镜像安全检测报表
  • 代码密钥泄漏检测报表
  • 代码编写合规检测报表
  • 代码编写质量检测报表

# 作用和意义

这些工程质量安全检测措施的作用和意义如下:

  1. 提高代码质量:通过使用CodeQL、Checkstyle和SonarCloud等工具进行代码分析和检测,可以发现代码中的潜在问题和质量缺陷,帮助开发人员改进代码质量,减少bug和漏洞的出现。
  2. 提升工程安全性:容器镜像安全检测和代码密钥泄漏检测可以及时发现和修复容器镜像和代码中的安全漏洞和风险,保护工程免受潜在的攻击和数据泄露的威胁。
  3. 规范代码编写:代码编写合规检测可以帮助开发人员遵循统一的编码规范和最佳实践,提高代码的可读性和可维护性,减少代码中的问题和隐患。
  4. 提升团队协作效率:通过生成检测报表,团队成员可以清晰地了解工程的质量和安全状况,及时发现和解决问题,提高团队的协作效率和开发效率。

如果不使用这些工程质量安全检测措施,可能会导致以下影响:

  • 代码质量下降:没有及时发现和修复代码中的问题和缺陷,可能导致代码质量下降,增加bug和漏洞的风险。
  • 安全风险增加:没有进行容器镜像安全检测和代码密钥泄漏检测,可能导致安全漏洞和风险未被及时发现和修复,使工程容易受到攻击和数据泄露的威胁。
  • 编码规范不统一:缺乏代码编写合规检测,开发人员可能会按照个人习惯编写代码,导致编码规范不统一,降低代码的可读性和可维护性。
  • 团队协作效率低下:缺乏检测报表和对工程质量和安全状况的清晰了解,团队成员难以及时发现和解决问题,影响团队的协作效率和开发效率。

因此,使用这些工程质量安全检测措施可以有效提高代码质量、工程安全性,规范代码编写,并提升团队协作效率。

# 集成方式

# 代码分析引擎CodeQL

CodeQL是一种强大的代码分析引擎,可用于检测代码中的安全漏洞、缺陷和其他问题。通过使用CodeQL,可以对代码进行静态分析,并生成相应的报表,以便开发人员及时发现和修复问题。CodeQL支持多种编程语言,如Java和JavaScript。

name: "CodeQL"

on:
  push:
    branches: [ "main", "master-rule" ]
  pull_request:
    branches: [ "main" ]
  schedule:
    - cron: '22 10 * * 1'

jobs:
  analyze:
    name: Analyze
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'java', 'javascript' ]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - uses: actions/setup-java@v3
      with:
        distribution: 'zulu'
        java-version: '17'

    - name: Create Nexus Config File
      run: |
          # 省略部分内容

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: ${{ matrix.language }}

    - name: Autobuild
      uses: github/codeql-action/autobuild@v2

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      with:
        category: "/language:${{matrix.language}}"

# 容器镜像安全检测

容器镜像安全检测是一项重要的安全措施,它可以帮助识别容器镜像中的漏洞和安全风险。我们使用Trivy工具进行容器镜像的安全检测,并生成相应的报表。报表可以帮助开发人员了解容器镜像中存在的安全问题,并及时采取措施进行修复。

- name: Run Trivy vulnerability scanner
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: '${{ env.ALIYUN_CR_REGISTORY }}/${{ env.ALIYUN_CR_NAMESPACE }}/${{ env.PROJECT_NAME }}:${{ env.PRO_VERSION }}.${{ env.BUILD_NUMBER }}'
    format: 'sarif'
    output: 'trivy-results.sarif'
    exit-code: '0'
    ignore-unfixed: true
    vuln-type: 'os,library'
    severity: 'CRITICAL,HIGH'

- name: Upload Trivy scan results to GitHub Security tab
  uses: github/codeql-action/upload-sarif@v2
  with:
    sarif_file: 'trivy-results.sarif'

# 代码密钥泄漏检测

代码密钥泄漏是一种常见的安全风险,可能导致敏感信息的泄露。为了防止代码中的密钥泄漏,我们在GitHub Security中开启了密钥检测功能。该功能可以扫描代码库,检测是否存在包含敏感信息的密钥,并生成相应的报表。

在 GitHub Security 中开启密钥检测。

# 代码编写合规检测

代码编写合规检测是为了保证代码的规范性和可维护性。我们使用Checkstyle工具对代码进行合规检测,并生成相应的报表。报表中包含了代码中存在的规范性问题和建议,开发人员可以根据报表进行相应的调整和改进。

- uses: dbelyaev/action-checkstyle@v0.8.4
  with:
    github_token: ${{ secrets.github_token }}
    reporter: github-pr-review
    level: warning

# 代码编写质量检测

代码编写质量检测是为了提高代码的质量和可靠性。我们使用SonarCloud进行代码质量检测,SonarCloud可以对代码进行全面的静态分析,识别代码中的潜在问题和风险,并生成相应的报表。通过分析报表,开发人员可以了解代码的质量状况,及时进行修复和优化。

使用 SonarCloud 进行代码质量检测。访问地址:https://sonarcloud.io/

- name: SonarCloud Scan
  uses: sonarsource/sonarcloud-github-action@master
  env:
     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

# 注意事项

  • 请确保在集成方式中的相关配置文件中填写正确的信息。
  • 请确保在 GitHub Security 中开启密钥检测以保护代码的安全性。

# 术语和缩略语

  • CodeQL: 代码分析引擎,用于扫描代码中的漏洞和安全风险。
  • Trivy: 一个容器镜像安全检测工具,用于检查容器镜像中的漏洞。
  • GitHub Security: GitHub 提供的安全功能,用于检测和报告代码中的安全问题。
  • SonarCloud: 一个用于检测代码质量和安全性的云端服务。

# 其它

Last Updated: 9/10/2023, 3:13:36 PM