Skip to main content

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

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

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

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

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

          Copilot シークレット スキャン's ジェネリックシークレットの検出 は、ソース コード内の非構造化シークレット (パスワード) を識別し、アラートを生成する、AI を利用した secret scanning の拡張です。

メモ

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

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

パスワードが検出されると、(リポジトリ、組織、または企業の Security and qualityタブの下にある) **** アラートの "汎用" リストにアラートが表示されるため、保守担当者とセキュリティ マネージャーはアラートを確認し、必要に応じて資格情報を削除するか、修正プログラムを実装できます。

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

入力処理

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

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

出力と表示

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

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

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

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

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

          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)