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

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

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

  • 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. "Secret scanning"の下の"Custom patterns(カスタムパターン)"の下で、 New pattern(新規パターン)をクリックしてください。

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認してください。

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

  7. 新しいカスタムパターンに満足したら、Create 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. "Secret scanning"の下の"Custom patterns(カスタムパターン)"の下で、 New pattern(新規パターン)をクリックしてください。

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認してください。

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

  7. 新しいカスタムパターンに満足したら、Create 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. "GitHub Advanced Security"の下で、 Security features(セキュリティの機能)タブをクリックしてください。

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

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

    1. 少なくともパターンの名前と、シークレットパターンのフォーマットとして正規表現を提供しなければなりません。
    2. [More options ]をクリックして、シークレットのフォーマットのその他の周辺コンテンツあるいは追加のマッチ要件を提供できます。
    3. サンプルのテスト文字列を指定し、設定内容が期待するパターンにマッチすることを確認してください。

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

  7. 新しいカスタムパターンに満足したら、Create 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アカウントで作成できます。

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

  3. 確認したら、そのカスタムパターンに関連するオープンなアラートを処理方法を選択してください。

  4. Yes, delete this pattern(はい、このパターンを削除してください)をクリックしてください。

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