Skip to main content

AI を使用したジェネリックシークレットの責任ある検出

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

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

Secret scanning は、次のリポジトリに使うことができます:

  • パブリック リポジトリ (無料)
  • GitHub Advanced Security が有効な の GitHub Enterprise Cloud のユーザー所有リポジトリ

注: secret scanning の一般的なシークレット検出はベータ版です。 機能とドキュメントテーションは変更される場合があります。 この機能は、GitHub Enterprise Cloud で GitHub Advanced Security を使用するエンタープライズ アカウントで使用できます。

secret scanning のジェネリックシークレット検出について

ジェネリックシークレットの検出は、AI の搭載により、ソース コード内の非構造化シークレット (パスワード) を識別してアラートを生成する、secret scanning の拡張です。

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

パスワードが検出されると、secret scanning アラートの一覧 (リポジトリ、組織、またはエンタープライズの [セキュリティ] タブの下) にアラートが表示されるため、メンテナンス担当者とセキュリティ マネージャーはアラートを確認し、必要に応じて資格情報を削除するか、修正プログラムを実装できます。

この機能を使用するために、Enterprise のオーナーは、リポジトリが AI 検出を有効または無効にできるかどうかを制御するポリシーを Enterprise レベルで設定します。 既定では、このポリシーは "許可" に設定されています。 その後、リポジトリと Organization に対してこの機能を有効にする必要があります。

入力処理

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

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

出力と表示

LLM はパスワードに似ている文字列をスキャンし、結果として見つかった文字列が、入力に実際に存在するかどうかを確認します。

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

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

ジェネリックシークレットを検出するパフォーマンスを向上させるには、誤検知アラートを適切に終了し、問題が発生したときにフィードバックが提供されるようにすることをお勧めします。

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

AI を利用してジェネリックシークレットを検出する場合、パートナー パターンにおいて、既存の secret scanning 機能よりも多くの誤検知が発生する可能性があるため、これらのアラートの精度を確認することが重要です。 アラートが誤検知だと確認した場合は、必ずアラートをクローズし、GitHub UI で理由を 「誤検知」 としてマークしてください。 GitHub 開発チームは、モデルの改善にこの情報を使用します。

フィードバックを提供する

現在、汎用シークレット検出は beta にあります。 この機能に関する問題や制限が発生した場合は、リポジトリ、組織、またはエンタープライズのアラートの一覧で検出された、各シークレットの下に一覧で表示されている、[フィードバックの提供] ボタンを使用して、フィードバックを提供していただくことをお勧めします。 これにより、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。

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

secret scanning でジェネリックシークレットを検出する場合は、次の制限事項を考慮する必要があります。

制限付きのスコープ

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

誤検知のアラートである可能性

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

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

AI を利用したジェネリックシークレットの検出では、リポジトリにチェックインされた資格情報のインスタンスが、見落とされる可能性があります。 時間の経過とともに、LLM は改善されます。 コードのセキュリティを確保するのは、最終的にはご自分の責任であり続けます。

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

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

参考資料