secret scanningについて
Secret scanning は、API キー、パスワード、トークン、その他のシークレットなどの機密情報が誤ってリポジトリに含まれることを検出して防ぐのに役立つセキュリティ機能です。 有効にすると、secret scanning はリポジトリ内のコミットをスキャンし、検出時に既知の種類のシークレットとアラート リポジトリ管理者を検出します。
Secret scanning は、リポジトリがアーカイブされている場合でも、GitHub リポジトリに存在するすべてのブランチの Git 履歴全体をスキャンします。また、サポート対象の新しいシークレットの種類が追加されると、secret scanning が有効な GitHub Advanced Security リポジトリ内の既存のコンテンツ内にある新しいシークレットの種類を探すために、GitHub により、定期的に完全な Git 履歴スキャンが実行されます。
さらに、secret scanning は します
- 問題 の説明とコメント
- オープンおよびクローズの 履歴 に関する問題 のタイトル、説明、およびコメント。 履歴パートナー パターンが検出されると、関連するパートナーに通知が送信されます。
- pull request のタイトル、説明とコメント
- GitHub Discussions のタイトル、説明、コメント
- Wikis
この追加のスキャンは、パブリック リポジトリでは無料です。
サポートされているシークレットがリークされると、GitHub Enterprise Cloud によって secret scanning アラートが生成されます。 アラートは、GitHub Enterprise Cloud のリポジトリの [セキュリティ] タブで報告されます。ここでは、アラートを表示、評価、解決できます。 詳しくは、「シークレット スキャンからのアラートの管理」をご覧ください。
サービス プロバイダーは GitHub と提携して、スキャンのためのシークレット フォーマットを指定することができます。 すべてのパブリック リポジトリとパブリック npm パッケージで、パートナー パターンに対して secret scanning を自動的に実行します。 パートナー プログラムについては、「Secret scanningパートナープログラム」を参照してください。
シークレット スキャン パートナーによって提供されたパターンに一致する文字列は、関連するパートナーに直接報告され、GitHub には表示されません。 パートナー パターンの詳細については、「シークレット スキャン アラートについて」を参照してください。
secret scanning がサポートするシークレットとサービス プロバイダーの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。
REST API を使って、リポジトリ全体でsecret scanningからの結果を監視できます。 API エンドポイントの詳細については、「シークレット スキャン用の REST API エンドポイント」を参照してください。
セキュリティの概要を使用して、secret scanningが有効になっているリポジトリと検出されたアラートの organization レベルのビューを表示することもできます。 詳しくは、「セキュリティの概要について」をご覧ください。
GitHub ツールを使用して、secret scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」を参照してください。
secret scanning のしくみ
secret scanning のしくみを説明する一般的なワークフローを次に示します:
-
検出: Secret scanning は、API キー、パスワード、トークン、その他のシークレットなどの機密データについて、リポジトリのコンテンツを自動的にスキャンします。 既知の種類のシークレットに一致するパターンとヒューリスティックを検索します。
-
アラート: 潜在的なシークレットが検出されると、GitHub によってアラートが生成され、関連するリポジトリ管理者とユーザーに通知されます。 この通知には、リポジトリ内の場所など、検出されたシークレットに関する詳細が含まれます。 アラートの種類とアラートの詳細については、「シークレット スキャン アラートについて」を参照してください。
-
確認: シークレットが検出されたら、提供されたアラートの詳細を確認する必要があります。
-
修復: 露出を修復するには、適切なアクションを実行する必要があります。 これには、影響を受ける資格情報をローテーションして、使用できなくなるようにする作業を必ず含めるようにします。 また、リポジトリの履歴からシークレットを削除する処理も含める場合があります (
git-filter-repo
などのツールを使います。詳細については、「リポジトリからの機微なデータの削除」を参照してください)。ただし、これには多大な時間と労力がかかる可能性が高く、通常、資格情報を失効させた場合は不要です。 -
監視: リポジトリを定期的に監査して監視し、他のシークレットが公開されないようにすることをお勧めします。
-
パートナーとの統合: GitHub は、さまざまなサービス プロバイダーと連携してシークレットを検証します。 パートナー シークレットが検出されると、GitHub は、認証情報の取り消しなどの適切なアクションを実行できるようにプロバイダーに通知します。 パートナーシップ プログラムの詳細については、「Secret scanningパートナープログラム」を参照してください。
secret scanning の利点について
-
強化されたセキュリティ: Secret scanning は、API キー、パスワード、トークン、その他のシークレットなどの機密情報についてリポジトリをスキャンします。 これらを早期に検出することで、悪意のあるアクターによって悪用される前に、潜在的なセキュリティ リスクを軽減できます。
-
自動検出: この機能は、コミット、issue、pull request など、コードベースを自動的にスキャンし、手動による介入を必要とせずに、継続的な保護を確保します。 この自動化は、リポジトリの進化に伴うセキュリティの維持に役立ちます。
-
リアルタイム アラート: シークレットが検出されると、secret scanning はリポジトリ管理者と共同作成者にリアルタイムアラートを提供します。 この即時のフィードバックにより、迅速な修復アクションが可能になります。
-
サービス プロバイダーとの統合: GitHub パートナーは、検出されたシークレットを検証するためにさまざまなサービス プロバイダーと連携します。 シークレットが識別されると、GitHub は、公開されている認証情報の取り消しなどの適切なアクションを実行するように対応するサービス プロバイダーに通知します。 詳しくは、「Secret scanningパートナープログラム」をご覧ください。
-
カスタム パターンのサポート: Organization はカスタム パターンを定義して、既定のパターンではカバーされない可能性がある所有者のシークレットまたは固有の種類のシークレットを検出できます。 この柔軟性により、お使いの環境に固有のセキュリティ対策をカスタマイズすることが可能になります。
-
プロバイダー以外のパターンを検出する機能: 検出を拡張して、リポジトリまたは organization の接続文字列、認証ヘッダー、秘密キーなどのプロバイダー以外のパターンを含めることができます。
secret scanning のカスタマイズ
secret scanning が有効になったら、さらにカスタマイズできます:
プロバイダー以外のパターンの検出
秘密キーや汎用 API キーなど、サービス プロバイダーに固有ではないシークレットをスキャンして検出します。 詳しくは、「プロバイダー以外のパターンのシークレットスキャンを有効にする」をご覧ください。
有効性チェックの実行
有効性チェックは、どのシークレットが“active
“または“inactive
“なのかについて教え、アラートの優先順位付けに役立ちます。 詳細については、「リポジトリの有効性チェックの有効化」と「シークレット スキャンからのアラートの評価」を参照してください。
カスタム パターンの定義
secret scanning がスキャンして検出できる、組織で使用されるシークレットの独自のパターンを定義します。 詳しくは、「シークレット スキャンのカスタム パターンの定義」をご覧ください。
Copilot シークレット スキャン
- ジェネリックシークレットの検出: secret scanning の AI 機能を活用して、リポジトリ内のパスワードなどの非構造化シークレットを検出します。 詳細については、「Copilotシークレットスキャンを使用したジェネリックシークレットの責任ある検出」を参照してください。
- レギュラー エクスプレション ジェネレーター: secret scanning の AI 機能を活用して、すべてのカスタム パターンをキャプチャする正規表現を生成します。 詳細については、「Copilot シークレット スキャンによる正規表現の責任ある生成」を参照してください。