ASoC および GitLab

.AppScan on Cloud を GitLab と併用すると、マージ要求ごとにリポジトリー内のファイルに対して静的分析セキュリティー・テスト (SAST) を実行し、脆弱性がメイン分岐に達するのを防ぐことができます。結果は AppScan on Cloud に保存されます。

登録

アカウントがない場合は、HCL AppScan on Cloud (ASoC) に登録して API 鍵と API 秘密を生成してください。

セットアップ

  1. 「API」ページASoC の API 鍵と API 秘密を生成します。

    API 鍵と API 秘密は、このアクションの ASOC_KEY および ASOC_SECRET パラメーターにマッピングされます。鍵と秘密は控えておいてください。

  2. ASoCアプリケーションを作成します

    アプリケーションは、同じプロジェクトに関連するすべてのスキャンを保存するコンテナーとして機能します。

  3. アプリケーション ID をコピーします。「アプリケーション」 > 「<ご使用のアプリケーション>」を選択し、次に「アプリケーションの詳細」「アプリケーション ID」 の横にある「コピー」をクリックします。

    ASoC のアプリケーション ID は、この統合に備えて APP_ID にマッピングされます。

  4. GitLab で 3 つの変数を作成します。「設定」 > 「CI/CD」 > 「変数」を選択し、以下のように変数を設定します。
    Variable
    APP_ID ASoC からのアプリケーション ID
    ASOC_KEY ASoC からの API 鍵
    ASOC_SECRET ASoC からの API 秘密

  5. .gitlab-CI.YAMLDockerfile を GitLab リポジトリー・ルートにコピーします。
  6. 独自のランナーを作成します。「設定]」 > 「CI/CD」 > 「ランナー」を選択し、特定のランナーの下の手順に従います。
  7. GitLab ランナーをセットアップするシステムで、GitLab リポジトリーが存在しない場合は、ログインしてリポジトリーを複製します。そのマシンに Docker エンジンがインストールされていることを確認します。
  8. Dockerfile から saclient という新規 Docker イメージを作成します。ディレクトリーをリポジトリーのルートに変更し、次のコマンドを実行して Docker イメージをビルドします。
     docker build -t saclient . 
    重要: 最後のピリオドは、現行ディレクトリーを示します。
  9. GitLab では、スキャンが失敗した場合にマージされないように、「設定」 > 「マージ要求」 > 「マージチェック」「パイプラインは成功する必要があります」を有効化します。
  10. 「設定」 > 「CI/CD」 > 「パイプライン」で新しいマージ要求が作成されたときに、新しいスキャン・ジョブが開始されることを確認します。

CentOS に GitLab ランナーをインストールする場合、ランナーを作成するには、次の手順を実行します。
  1. ご使用のシステム用のバイナリーをダウンロードします。
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  2. 実行する許可を設定します。
    sudo chmod +x /usr/local/bin/gitlab-runner
  3. GitLab ランナー・ユーザーを作成します。
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  4. サービスとしてインストールして実行します。
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner 
    sudo gitlab-runner start
  5. ランナーを登録します。
    sudo gitlab-runner register --url https://gitlab.com/ --registration-token $REGISTRATION_TOKEN

追加情報

現在の yaml スクリプトには、セキュリティー問題の許容数が特定のしきい値を超えるとスキャンに失敗するセキュリティー・ポリシー・チェックのサンプルが含まれています。サンプルの maxIssuesAllowed200 に設定されています。