Skip to main content

Copilot シークレット スキャンを使用した汎用シークレットの責任ある検出

Copilot シークレット スキャン が責任を持って AI を使用し、パスワードなどの非構造化シークレットをスキャンしてアラートを作成する方法について説明します。

この機能を使用できるユーザーについて

Copilot シークレット スキャン は、次のリポジトリの種類で使用できます。

Copilot シークレット スキャン を使用した ジェネリックシークレットの検出 について

Copilot シークレット スキャン の ジェネリックシークレットの検出 は、非構造化シークレット (パスワード) をソース コードで特定して、アラートを生成する secret scanning の AI 駆動拡張機能です。

メモ

Copilot シークレット スキャン の ジェネリックシークレットの検出 を使用するには、GitHub Copilot のサブスクリプションは必要ありません。 Copilot シークレット スキャン 機能は、GitHub Secret Protection のライセンスを持つ organization と Enterprise が所有するリポジトリで使用できます。

GitHub Secret Protection ユーザーは、ソース コード内で見つかったパートナーまたはカスタム パターンの シークレット スキャンニング アラート を既に受信できますが、非構造化シークレットは簡単に検出できません。 Copilot シークレット スキャン は、大規模言語モデル (LLM) を使用してこの種類のシークレットを識別します。

パスワードが現出されると、アラートは、secret scanning アラートの [汎用] リスト (リポジトリ、組織、またはエンタープライズの [セキュリティ] タブ) で表示されます。これにちょり、メンテナンス担当者とセキュリティ マネージャーは、アラートを確認し、必要に応じて、資格証明を削除するか、修正を行います。

GitHub Enterprise Cloud を使うユーザーの場合、Enterprise 所有者は、まず organization 内のリポジトリに対して ジェネリックシークレットの検出 を有効または無効にできるかどうかを制御するポリシーを Enterprise レベルで設定する必要があります。 既定では、このポリシーは "許可" に設定されています。 その後、リポジトリと組織に対して、この機能を有効にする必要があります。

入力処理

入力は、ユーザーがリポジトリにチェックインしたテキスト (通常はコード) に制限されます。 システムは、このテキストをメタ プロンプトと共に LLM に提供し、入力のスコープにおいて LLM がパスワードを検索するよう要求します。 ユーザーが直接 LLM と対話することはありません。

システムは、LLM を使用してパスワードをスキャンします。 既存の secret scanning 機能によって既に収集されているデータ以外に、システムが追加でデータを収集することはありません。

出力と表示

LLM はパスワードと類似する文字列をスキャンし、特定された文字列が、入力に実際に存在するかどうかを確認します。

こうして検出された文字列は、secret scanning アラート ページにアラートとして表示されますが、通常の シークレット スキャンニング アラート とは別の追加リストに表示されます。 別のリストにしておくことで、検出結果の妥当性がより精密に確認され、トリアージされることを意図しています。 各アラートは、AI を使用して検出されたことを示しています。 汎用シークレットのアラートを表示する方法については、「AUTOTITLE」を参照してください。

ジェネリックシークレットの検出 のパフォーマンスを向上させる

ジェネリックシークレットの検出 のパフォーマンスを向上させるには、偽陽性アラートを適切に閉じることをお勧めします。

アラートの精度を確認して必要に応じてクローズする

Copilot シークレット スキャン の ジェネリックシークレットの検出 は、パートナー パターンの既存の secret scanning 機能よりも多くの偽陽性を生成する可能性があるため、これらのアラートの精度を確認することが重要です。 アラートが偽陽性だと確認した場合は、必ずアラートを閉じ、GitHub UI で理由を "偽陽性" としてマークします。 GitHub 開発チームは、偽陽性のボリュームと検出の場所に関する情報を使用してモデルを改善します。 GitHub は、シークレット リテラル自体にはアクセスできません。

ジェネリックシークレットの検出 の制限事項

Copilot シークレット スキャン の ジェネリックシークレットの検出 を使用する場合は、次の制限事項を考慮する必要があります。

制限付きのスコープ

ジェネリックシークレットの検出 は現在は、Git コンテンツのパスワードのインスタンスを検索するだけです。 この機能では、他の種類の汎用シークレットは検索されず、GitHub Issues などの非 Git コンテンツ内のシークレットも検索されません。

偽陽性アラートである可能性

ジェネリックシークレットの検出 は、(パートナー パターンを検出し、偽陽性率が非常に低い) 既存の secret scanning 機能と比べると、より多くの偽陽性アラートを生成する場合があります。 この過剰なノイズを軽減するには、アラートを、パートナー パターン アラートの個別リストでグループ化し、セキュリティ マネージャーとメンテナンス担当者が各アラートをトリアージして精度を確認する必要があります。

不完全なレポートである可能性

ジェネリックシークレットの検出 は、リポジトリにチェックインされた資格情報のインスタンスを見逃す可能性があります。 LLM は時間が経つにつれて改善されます。 コードのセキュリティ確保に関する最終的な責任はユーザーにあります。

設計上の制限事項

ジェネリックシークレットの検出 には、次の設計上の制限事項があります:

  • Copilot シークレット スキャン は、明らかに偽のパスワードやテスト パスワード、または複雑性の低いパスワードであるシークレットを検出しません。
  • Copilot シークレット スキャン は、プッシュあたり最大 100 のパスワードしか検出しません。
  • 1 つのファイル内で検出された 5 つ以上のシークレットが偽陽性としてマークされている場合、Copilot シークレット スキャン は、そのファイルの新しいアラートの生成を停止します。
  • Copilot シークレット スキャン は、生成されたファイルまたはベンダー化されたファイル内のシークレットを検出しません。
  • Copilot シークレット スキャン は、暗号化されたファイル内のシークレットを検出しません。
  • Copilot シークレット スキャン は、ファイルの種類 (SVG、PNG、JPEG、CSV、TXT、SQL または ITEM) のシークレットを検出しません。
  • Copilot シークレット スキャン は、テスト コード内のシークレットを検出しません。 両方の条件を満たしている場合、Copilot シークレット スキャン は、検出をスキップします。
    • ファイル パスに、"test"、"mock"、または "spec" が含まれている、かつ
    • ファイル拡張子が .cs.go.java.js.kt.php.py.rb.scala.swift または .ts である。

ジェネリックシークレットの検出 の評価

ジェネリックシークレットの検出 は、責任ある AI レッド チーミングの対象であり、GitHub は、機能の有効性と安全性を経時的に監視し続けます。

次のステップ

  •         [AUTOTITLE](/code-security/secret-scanning/copilot-secret-scanning/enabling-ai-powered-generic-secret-detection)
    
  •         [AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning)
    

詳細については、次を参照してください。

  •         [AUTOTITLE](/code-security/secret-scanning/introduction/about-secret-scanning)