コード リポジトリのシークレットを保護する
Defender for Cloud では、GitHub と Azure DevOps からコード リポジトリで公開されているシークレットについて組織への通知が行われます。 シークレット検出は、コード リポジトリ内の任意のファイルに格納されているトークン、パスワード、キー、資格情報などの公開されたシークレットをすばやく検出し、優先順位付けを行い、修復するのに役立ちます。
シークレットが検出された場合、Defender for Cloud は、そのシークレットによってアクセスが可能なターゲット リソースを識別することで、侵入の拡大のリスクを最小限に抑えるために実行可能な修復手順を、セキュリティ チームが優先順位を付けて実行するのに役立ちます。
コード リポジトリのシークレットのスキャンのしくみ
コード リポジトリのシークレットのスキャンは、GitHub と Azure DevOps の GitHub Advanced Security によって行われます。 GitHub Advanced Security では、リポジトリに存在するすべてのブランチの Git 履歴全体のスキャンを行ってシークレットを探します。これはリポジトリがアーカイブされている場合でも同様です。
詳細については、GitHub と Azure DevOps の GitHub Advanced Security のドキュメントを参照してください。
サポートされている機能
コード リポジトリシークレットのスキャンは、必要な GitHub Advanced Security ライセンスがあれば使用できます。 Defender for Cloud による検出の結果の表示は、クラウド セキュリティ態勢管理の一部として提供されます。 ランタイム リソースへの侵入の拡大の可能性を検出するには、Defender のクラウド セキュリティ態勢管理が必要です。
現時点では、公開されているシークレットへの攻撃パスは、Azure DevOps リポジトリでのみ使用できます。
コード リポジトリのスキャンによってリスクが最小化されるしくみ
シークレット スキャンは、次の軽減策でリスクを軽減するのに役立ちます。
- 横方向への移動の防止: コード リポジトリ内で公開されているシークレットが検出されると、脅威アクターがこれらのシークレットを利用して重要なリソースを侵害できるため、不正アクセスの重大なリスクとなります。
- 不要なシークレットの除去: 特定のシークレットについて、テナント内のリソースにアクセスできないことを確認することで、開発者と安全に連携してこれらのシークレットを削除できます。 さらに、シークレットの有効期限がいつ切れるかもわかります。
- シークレットのセキュリティの強化: Azure Key Vault などのシークレット管理システムを使用するよう推奨されます。
シークレットの問題を特定して修復する方法
公開されているシークレットを特定して修復するには、いくつかの方法があります。 ただし、下記の方法の一部については、すべてのシークレットでサポートされるものではありません。
- シークレットの推奨事項を確認する: アセットでシークレットが見つかると、Defender for Cloud の [レコメンデーション] ページで、関連するコード リポジトリついて推奨事項がトリガーされます。
- クラウド セキュリティ エクスプローラーでシークレットを確認する: クラウド セキュリティ エクスプローラーを使用して、シークレットを含むコード リポジトリのクラウド セキュリティ グラフに対してクエリを実行します。
- 攻撃パスの確認: 攻撃パス分析は、クラウド セキュリティ グラフをスキャンして、攻撃が環境を侵害し、影響の大きいアセットに到達するために使用する可能性のある悪用可能なパスを示します。
セキュリティに関する推奨事項
次のシークレットのセキュリティに関するレコメンデーションを使用できます。
- Azure DevOps リポジトリ: Azure DevOps リポジトリでシークレット スキャンの検出結果を解決する必要がある
- GitHub リポジトリ: GitHub リポジトリでシークレット スキャンの検出結果を解決する必要がある
攻撃パスのシナリオ
攻撃パス分析は、グラフ ベースのアルゴリズムであり、クラウド セキュリティ グラフをスキャンすることで、攻撃者が影響の大きいアセットに到達するために使用する可能性のある悪用可能なパスを可視化します。 考えられる攻撃パスには次のようなものがあります。
- Azure DevOps リポジトリに、公開されたシークレットが含まれており、これには SQL データベースへの侵入の拡大が伴っています。
- パブリックにアクセス可能な Azure DevOps リポジトリに、公開されたシークレットが含まれており、これにはあるストレージ アカウントへの侵入の拡大が伴っています。
クラウド セキュリティ エクスプローラーのクエリ
公開されているシークレットと侵入の拡大の可能性を調査するには、次のクエリを使用できます。
- Code リポジトリにシークレットが含まれている
- Azure DevOps リポジトリに、Object Storage または Managed Databases に対して認証できるシークレットが含まれている
シークレットの問題を効果的に軽減するには
シークレットに優先順位を付け、すぐに注意が必要なシークレットを特定できるようにすることが重要です。 このサポートとして、Defender for Cloud には次の機能があります。
- ファイル パス、行番号、列、コミット ハッシュ、ファイル URL、GitHub Advanced Security アラート URL、および、そのシークレットによってアクセスできるターゲット リソースが存在するかどうかの情報など、各シークレットのリッチ メタデータ。
- クラウド アセット コンテキストと組み合わせたシークレット メタデータ。 これにより、インターネットに公開されているアセットや、他の機密性の高い資産を危険にさらす可能性のあるシークレットを含むアセットから取り組みを開始することができます。 シークレット スキャンの結果は、リスクベースの推奨事項の優先順位付けに組み込まれます。