Skip to main content
ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

Secret Scanningのカスタムパターンの定義

  • secret scanning for advanced securityを拡張して、デフォルトのパターン以上のシークレットを検出させることができます。

Secret scanning for advanced security is available for organization-owned repositories in GitHub Enterprise Cloud if your enterprise has a license for GitHub Advanced Security. For more information, see "GitHub's products."

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

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

カスタムパターンは、Enterprise、Organization、リポジトリで定義できます。 Secret scanningは最大で各OrganizationもしくはEnterpriseアカウントに対して500のカスタムパターンを、そしてリポジトリごとに最大100のカスタムパターンをサポートします。

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

  • secret scanning for advanced securityのカスタムパターンは、1つ以上の正規表現として指定できます。
  • シークレットフォーマット: シークレット自体のフォーマットを記述する式。
  • シークレットの前: シークレットの前に来る文字列を記述する式。 デフォルトでは\A|[^0-9A-Za-z]に設定されており、これはシークレットは行頭にあるか、非英数字が先行していなければならないということです。
  • シークレットの後: シークレットの後に来る文字列を記述する式。 デフォルトでは\z|[^0-9A-Za-z]に設定されており、これはシークレットの後は改行か、非英数字が続かなければならないということです。
  • 追加のマッチ要件: シークレット自体がマッチしなければならない、あるいはマッチしてはならない1つ以上のオプションの式。

シンプルなトークンの場合、通常はシークレットフォーマットだけを指定すればすみます。 他のフィールドは、複雑な正規表現を作成することなくもっと複雑なシークレットを指定できるよう、柔軟性を提供します。 カスタムパターンの例については下記の「追加要件を使って指定されるカスタムパターンの例」を参照してください。

Secret scanningはHyperscanライブラリを利用し、Hyperscanの正規構造のみをサポートします。これはPCRE構文のサブセットです。 Hyperscanのオプション修飾子はサポートされません。 Hyperscanのパターン構造に関する詳しい情報については、Hyperscanのドキュメンテーションの「Pattern support」を参照してください。

リポジトリのカスタムパターンの定義

カスタムパターンを定義する前に、リポジトリでsecret scanningが有効化されていることを確認しておかなければなりません。 詳しい情報については「リポジトリでのsecret scanningの設定」を参照してください。

  1. GitHub.comで、リポジトリのメインページにアクセスしてください。

  2. リポジトリ名の下で Settings(設定)をクリックしてください。 リポジトリの設定ボタン

  3. In the "Security" section of the sidebar, click Code security and analysis.

  4. Under "Code security and analysis", find "GitHub Advanced Security."

  5. Under "Secret scanning", under "Custom patterns", click New pattern.

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. Provide a sample test string to make sure your configuration is matching the patterns you expect.

    カスタムのsecret scanningパターン形式の作成

  7. 新しいカスタムパターンをテストする準備ができたら、アラートを作成することなくリポジトリ内のマッチを特定するために、Save and dry run(保存してdry run)をクリックしてください。

  8. When the dry run finishes, you'll see a sample of results (up to 1000). Review the results and identify any false positive results. Screenshot showing results from dry run

  9. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  10. When you're satisfied with your new custom pattern, click Publish pattern.

パターンを作成したら、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!         # マッチするシークレット文字列: a9@AAfT
ee95GG@ZA942@aa  # マッチするシークレット文字列: @ZA942@a
a9@AA!ee9        # マッチするシークレット文字列: a9@AA

以下の文字列は、上記のカスタムパターンにマッチしません。

a9@AA.!
a@AAAAA
aa9@AA!ee9
aAAAe9

Organizationのカスタムパターンの定義

