Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

シークレット スキャンのカスタム パターンの定義

secret scanning を拡張して、既定のパターン以外のシークレットを検出できます。

ご自分のエンタープライズで GitHub Advanced Security のライセンスがある場合、GitHub Enterprise Server の Organization 所有のリポジトリで Secret scanning が利用できます。 詳細については、「GitHub Enterprise Server の secret scanning について」と「GitHub Advanced Security について」を参照してください。

secret scanningのカスタムパターンについて

カスタム パターンを定義して、secret scanning でサポートされている既定のパターンで検出されないシークレットを特定できます。 たとえば、Organizationの内部的なシークレットのパターンを持っていることもあるかもしれません。 サポートされているシークレットとサービス プロバイダーの詳細については、「Secret scanning パターン」を参照してください。

Enterprise、Organization、またはリポジトリのカスタム パターンを定義できます。 Secret scanning では、Organization または Enterprise アカウントごとに最大 500 個のカスタム パターン、およびリポジトリごとに最大 100 個のカスタム パターンがサポートされます。

カスタムパターンの正規表現構文

secret scanning のカスタム パターンを 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. your GitHub Enterprise Server instance で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

  2. サイドバーの [セキュリティ] セクションで、 [コードのセキュリティと分析] をクリックします。

  3. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。 1. [Secret scanning] の [カスタム パターン] で、 [新しいパターン] をクリックします。 1. 新しいカスタムパターンの詳細を入力します。

  4. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。

  5. [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を指定できます。

  6. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 カスタム secret scanning パターン形式を作成する

  7. 新しいカスタム パターンをテストする準備ができたら、アラートを作成せずにリポジトリで一致するものを特定するために、 [保存してドライ ラン] をクリックします。

  8. ドライ ランが完了すると、結果のサンプル (最大 1000 個) が表示されます。 結果をレビューし、誤検知の結果を特定します。 ドライ ランの結果を示すスクリーンショット

  9. 新しいカスタム パターンを編集して結果に関するすべての問題を修正してから、 [保存してドライ ラン] をクリックして変更をテストします。

    注: ドライラン機能は現在ベータ版であり、変更されることがあります。

    1. 新しいカスタム パターンに問題がなければ、 **[パターンの公開]** をクリックします。

パターンが作成された後、secret scanningはGitHubリポジトリ中に存在するすべてのブランチのGit履歴全体に対して、あらゆるシークレットをスキャンします。 secret scanning alerts の表示について詳しくは、「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 のセキュリティおよび分析設定を管理する」を参照してください。

  1. GitHub Enterprise Server の右上隅にあるプロファイル写真をクリックし、 [自分の Organization] をクリックします。 プロファイル メニューの組織 2. 組織の隣の [設定] をクリックします。 [設定] ボタン

  2. サイドバーの [セキュリティ] セクションで、 [コードのセキュリティと分析] をクリックします。

  3. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。 1. [Secret scanning] の [カスタム パターン] で、 [新しいパターン] をクリックします。 1. 新しいカスタムパターンの詳細を入力します。

  4. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。

  5. [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を指定できます。

  6. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 カスタム secret scanning パターン形式を作成する

  7. 新しいカスタム パターンをテストする準備ができたら、アラートを作成せずにリポジトリの選択で一致するものを特定するために、 [保存してドライ ラン] をクリックします。

  8. ドライ ランを実行するリポジトリを最大 10 個検索して選択します。 ドライ ラン用に選択されたリポジトリを示すスクリーンショット

  9. 新しいカスタム パターンをテストする準備ができたら、 [ドライ ラン] をクリックします。 1. ドライ ランが完了すると、結果のサンプル (最大 1000 個) が表示されます。 結果をレビューし、誤検知の結果を特定します。 ドライ ランの結果を示すスクリーンショット

  10. 新しいカスタム パターンを編集して結果に関するすべての問題を修正してから、 [保存してドライ ラン] をクリックして変更をテストします。

    注: ドライラン機能は現在ベータ版であり、変更されることがあります。

    1. 新しいカスタム パターンに問題がなければ、 **[パターンの公開]** をクリックします。

パターンが作成された後、secret scanning により、すべてのブランチの Git 履歴全体を含め、Organization 内のリポジトリですべてのシークレットがスキャンされます。 Organization のオーナーとリポジトリの管理者は、シークレットが見つかるとアラートを受け、シークレットが見つかったリポジトリでアラートをレビューできます。 secret scanning alerts の表示について詳しくは、「secret scanning からのアラートの管理」を参照してください。

Enterprise アカウントのカスタム パターンの定義

カスタム パターンを定義する前に、Enterprise アカウントのシークレット スキャンを必ず有効にする必要があります。 詳細については、「Enterprise での GitHub Advanced Security の有効化」を参照してください。

注:

  • エンタープライズ レベルでは、カスタム パターンの作成者のみがパターンを編集し、ドライ ランで使用できます。
  • Enterprise 所有者は、アクセスできるリポジトリ上でのみドライ ランを利用できます。また、Enterprise 所有者は、Enterprise 内のすべての Organization またはリポジトリに必ずしもアクセスできるとは限りません。
  1. GitHub Enterprise Server の右上で、ご自分のプロファイル写真をクリックしてから、 [Enterprise 設定] をクリックします。 GitHub Enterprise Server のプロファイル写真のドロップダウン メニューの [自分の Enterprise] 1. Enterprise サイドバーで、 [ポリシー] をクリックします。 [Enterprise アカウント] サイドバーの [ポリシー] タブ 1. [ ポリシー] で、[Advanced Security] をクリックします。 サイドバーの [Advanced Security] ポリシー 1. [GitHub Advanced Security] の [セキュリティ機能] タブをクリックします。

  2. [シークレット スキャン カスタム パターン] で、 [新しいパターン] をクリックします。

  3. 新しいカスタムパターンの詳細を入力します。

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [その他のオプション ] をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を指定できます。
    3. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認できます。 カスタム secret scanning パターン形式を作成する
  4. 新しいカスタム パターンをテストする準備ができたら、アラートを作成せずに Enterprise で一致するものを特定するため、 [保存してドライ ラン] をクリックします。

  5. ドライ ランを実行するリポジトリを最大 10 個検索して選択します。 ドライ ラン用に選択されたリポジトリを示すスクリーンショット

  6. 新しいカスタム パターンをテストする準備ができたら、 [ドライ ラン] をクリックします。 1. ドライ ランが完了すると、結果のサンプル (最大 1000 個) が表示されます。 結果をレビューし、誤検知の結果を特定します。 ドライ ランの結果を示すスクリーンショット

  7. 新しいカスタム パターンを編集して結果に関するすべての問題を修正してから、 [保存してドライ ラン] をクリックして変更をテストします。

    注: ドライラン機能は現在ベータ版であり、変更されることがあります。

    1. 新しいカスタム パターンに問題がなければ、 **[パターンの公開]** をクリックします。

パターンが作成された後、secret scanningにより、すべてのブランチの Git 履歴全体を含め、GitHub Advanced Security が有効になっている Enterprise の Organization 内のリポジトリですべてのシークレットがスキャンされます。 Organizationのオーナーとリポジトリの管理者は、シークレットが見つかるとアラートを受け、シークレットが見つかったリポジトリでアラートをレビューできます。 secret scanning alerts の表示について詳しくは、「secret scanning からのアラートの管理」を参照してください。

カスタム パターンの編集

カスタム パターンへの変更を保存すると、以前のバージョンのパターンを使用して作成されたすべての secret scanning alerts が閉じられます。

  1. カスタム パターンが作成された場所に移動します。 カスタム パターンは、リポジトリ、Organization または Enterprise アカウントに作成できます。
  2. [Secret scanning] で、編集するカスタム パターンの右側にある をクリックします。
  3. 編集したカスタム パターンをテストする準備ができたら、アラートを作成せずに一致するものを特定するため、 [保存してドライ ラン] をクリックします。
  4. 変更を確認してテストしたら、 [Publish changes] (変更の発行) をクリックします。

カスタムパターンの削除

  1. カスタム パターンが作成された場所に移動します。 カスタム パターンは、リポジトリ、Organization または Enterprise アカウントに作成できます。

  2. 削除するカスタム パターンの右側にある をクリックします。

  3. 確認をレビューし、カスタム パターンに関連する開いているアラートを処理する方法を選択します。

  4. [はい、このパターンを削除します] をクリックします。

    カスタム secret scanning パターンの削除を確認する