CodeSweep GitHub アクション

HCL AppScan CodeSweep for GitHub アクションを使用すると、プル要求ごとにコードをチェックできます。このアクションは、更新ごとに変更されたコードの脆弱性を特定します。しかし、問題を特定するだけでなく、HCL AppScan CodeSweep for GitHub 拡張機能によって、問題をメイン分岐に移行する前に、問題を軽減するために知っておくべき情報が提供されます。

チュートリアル

登録

HCL AppScan on Cloud (ASoC) に登録して API 鍵/秘密を生成します。

セットアップ

  1. ASoC にログインしたら、API ページに移動して API 鍵/秘密のペアを生成します。これらは、アクションの asoc_key および asoc_secret パラメーターで使用する必要があります。これらのパラメーターを秘密としてリポジトリーに保存します
  2. リポジトリーの「ワークフロー許可」「読み取りおよび書き込み許可」に設定されていることを確認します。これにより、CodeSweep はファイルをスキャンし、検出された問題のチェックランとアノテーションを作成できます。これらの設定には、「設定」 > 「アクション」 > 「全般」からアクセスします。
  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 以降を使用する場合は、fetch-depth を 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}}

スキャンのオプション・パラメーター

パラメーター 説明 Default (デフォルト)
status セキュリティーの問題が検出されたかどうかの確認の状況。
  • action_required
  • failure
  • neutral
neutral
例:
with:
  status: failure

AppScan on Cloud に問題を公開するためのオプション・パラメーター

パラメーター 説明 Default (デフォルト)
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 アクションに関するフィードバックをレポートしたり、一般的な質問をしたりします。