スキャンの種類
MODEの設定
未設定の場合は sast を使用します。
| MODE | 説明 |
|---|---|
| sast | コードスキャン |
| secret | シークレットスキャン |
| iac | IaC(Infrastructure as Code)のスキャン |
| all | SAST → Secret → IaCの順に実行 |
TIMEOUTの設定
実行全体の制限時間を秒単位で指定します。既定値は MODE=all で600秒(10分)、単独のスキャンで360秒(6分)です。TIMEOUT を指定すると、その値を優先します。CIジョブの制限時間は、この値より長く設定してください。
LANGの設定
環境変数 LANG で、SAST、Secret、IaCがプルリクエストやマージリクエストに投稿する検出結果とコメントの言語を設定します。
未設定または未対応の値の場合は KO を使用します。大文字と小文字は区別せず、前後の空白は無視します。
| LANG | コメントの言語 |
|---|---|
KO |
韓国語 |
EN |
英語 |
JP |
日本語 |
LEVELの設定
未設定の場合は none を使用します。
検査範囲内で LEVEL 以上の重大度の問題が見つかると、セキュリティ検査ジョブが失敗します。PR/MRでは必須チェックの設定に応じてマージを制限し、ブランチへのプッシュでは後続のビルドやデプロイを止めることができます。LEVEL=medium のように小文字で指定してください。未設定または none の場合、問題の検出だけではジョブを失敗させません。
SAST、Secret、IaC、MODE=all に共通です。MODE=all では、処理を止める判定が出ると後続のスキャナーを実行しません。warning は high、error は critical と同じ基準です。
| LEVEL |
|---|
| none |
| any |
| info |
| low |
| medium |
| high |
| critical |
AUDIT LEVELの設定
IaCの AUDIT_LEVEL を設定すると、指定した重大度未満の結果を除外できます。
例えば AUDIT_LEVEL=medium では、low と info の結果を除外します。
| AUDIT_LEVEL |
|---|
| info |
| low |
| medium |
| high |
PR/MRを作成しないプッシュパイプライン
システムがソースをプッシュしてビルド・デプロイする場合も、PR/MRを作成せずに LEVEL を適用できます。GitHubのブランチの push イベントと、GitLabの CI_PIPELINE_SOURCE=push のブランチパイプラインが対象です。タグのプッシュ、スケジュール実行、手動実行には適用されません。
SASTとIaCでは、今回のプッシュで追加・変更した行の問題を処理停止の判定に使用します。同じファイルでも、変更していない行にある既存の問題は判定対象から除外します。Secretは今回のプッシュで追加したコミットも検査するため、途中のコミットで追加し、最後のコミットで削除したシークレットでもジョブを止めることがあります。強制プッシュで再追加したシークレットも検査します。
通常のプッシュと強制プッシュでは、プッシュ前後のコミットを比較します。新規ブランチはデフォルトブランチとの共通祖先を、デフォルトブランチへの最初のプッシュは空のリポジトリを基準にします。
プッシュの検査には XEIZE_TOKEN が必要です。PR/MRへのコメント用トークンは不要で、結果はジョブログに表示されます。GitLab WorkflowとGitHub Actionsの例を参照してください。
LOG_FINDINGSの設定
LOG_FINDINGS=pretty(または 1、true)は重大度ごとに色分けした表を、json はJSON Linesを出力します。未設定、0、false の場合は出力しません。
表には LEVEL、検出件数、説明、場所、ドキュメントへのリンクを表示します。SASTでは該当コード、source・sink、呼び出しの流れを、IaCでは提供された現在値・期待値とMR/PRコメントの対処案を表示します。
Secretでは同じ値を一つの項目にまとめ、ハードコードされた場所とコミットごとの履歴をリンク付きで表示します。値は abc***xyz のようにマスクし、短い値や確認できない値は *** と表示します。表の言語は LANG=KO、EN、JP で選択し、NO_COLOR=1 で色を無効にできます。
この設定は LEVEL の失敗判定を変えません。変更行で絞り込む前の結果を含むことがあるため、表示されたすべての項目が処理停止の対象になるわけではありません。