CodeSweep Github 動作

HCL AppScan CodeSweep for GitHub 動作可讓您在每一個提取要求中檢查程式碼。此動作會在每次更新時識別已變更程式碼中的漏洞。不過 HCL AppScan CodeSweep for GitHub 延伸功能不僅能辨識問題,還能在問題進入主要分支之前,告知您緩解問題所需的知識。

指導教學

登錄

HCL AppScan on Cloud (ASoC) 上登錄,以產生您的 API 金鑰/密碼。

設定

  1. 登入 ASoC 後,請前往 API 頁面以產生您的 API 金鑰/密碼配對。這必須用於動作的 asoc_keyasoc_secret 參數。將這些參數儲存為儲存庫中的密鑰。
  2. 確認儲存庫的工作流程權限設定為讀取權及寫入權。這可讓 CodeSweep 掃描您的檔案,並針對找到的問題建立檢查執行 (checkrun) 和註釋。在設定 > 動作 > 一般中存取這些設定。
  3. 若要在開啟提取要求時掃描程式碼變更,請將下列檔案新增至您的儲存庫 .github/workflows/codesweep.yml,或更新現有的工作流程檔案:
    name: "HCL AppScan CodeSweep"
    on:
      pull_request:
        types: [opened,synchronize]
    jobs:
      scan:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout
            uses: actions/checkout@v1
          - name: Run AppScan CodeSweep
            uses: HCL-TECH-SOFTWARE/appscan-codesweep-action@v2
            with:
              asoc_key: ${{secrets.ASOC_KEY}}
              asoc_secret: ${{secrets.ASOC_SECRET}}
        env: 
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
    註: 如果您使用 checkout@v2 或更新版本,則必須將提取深度設為 0。例如:
    uses: actions/checkout@v2
    with:
      fetch-depth: 0
  4. 若要在合併提取要求時將安全問題發佈到 ASoC,請將下列檔案新增至 .github/workflows/codesweep_publish.yml 底下的儲存庫,或更新現有的工作流程檔案:
    name: "HCL AppScan CodeSweep"
    on:
      pull_request:
        types: [closed]
    jobs:
      publish:
        runs-on: ubuntu-latest
        steps:
          - name: Publish issues to ASoC
            uses: HCL-TECH-SOFTWARE/appscan-codesweep-action@v2
            with:
              asoc_key: ${{secrets.ASOC_KEY}}
              asoc_secret: ${{secrets.ASOC_SECRET}}
              publish_on_merge: true
              application_id: <your ASoC application ID>
        env: 
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

掃描的選用參數

參數 說明: Values 預設
status 檢查若有發現任何安全問題的狀態。
  • action_required
  • failure
  • neutral
neutral
例如:
with:
  status: failure

將問題發佈至 AppScan on Cloud 的選用參數

參數 說明: Values 預設
issue_status 發佈至 ASoC 的問題狀態。
  • open
  • inprogress
  • noise
  • fixed
  • passed
open
scan_base_name ASoC 時間戳記附加到給定的基本名稱。 GitHub_CodeSweep
personal_scan ASoC
  • true
  • false
true
with:
  publish_on_merge: true
  application_id: 6c058381-17ca-e711-8de5-002590ac753d
  issue_status: "inprogress"
  scan_base_name: "CodeSweep"
  personal_scan: true

例子

將註釋新增至差異視圖,其中顯示任何有漏洞的程式碼行,並新增檢查執行以提供其他詳細資料,包括正確與錯誤的範例及緩解資訊。

支援的語言

HCL AppScan CodeSweep 動作支援下列語言/用語的掃描:
語言
Android-Java Groovy NodeJS Ruby
Angular IaC(Docker、K8s、Terraform) Objective-C/Objective-C++ Scala
Apex Ionic PHP Swift
C/C++ Java PL/SQL T-SQL
Cobol JavaScript Perl TypeScript
ColdFusion JQuery Python VueJS
Dart Kotlin React .Net(C#、VB.NET、ASP.Net)
GoLang Mootools React Native Xamarin

疑難排解

問題:系統會執行安全掃描,但不會針對找到的安全問題建立檢查執行或註釋。工作流程日誌包含錯誤:

Error: Failed creating checkrun: HttpError: Resource not accessible by integration

解決方案:此錯誤表示工作流程沒有儲存庫的寫入權,因此 CodeSweep 無法建立檢查執行和註釋。若要修正此問題,請前往設定 > 動作 > 一般,並將工作流程許可權設為讀取權和寫入權

加入社群

使用 CodeSweep Slack 通道回報任何意見,或詢問關於 HCL AppScan CodeSweep 動作的一般問題。