secret scanningのカスタ� パターンについて
カスタ� パターンを定義して、secret scanning でサポートされている既定のパターンで検出されないシークレットを特定できます。 たとえば、Organizationの内部的なシークレットのパターンを持っていることもあるかもしれません。 サポートされているシークレットとサービス プロバイダーの詳細については、「Secret scanning パターン」を参照してく� さい。
Enterprise、Organization、またはリポジトリのカスタ� パターンを定義できます。 Secret scanning では、Organization または Enterprise アカウントごとに最大 500 個のカスタ� パターン、およびリポジトリごとに最大 100 個のカスタ� パターンがサポートされます。
カスタ� パターンの正規表現構文
のカスタ� パターンを 1 つまたは複数の正規表現として指定できます。
- シークレット形式: シークレット自体の形式を記述する式。
- シークレットの前: シークレットの前にある文字を記述する式。 既定では、これは
\A|[^0-9A-Za-z]
に設定されます。これは、シークレットが行の先� �にあるか、前に英数字以外の文字を付ける必要があることを意味します。 - シークレットの後: シークレットの後に来る文字を記述する式。 既定では、これは
\z|[^0-9A-Za-z]
に設定されます。これは、シークレットの後に新しい行または英数字以外の文字が続く必要があることを意味します。 - 追� の一致要件: シークレット自体が一致しなければならない、または一致してはならない 1 つまたは複数の省略可能な式。
単純なトークンの� �合、通常はシークレット形式のみを指定する必要があります。 他のフィールドでは柔軟性が提供されるため、複雑な正規表現を作成せずに、より複雑なシークレットを指定できます。 カスタ� パターンの例については、以下の「追� の要件を使用して指定されたカスタ� パターンの例」を参照してく� さい。
Secret scanning では Hyperscan ライブラリが使用され、PCRE 構文のサブセットである Hyperscan の正規コンストラクトのみがサポートされます。 Hyperscanのオプション修飾子はサポートされません。 Hyperscan パターン コンストラクトの詳細については、Hyperscan ドキュメントの「パターンのサポート」を参照してく� さい。
リポジトリのカスタ� パターンの定義
カスタ� パターンを定義する前に、リポジトリでsecret scanningが有効化されていることを確認しておかなければなりません。 詳細については、「リポジトリの secret scanning の構成」を参照してく� さい。
- で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。
- サイドバーで、 [セキュリティと分析] をクリックします。
1. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてく� さい。 1. [Secret scanning] の [カスタ� パターン] で、 [新しいパターン] をクリックします。 1. 新しいカスタ� パターンの詳細を入力します。
- 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
- [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追� のマッチ要件を指定できます。
- サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 1. 新しいカスタ� パターンに問題がなければ、 [パターンの作成] をクリックします。
パターンが作成された後、secret scanningはGitHubリポジトリ中に存在するすべてのブランチのGit履歴全体に対して、あらゆるシークレットをスキャンします。 secret scanning アラートの表示について詳しくは、「secret scanning からのアラートの管理」を参照してく� さい。
追� の要件を使用して指定されたカスタ� パターンの例
ある会社には、5 つの特性を持つ内部トークンがあります。 さまざまなフィールドを使用して、トークンを特定する方法を次のように指定します。
特徴 | フィールドと正規表現 |
---|---|
5 から 10 文字の長さ | シークレット形式: [$#%@AA-Za-z0-9]{5,10} |
. で終わらない | シークレットの後: [^\.] |
数字と大文字を含む | 追� の要件: シークレットは [A-Z] および [0-9] と一致する必要がある |
1 行に複数の小文字を含まない | 追� の要件: シークレットは [a-z]{2,} と一致してはならない |
$%@! のいずれかを含む | 追� の要件: シークレットは [$%@!] と一致する必要がある |
これらのトークンは、上記のカスタ� パターンと一致します。
a9@AAfT! # Secret string match: a9@AAfT
ee95GG@ZA942@aa # Secret string match: @ZA942@a
a9@AA!ee9 # Secret string match: a9@AA
これらの文字列は、上記のカスタ� パターンと一致しません。
a9@AA.!
a@AAAAA
aa9@AA!ee9
aAAAe9
Organizationのカスタ� パターンの定義
カスタ� パターンを定義する前に、Organization 内でスキャンするリポジトリに対して secret scanning を有効にしていることを確かめる必要があります。 Organization 内のすべてのリポジトリで secret scanning を有効にする� �合は、「Organization のセキュリティおよび分析設定を管理する」を参照してく� さい。
注: ドライラン機能がないため、Organization 全体に対して定義する前に、リポジトリでカスタ� パターンをテストすることをお勧めします。 そうすることで、過剰な誤検知 secret scanning アラートを作成しないようにすることができます。
- GitHub Enterprise Server の右上隅にあるプロファイル写真をクリックし、 [自分の Organization] をクリックします。 2. 組織の隣の [設定] をクリックします。
- サイドバーで、 [セキュリティと分析] をクリックします。
1. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてく� さい。 1. [Secret scanning] の [カスタ� パターン] で、 [新しいパターン] をクリックします。 1. 新しいカスタ� パターンの詳細を入力します。
- 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
- [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追� のマッチ要件を指定できます。
- サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 1. 新しいカスタ� パターンに問題がなければ、 [パターンの作成] をクリックします。
パターンが作成された後、secret scanning により、すべてのブランチの Git 履歴全体を含め、Organization 内のリポジトリですべてのシークレットがスキャンされます。 Organization のオーナーとリポジトリの管理者は、シークレットが見つかるとアラートを受け、シークレットが見つかったリポジトリでアラートをレビューできます。 secret scanning アラートの表示について詳しくは、「secret scanning からのアラートの管理」を参照してく� さい。
Enterprise アカウントのカスタ� パターンの定義
カスタ� パターンを定義する前に、Enterprise アカウントのシークレット スキャンを必ず有効にする必要があります。 詳細については、「Enterprise での GitHub Advanced Security の有効化」を参照してく� さい。
注: ドライラン機能がないため、Enterprise 全体に対してカスタ� パターンを定義する前に、リポジトリでテストすることをお勧めします。 そうすることで、過剰な誤検知 secret scanning アラートを作成しないようにすることができます。
- GitHub Enterprise Server の右上で、ご自分のプロファイル写真をクリックしてから、 [Enterprise 設定] をクリックします。 1. Enterprise サイドバーで、 [ポリシー] をクリックします。 1. [ ポリシー] で、[Advanced Security] をクリックします。 1. [GitHub Advanced Security] の [セキュリティ機能] タブをクリックします。
- [シークレット スキャン カスタ� パターン] で、 [新しいパターン] をクリックします。
- 新しいカスタ� パターンの詳細を入力します。
- 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
- [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追� のマッチ要件を指定できます。
- サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 1. 新しいカスタ� パターンに問題がなければ、 [パターンの作成] をクリックします。
パターンが作成された後、secret scanningにより、すべてのブランチの Git 履歴全体を含め、GitHub Advanced Security が有効になっている Enterprise の Organization 内のリポジトリですべてのシークレットがスキャンされます。 Organizationのオーナーとリポジトリの管理者は、シークレットが見つかるとアラートを受け、シークレットが見つかったリポジトリでアラートをレビューできます。 secret scanning アラートの表示について詳しくは、「secret scanning からのアラートの管理」を参照してく� さい。
カスタ� パターンの編集
カスタ� パターンへの変更を保存すると、以前のバージョンのパターンを使用して作成されたすべての secret scanning アラートが閉じられます。
- カスタ� パターンが作成された� �所に移動します。 カスタ� パターンは、リポジトリ、Organization または Enterprise アカウントに作成できます。
- リポジトリまたは Organization の� �合、カスタ� パターンが作成されたリポジトリまたは Organization の [セキュリティと分析] 設定を表示します。 詳細については、上記の「リポジトリのカスタ� パターンの定義」または「Organization のカスタ� パターンの定義」を参照してく� さい。
- Enterprise の� �合、[ポリシー] の下にある [高度なセキュリティ] � �域を表示してから、 [セキュリティ機能] をクリックします。 詳細については、上記の「Enterprise アカウントのカスタ� パターンの定義」を参照してく� さい。
- [Secret scanning] で、編集するカスタ� パターンの右側にある をクリックします。
- 変更をレビューしてテストしたら、 [変更の保存] をクリックします。
カスタ� パターンの削除
-
カスタ� パターンが作成された� �所に移動します。 カスタ� パターンは、リポジトリ、Organization または Enterprise アカウントに作成できます。
- リポジトリまたは Organization の� �合、カスタ� パターンが作成されたリポジトリまたは Organization の [セキュリティと分析] 設定を表示します。 詳細については、上記の「リポジトリのカスタ� パターンの定義」または「Organization のカスタ� パターンの定義」を参照してく� さい。
- Enterprise の� �合、[ポリシー] の下にある [高度なセキュリティ] � �域を表示してから、 [セキュリティ機能] をクリックします。 詳細については、上記の「Enterprise アカウントのカスタ� パターンの定義」を参照してく� さい。
-
削除するカスタ� パターンの右側にある をクリックします。
-
確認をレビューし、カスタ� パターンに関連する開いているアラートを処理する方法を選択します。
-
[はい、このパターンを削除します] をクリックします。