GoSec スキャンの構成

gosec を使用して、スキャンしたリポジトリ内の Golang ソースコードを検査します。

必須パラメーター

パイプラインは、Gosec スキャンを実行するために、表 1 のパラメーターを必要とします。 パイプライン・パラメーターの完全なリストについては、 パイプライン・パラメーター を参照してください。

gosec スキャンパラメータ
名前 タイプ 説明 必須またはオプション
opt-in-gosec gosec スキャンを有効にするには、プロパティを空でない任意の値に設定する。 スキャンを無効にするには、空の値を設定するか、プロパティを完全に削除する。 (デフォルトは空) 必須

プライベート Git リポジトリーの gosec スキャンの有効化

プロジェクトがプライベート Git リポジトリーにある依存関係を必要とし、そのために SSH ベースの認証を必要とする場合は、オプション・パラメーターを指定して、パイプラインが依存関係を取得できるようにすることができます。 詳しくは、 プライベート・リポジトリーの依存関係のダウンロードの有効化 を参照してください。

依存関係を取得するためにプロキシを指定する必要がある場合は、パイプラインパラメータを使用して、資格情報 (ユーザー名とトークン) とともにそのプロキシ URL を指定できます。 詳しくは、 GOPROXY の有効化 を参照してください。

プライベート・リポジトリーの依存関係のダウンロードを有効にする

リポジトリーの依存関係のダウンロードを有効にするには、以下のすべてのパイプライン・パラメーターを指定します。

パイプラインのパラメーター
名前 タイプ 説明 必須またはオプション
gosec-private-repository-url text (非推奨) プライベートリポジトリのベース URL. オプション
gosec-private-repository-host text プライベートリポジトリのホスト。 任意
gosec-private-repository-ssh-key secret プライベートリポジトリのSSHキー
gosec-private-repository-user |テキスト|httpsアクセスでプライベートリポジトリのユーザー(デフォルトは x-oauth-basic )|オプション|httpsアクセスでプライベートリポジトリのユーザー(デフォルトは )|オプション|httpsアクセスでプライベートリポジトリのユーザー(デフォルトは
gosec-private-repository-token secret プライベートリポジトリへの https アクセスに使用するトークン (デフォルトは、 URL リポジトリが gosec-private-repository-host'の値でホストされているツールチェーンの最初の git インテグレーション用に設定されたトークン) オプション(optional)

GOPROXY を有効にする

GOPROXY を指定する必要がある場合は、以下のすべてのパラメーターを指定する必要があります。

GOPROXYパラメータ
名前 タイプ 説明 必須またはオプション
gosec-proxy-virtual-repository-user text gosec プロキシーの仮想リポジトリー・ユーザー オプション
gosec-proxy-virtual-repository-token secret gosec プロキシーの仮想リポジトリー・トークン オプション
gosec-proxy-virtual-repository-url text gosec プロキシーの仮想リポジトリー URL オプション

オプション・パラメーター

gosec-scan-image パラメーターを使用して、使用する別の gosec イメージ (カスタム・イメージや特定のバージョンの公式 gosec イメージなど) を指定できます。

gosec-additional-flags フラグの使い方は、 例の セクションに示されている

gosec オプション・パラメーター
パラメーター名 デフォルト値 説明
gosec-additional-flags text gosec コマンドの先頭に追加される追加のフラグ。
gosec-scan-image text カスタム・イメージまたは公式イメージの特定のバージョンを含む、代替 gosec イメージを指定します。
gosec-repo-path-$repo_owner-$repo_name text Goモジュールのルートがあるリポジトリ内のサブディレクトリのパス。 go.mod がリポジトリのルートにない場合、リポジトリごとに使用する。

gosec-additional-flags の値を -exclude-dir=<your_folder_1> -exclude-dir=<your_folder_2> -nosec=true として定義すると、gosec コマンドの実行が以下のように更新されます。

./gosec -exclude-dir=<your_folder_1> -exclude-dir=<your_folder_2> -nosec=true -no-fail -fmt=json -out=gosec-results.json -stdout -verbose=text ./...

サブディレクトリにある囲碁モジュールをスキャンするには、 gosec-repo-path-$repo_owner-$repo_name パラメータを設定する。 例えば、リポジトリ所有者が myorg で、リポジトリ名が myrepo で、Go モジュールが cmd/myapp ディレクトリにある場合、パラメータを次のように定義します:

  • パラメーター名:gosec-repo-path-myorg-myrepo
  • パラメータ値: cmd/myapp

これは、リポジトリルートではなく、 cmd/myapp パスから始まる Go コードをスキャンします。

独自の構成ファイルの使用

デフォルト構成を変更する場合は、ターゲット・リポジトリーに config.json ファイルを作成します。 構成ファイル内の分析パラメーターについて詳しくは、 gosec 構成を参照してください。

別の静的スキャン実装の使用

独自の静的スキャン実装を使用する場合は、 .pipeline-config.yaml ファイルを変更し、独自のカスタム・スクリプトを static-scan ステージに追加します。 詳しくは、 カスタム・スクリプト を参照してください。