GitHub Actions에 code scanning을 도입해 보았습니다.

안녕하세요

네 번째 게시물입니다!

오늘은 GitHub에 최근 출시된 code scanning을 시험에 도입해 보았습니다!

사실은 PHP로 code scanning을 구현하고 싶었습니다만, 대응 언어는 'cpp', 'csharp', 'go', 'java', 'javascript', 'python'이었기 때문에, python으로 했습니다!

code scanning이란?



・코드에 숨어 있는 보안 문제를 방지하기 위한 것이다.
・정말 수정해야 할 문제만 제시해 준다.

CI/CD 구현 방법



2020/11/09 시점에서는 퍼블릭 리포지토리라면 무료로 사용할 수 있지만, 프라이빗 리포지토리는 GitHub Enterprise용의 GitHub Advanced Security 기능을 옵션 구입하는 것으로 이용할 수 있다고 합니다.
이를 바탕으로 이번에는 테스트용 공용 리포지토리를 만들고 갑니다.

먼저 Security를 ​​선택하고 Set up code scanning을 클릭합니다.
※프라이빗 리포지토리의 경우는 「Contact sales」가 되고 있습니다(2020/11/09 시점)



Set up this workflow를 클릭합니다.



시작 커밋을 클릭


.github/workflows 아래에 codeql-analysis.yml이 있습니다.

codeql-analysis.yml
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
# ******** NOTE ********

name: "CodeQL"

on:
  push:
    branches: [ main ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ main ]
  schedule:
    - cron: '39 0 * * 0'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        language: [ 'python' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more...
        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection

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

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v1
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.
        # queries: ./path/to/local/query, your-org/your-repo/queries@main

    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
    # If this step fails, then you should remove it and run the build manually (see below)
    #- name: Autobuild
    #  uses: github/codeql-action/autobuild@v1

    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 https://git.io/JvXDl

    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
    #    and modify them (or add more) to build your code if your project
    #    uses a compiled language

    #- run: |
    #   make bootstrap
    #   make release

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v1


메인 브랜치로 끌어 올리거나 푸시되면 코드 스캔이 실행됩니다.
이번에는 언어를 파이썬을 선택했기 때문에 Autobuild의 부분은 코멘트 아웃하고 있습니다.

실행



시험에 test.py라는 간단한 파일을 끌어 올려보십시오.

test.py
print("hello world!")

풀릭하고 코드를 구문 분석하는 데 약간의 시간이 걸립니다.



아무 문제없이 풀릭 할 수있었습니다.



요약



사실은 취약성이 있는 코드를 기술해, alerts를 내는 곳을 보여주고 싶었습니다만, 취약성이 있는 코드가 생각나지 않기 때문에, 코멘트등으로 받을 수 있으면, 실제로 시험해 보기 때문에, 부탁합니다 !

이번에는 GitHub Actions에 출시된 code scanning을 도입해 보았습니다!

좋은 웹페이지 즐겨찾기