カスタムパターンを定義する前に、Organizationの中のスキャンしたいリポジトリでsecret scanningが有効化されていることを確認しなければなりません。 Organization内のすべてのリポジトリでsecret scanningを有効化するには、「Organizationのセキュリティと分析設定の管理」を参照してください。

  1. In the top right corner of GitHub.com, click your profile photo, then click Your organizations. プロフィールメニューのあなたのOrganization

  2. Organizationの隣のSettings(設定)をクリックしてください。 設定ボタン

  3. In the "Security" section of the sidebar, click Code security and analysis.

  4. Under "Code security and analysis", find "GitHub Advanced Security."

  5. Under "Secret scanning", under "Custom patterns", click New pattern.

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. Provide a sample test string to make sure your configuration is matching the patterns you expect.

    カスタムのsecret scanningパターン形式の作成

  7. 新しいカスタムパターンをテストする準備ができたら、アラートを作成することなく選択したリポジトリ内のマッチを特定するために、Save and dry run(保存してdry run)をクリックしてください。

  8. Search for and select up to 10 repositories where you want to perform the dry run. dry runのために選択したリポジトリを表示しているスクリーンショット

  9. カスタムパターンをテストする準備ができたら、Dry runをクリックしてください。

  10. When the dry run finishes, you'll see a sample of results (up to 1000). Review the results and identify any false positive results. Screenshot showing results from dry run

  11. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  12. When you're satisfied with your new custom pattern, click Publish pattern.

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

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

カスタムパターンを定義する前に、Enterpriseアカウントでシークレットスキャンニングを有効化しておかなければなりません。 詳しい情報については「EnterpriseでのGitHub Advanced Securityの有効化」を参照してください。

ノート:

  • Enterpriseレベルでは、カスタムパターンを編集でき、dry runで使えるのはカスタムパターンの作者だけです。
  • Enterpriseオーナーは、アクセスできるリポジトリ上でのみdry runを利用できますが、必ずしもEnterprise内のすべてのOrganizationやリポジトリにアクセスできるわけではありません。
  1. GitHub.comの右上で、自分のプロフィール写真をクリックし、続いてYour enterprises(自分のEnterprise)をクリックしてください。 GitHub Enterprise Cloudのプロフィール写真のドロップダウンメニュー内の"Your enterprises"

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

  3. Enterpriseアカウントのサイドバーで、 Policies(ポリシー)をクリックしてください。 Enterpriseアカウントサイドバー内のポリシータブ

  4. Policies(ポリシー)の下で、"Advanced Security"をクリックしてください。 サイドバー内の"Advanced Security" ポリシー

  5. Under "GitHub Advanced Security", click the Security features tab.

  6. "Secret scanning custom patterns(シークレットスキャンニングのカスタムパターン)"の下で、New pattern(新規パターン)をクリックしてください。

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. Provide a sample test string to make sure your configuration is matching the patterns you expect.

    カスタムのsecret scanningパターン形式の作成

  8. 新しいカスタムパターンをテストする準備ができたら、アラートを作成することなくリポジトリ内のマッチを特定するために、Save and dry run(保存してdry run)をクリックしてください。

  9. Search for and select up to 10 repositories where you want to perform the dry run. dry runのために選択したリポジトリを表示しているスクリーンショット

  10. カスタムパターンをテストする準備ができたら、Dry runをクリックしてください。

  11. When the dry run finishes, you'll see a sample of results (up to 1000). Review the results and identify any false positive results. Screenshot showing results from dry run

  12. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  13. When you're satisfied with your new custom pattern, click Publish pattern.

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

カスタムパターンの編集

カスタムパターンに変更を保存すると、パターンの以前のバージョンを使って作成されたすべてのsecret scanningアラートはクローズされます。

  1. カスタムパターンが作成された場所にアクセスしてください。 カスタムパターンは、リポジトリ、Organization、Enterpriseアカウントで作成できます。
  2. "Secret scanning"の下で、編集したいカスタムパターンの右のをクリックしてください。
  3. 変更をレビューしてテストしたら、Save changes(変更を保存)をクリックしてください。

カスタムパターンの削除

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