GoSec スキャンの構成
gosec を使用して、スキャンしたリポジトリ内の Golang ソースコードを検査します。
必須パラメーター
パイプラインは、Gosec スキャンを実行するために、表 1 のパラメーターを必要とします。 パイプライン・パラメーターの完全なリストについては、 パイプライン・パラメーター を参照してください。
| 名前 | タイプ | 説明 | 必須またはオプション |
|---|---|---|---|
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 を指定する必要がある場合は、以下のすべてのパラメーターを指定する必要があります。
| 名前 | タイプ | 説明 | 必須またはオプション |
|---|---|---|---|
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-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 ステージに追加します。 詳しくは、 カスタム・スクリプト を参照してください。