detect-secrets スキャンの構成
detect-secrets は、コードベース内のシークレットを検出してシークレット・リークを修復および防止するクライアント・サイド・セキュリティー・ツールです。
詳しくは、 IBM/detect-secretsを参照してください。
Detect-シークレットは、現在のコードベース全体をスキャンし、現在識別されているシークレットのスナップショットを出力します。 次に、シークレット・リストを使用して、識別されたシークレットを真陽性または偽陽性として監査し、 DevSecOps ツールチェーンを使用して、真陽性に関する Git 問題を作成します。
ベースライン・ファイルの使用
ベースライン・ファイルは、検出シークレット・スキャンのスナップショットです。 このファイルには、実行ごとに潜在的なシークレットがリストされ、誤検出のマークが付けられます。これらのシークレットには、後続の実行で問題のフラグが立てられません。
ベースライン・ファイルは定期的に更新する必要があります。 ベースライン・ファイルをコミットし、それをリポジトリーに戻して、更新および監査します。 これらのフォールス・ポジティブをベースラインに組み込むことにより、今後のスキャン時にこれらの既存ファイルに対して問題が作成されないようにすることができます。
シークレットの分類
detect-secrets スキャンが完了すると、検出されたシークレットはまだ実際のポジティブまたはフォールス・ポジティブとして分類されていません。
検出される可能性があるシークレットは、以下の 3 つの
- 未監査-シークレットが監査プロセスで検討する必要がある潜在的なシークレットである場合、そのシークレットは未監査として分類されます。
- Audit as real-シークレットは、監査中に真陽性のマークが付けられ、ベースライン・ファイルにまだそのシークレットが含まれている場合、監査済みとして分類されます。
- ライブ-シークレットが、detect-secrets によって使用されるプラグインによってライブ・シークレットとして確認された場合、シークレットはライブ・シークレットとして分類されます。
ベースラインの管理
以下のコマンドは、秘密ベースラインを管理します。
detect-secrets scan
コマンドは、ベースライン・ファイルを生成するか、実行で検出されたすべての潜在的なシークレットのスナップショットを含むように既存のファイルを更新します。detect-secrets audit
コマンドは、シークレットにラベルを付けて、マイグレーションするシークレットのチェックリストを絞り込むことができるようにします。
検出されたシークレットを true または false positives として識別します。その後、ベースライン・ファイルを更新して、フォールス・ポジティブを将来のスキャン実行から除外できるようにすることができます。
ベースラインの更新
ベースラインを更新するには、以下の手順を実行します。
-
detect-secrets をローカル・コンピューターにインストールします。
pip install --upgrade "git+https://github.com/ibm/detect-secrets.git@master#egg=detect-secrets"
-
以下のコマンドを実行して、リポジトリー内のベースライン・ファイルをスキャン、生成、または更新します。
-
以下のコマンドを実行して、リポジトリー・フォルダーをスキャンします。
detect-secrets scan --update .secrets.baseline
--exclude-files
フラグは、フォールス・ポジティブが含まれていることが分かっている特定のファイル、またはスキャンが不要な特定のファイルを無視する場合に使用できます。 除外ルールは、正規表現の形式に基づいています。ファイルおよびフォルダーの除外を使用してスキャンを実行するには、以下のコマンドを使用します。
detect-secrets scan --update .secrets.baseline --exclude-files '<folder_to_ignore>|<file_to_ignore>'
例:
detect-secrets scan --update .secrets.baseline --exclude-files "package-lock.json|go.sum"
除外されたファイルのリストは、ベースライン・ファイルに記録されます。
後続のスキャンで
--exclude-files
オプションが指定されていない場合、シークレットは、ベースライン・ファイルからの既存の除外リストを自動的に尊重します。ただし、
detect-secrets scan
中に新しい除外リストを指定したい場合は、新しいリストによってベースライン・ファイル内の既存の除外リストが上書きされます。 -
以下のコマンドを実行して、スキャン・ステップで作成されたベースライン・ファイルを確認および監査します。
detect-secrets audit .secrets.baseline
このコマンドは、対話式端末を起動して誤検出をマークします。 検出されたシークレットが実際のシークレットである場合は (y) es を指定でき、フォールス・ポジティブである場合は (n) o を指定できます。
-
.secrets.baseline
ファイルをコミットしてリポジトリーにプッシュします。このプロセスは定期的にローカルで実行する必要があります。
-
Detect-secrets スキャンのパラメーター
既存のベースライン・ファイルがある場合、スキャンは既存の構成を使用します。 以前の監査結果と設定は上書きされません。 ベースライン・ファイルが存在しない場合は、実行のための一時ベースラインが自動的に作成されます。
detect-secrets-baseline-filename
パラメーターは、detect-secrets によって使用されるベースライン・ファイルのカスタム・ファイル名を指定します。 デフォルトでは、detect-secrets は、リポジトリー・ルート・ディレクトリー内で .secrets.baseline
という名前のファイルを検索します。 ただし、ベースライン・ファイルに別の名前を付ける場合は、このパラメーターを使用してそのファイル名を指定できます。
detect-secrets-exclusion-list
パラメーターは、既存のベースライン・ファイルを使用せずに実行すると、デフォルトの除外リストをオーバーライドします。 このパラメーターは、無視するファイルを識別して、それらにリンクされている問題が作成されないようにします。
detect-secrets-image
パラメーターを使用して、使用する別の detect-secrets イメージ (カスタム・イメージや特定のバージョンの公式 detect-secrets イメージなど) を指定できます。
detect-secrets-verbose
パラメーターを 1 に設定すると、スキャン対象の現行ファイルの名前がログに記録されます。
名前 | タイプ | 説明 | 必須またはオプションです |
---|---|---|---|
detect-secrets-baseline-filename |
ストリング | アプリケーション・リポジトリー内のベースライン・ファイルの名前。 デフォルトは .secrets.baseline です。 |
ベースライン・ファイルがデフォルト名 .secrets.baseline でない場合は必須です。 |
detect-secrets-exclusion-list |
ストリング | 検出シークレット・スキャンで除外するファイルの正規表現リスト。 デフォルトは requirements.txt|go.mod|go.sum|pom.xml|build.gradle|package-lock.json です。 |
オプション。このファイル・リストは、 .secrets.baseline ファイルが存在しない場合にのみ、一般除外リストをオーバーライドします。 |
detect-secrets-image |
ストリング | カスタム・イメージまたは特定のバージョンの公式イメージを含む、代替の detect-secrets イメージを指定します。 | オプション |
detect-secrets-verbose |
ストリング | 現在スキャンされているファイルの名前を出力します。 デフォルトは 0 です。 |
オプション、デバッグ・フラグ 0-オフ、1-オン。 |