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

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

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

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

ノート: secret scanningのカスタムパターンは現在ベータであり、変更されることがあります。

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

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

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

ノート: ベータの間、secret scanningのカスタムパターンの使用には多少の制限があります。

  • dry-runの機能はありません。
  • 作成後にカスタムパターンを編集することはできません。 パターンを変更するには、削除してから再作成しなければなりません。
  • カスタムパターンの作成、編集、削除のためのAPIはありません。 しかし、カスタムパターンに対する結果はSecret scanningアラートAPIで返されます。

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

  • Secret scanningのカスタムパターンは、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 Enterprise Serverインスタンスで、リポジトリのメインページにアクセスしてください。

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

  3. 左のサイドバーで、Security & analysis(セキュリティと分析)をクリックしてください。 リポジトリ設定の"セキュリティと分析"タブ

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

  5. Under "Secret scanning", under "Custom patterns", click New custom 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. When you're satisfied with your new custom pattern, click Create custom 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のセキュリティと分析設定の管理」を参照してください。

ノート: dry-runの機能は無いので、カスタムパターンをOrganization全体で定義する前に、1つのリポジトリ内でテストすることをおすすめします。 そうすれば、過剰な偽陽性のsecret scanningアラートを発生させることを防げます。

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

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

  3. 左のサイドバーで、Security & analysis(セキュリティと分析)をクリックしてください。 Organization設定の"セキュリティと分析"タブ

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

  5. Under "Secret scanning", under "Custom patterns", click New custom 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. When you're satisfied with your new custom pattern, click Create custom pattern.

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

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

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

ノート: dry-runの機能は無いので、カスタムパターンをEnterprise全体で定義する前に、1つのリポジトリ内でテストすることをおすすめします。 そうすれば、過剰な偽陽性のsecret scanningアラートを発生させることを防げます。

  1. GitHub Enterprise Serverの右上で、プロフィール写真をクリックし、続いてEnterprise settings(Enterpriseの設定)をクリックしてください。 GitHub Enterprise Serverのプロフィール写真のドロップダウンメニュー内の"Enterprise settings"

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

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

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

  5. "Secret scanning custom patterns(シークレットスキャンニングのカスタムパターン)"の下で、New custom 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. When you're satisfied with your new custom pattern, click Create custom pattern.

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

カスタムパターンの削除

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

  2. 削除したいカスタムパターンの右でRemove(削除)をクリックしてください。

  3. 確認したらRemove custom pattern(カスタムパターンの削除)をクリックしてください。