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

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

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

Secret scanning alerts for partners はすべてのパブリック リポジトリで自動的に実行されます。 GitHub Advanced Security のライセンスをお持ちの場合は、Organization が所有するすべてのリポジトリに secret scanning alerts for users を有効化および構成できます。 詳細については、「secret scanning alerts for users について」と「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. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

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

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

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

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

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

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

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

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

  10. 任意で、カスタム パターンのプッシュ保護を有効にするには、 [Enable] (有効にする) をクリックします。

    注:

    • カスタム パターンのプッシュ保護は、プッシュ保護として secret scanning が有効になっているリポジトリにのみ適用されます。 詳細については、「リポジトリのプッシュ保護として secret scanning を有効にする」を参照してください。
    • 一般的なカスタム パターンに対してプッシュ保護を有効にすると、共同作成者が混乱する可能性があります。

    カスタム パターン ページのスクリーンショット。プッシュ保護を有効にするボタンが強調表示されています

パターンが作成された後、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.com の右上隅にあるプロファイル写真をクリックし、 [自分の Organization] をクリックします。 プロファイル メニューの組織 2. 組織の隣の [設定] をクリックします。 [設定] ボタン

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

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

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

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

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

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

  8. ドライ ランを実行するリポジトリを選びます。

    • Organization 全体でドライ ランを実行するには、Organization のすべてのリポジトリを選びます。 ドライ ラン用に選択されたリポジトリを示すスクリーンショット
    • ドライ ランを実行するリポジトリを指定するには、 [選択済みリポジトリ] を選び、最大 10 個のリポジトリを検索して選びます。 ドライ ラン用に選択されたリポジトリを示すスクリーンショット
  9. 新しいカスタム パターンをテストする準備ができたら、 [実行] をクリックします。 1. ドライ ランが完了すると、結果のサンプル (最大 1000 個) が表示されます。 結果をレビューし、誤検知の結果を特定します。 ドライ ランの結果を示すスクリーンショット

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

  11. 任意で、カスタム パターンのプッシュ保護を有効にするには、 [Enable] (有効にする) をクリックします。

    注:

    • カスタム パターンのプッシュ保護は、プッシュ保護として secret scanning が有効になっている組織のリポジトリにのみ適用されます。 詳細については、「組織のプッシュ保護として secret scanning を有効にする」を参照してください。
    • 一般的なカスタム パターンに対してプッシュ保護を有効にすると、共同作成者が混乱する可能性があります。

    カスタム パターン ページのスクリーンショット。プッシュ保護を有効にするボタンが強調表示されています

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

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

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

注:

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

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. Enterprise サイドバーで、 [ポリシー] をクリックします。 [Enterprise アカウント] サイドバーの [ポリシー] タブ 1. ポリシー で、[コードのセキュリティと分析] をクリックします。 サイドバーの "コードのセキュリティと分析" ポリシーのスクリーンショット

  4. [コードのセキュリティと分析] で、 [セキュリティ機能] をクリックします。

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

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

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

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

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

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

  11. 任意で、カスタム パターンのプッシュ保護を有効にするには、 [Enable] (有効にする) をクリックします。

    注:

    • カスタム パターンのプッシュ保護を有効にするには、エンタープライズ レベルでプッシュ保護として secret scanning を有効にする必要があります。 詳細については、「エンタープライズのプッシュ保護として secret scanning を有効にする」を参照してください。
    • 一般的なカスタム パターンに対してプッシュ保護を有効にすると、共同作成者が混乱する可能性があります。

    カスタム パターン ページのスクリーンショット。プッシュ保護を有効にするボタンが強調表示されています

パターンが作成された後、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. 任意で、カスタム パターンのプッシュ保護を有効にするには、 [有効にする] をクリックします。

    注:

    • カスタム パターンのプッシュ保護は、プッシュ保護として secret scanning が有効になっているリポジトリにのみ適用されます。 プッシュ保護の有効化について詳しくは、「シークレット スキャンによるプッシュの保護」を参照してください。
    • 一般的なカスタム パターンに対してプッシュ保護を有効にすると、共同作成者が混乱する可能性があります。

    カスタム パターン ページのスクリーンショット。プッシュ保護を有効にするボタンが強調表示されています。

  5. 任意で、カスタム パターンのプッシュ保護を無効にするには、 [Disable] (無効にする) をクリックします。

    カスタム パターン ページのスクリーンショット。プッシュ保護を無効にするボタンが強調表示されています

カスタムパターンの削除

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

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

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

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

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