DevOps リソースのセキュリティに関する推奨事項

この記事では、[環境設定] ページを使用して Azure DevOps、GitHubまたは GitLab 環境を接続する場合に、Microsoft Defender for Cloud に表示される可能性がある推奨事項の一覧を示します。 環境に表示される推奨事項は、保護するリソースとカスタマイズした構成に基づいています。

これらの推奨事項に応じて実行できるアクションについては、「Defender for Cloud での推奨事項の修復」を参照してください

Defender セキュリティの利点と機能の詳細を確認してください。

DevOps の推奨事項は、セキュリティ スコアには影響しません。 最初に解決する推奨事項を決定するには、各推奨事項の重大度と、セキュリティ スコアに対する潜在的な影響を確認します。

DevOps の推奨事項

Azure DevOps の推奨事項

Azure DevOps リポジトリで Azure DevOps の GitHub Advanced Security (GHAzDO) を有効にする必要がある

説明: Defender for Cloud の DevOps セキュリティは、中央コンソールを使用して、Azure DevOps 全体でアプリケーションとリソースをコードからクラウドに保護する機能をセキュリティ チームに提供します。 Azure DevOps の GitHub Advanced Security を含む Azure DevOps の GitHub Advanced Security (GHAzDO) リポジトリの有効化により、Azure DevOps リポジトリ内のシークレット、依存関係、コード脆弱性に関する検出結果が Microsoft Defender for Cloud に表示されます。

重大度: 高

Azure DevOps リポジトリでシークレット スキャンの検出結果を解決する必要がある

説明: シークレットがコード リポジトリに見つかりました。 セキュリティ侵害を防ぐために、ただちに修復してください。 リポジトリで検出されたシークレットは、漏洩する可能性や、敵対者が見つける可能性があり、それによってアプリケーションやサービスが侵害される可能性があります。 注: Microsoft Security DevOps の資格情報スキャン ツールでは、それが実行されるように構成されているビルドのみがスキャンされます。 そのため、リポジトリ内のシークレットの完全な状態が結果に反映されていない場合があります。

重大度: 高

Azure DevOps リポジトリでコード スキャンの検出結果を解決する必要がある

説明: コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

Azure DevOps リポジトリで依存関係の脆弱性に関するスキャンの検出結果を解決する必要がある

説明: コード リポジトリに依存関係の脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

Azure DevOps リポジトリでコードとしてのインフラストラクチャ スキャンの検出結果を解決する必要がある

説明: コードとしてのインフラストラクチャのセキュリティ構成に関する問題がリポジトリで見つかりました。 次に示す問題が、テンプレート ファイルで検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。

重大度: 中

フォークのビルドで使用可能なシークレットを Azure DevOps ビルド パイプラインに含めないこと

説明: パブリック リポジトリでは、組織外のユーザーがフォークを作成し、フォークされたリポジトリでビルドを実行する可能性があります。 そのような場合、この設定が有効になっていると、内部での使用が想定されているビルド パイプライン シークレットに外部のユーザーがアクセスできます。

重大度: 高

Azure DevOps サービス接続ですべてのパイプラインへのアクセスを許可しないこと

説明: サービス接続は、Azure Pipelines から、ジョブ内のタスクを実行するための外部およびリモート サービスへの接続を作成するために使用されます。 パイプラインのアクセス許可は、サービス接続を使用する権限をどのパイプラインに付与するかを制御します。 パイプライン操作のセキュリティをサポートするために、すべての YAML パイプラインへのアクセス権をサービス接続に付与しないでください。 あるパイプラインによって使用されるコンポーネントの脆弱性が攻撃者に利用され、クリティカルなリソースにアクセスできる他のパイプラインへの攻撃を許してしまう可能性があるため、これは最小特権の原則を維持するために役立ちます。

重大度: 高

Azure DevOps セキュア ファイルですべてのパイプラインへのアクセスを許可しないこと

説明: ファイルをセキュリティで保護すると、開発者はパイプライン間で共有できるファイルを格納できます。 これらのファイルは通常、署名証明書や SSH キーなどのシークレットを保存するために使用されます。 セキュア ファイルにすべての YAML パイプラインへのアクセスが許可されている場合、YAML パイプラインを構築してセキュア ファイルにアクセスすることによって、権限のないユーザーがセキュア ファイルから情報を盗むことができます。

重大度: 高

シークレット変数を含む Azure DevOps 変数グループですべてのパイプラインへのアクセスを許可しないこと

説明: 変数グループには、YAML パイプラインに渡すか、複数のパイプラインで使用できるようにする値とシークレットが格納されます。 同じプロジェクト内の複数のパイプラインで変数グループを共有および使用できます。 シークレットを含む変数グループがすべての YAML パイプラインからアクセス可能としてマークされている場合、攻撃者は新しいパイプラインを作成することによって、シークレット変数が関係するアセットを悪用することができます。

重大度: 高

Azure DevOps クラシック Azure サービス接続を使用してサブスクリプションにアクセスしないこと

説明: Azure サブスクリプションに接続するには、Azure クラシック サービス接続ではなく、Azure Resource Manager (ARM) タイプのサービス接続を使用します。 ARM モデルでは、さまざまな面でセキュリティが強化されます。たとえば、アクセス制御の強化、監査の改善、ARM ベースのデプロイ/ガバナンス、マネージド ID へのアクセス、シークレットのキー コンテナーへのアクセス、Entra のアクセス許可ベースの認証、合理化された管理のためのタグとリソース グループのサポートなどです。

重大度: 中

(プレビュー)Azure DevOps リポジトリでは、API セキュリティ テストの結果が解決されている必要があります

説明: コード リポジトリに API セキュリティの脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

GitHub の推奨設定

GitHub リポジトリでシークレット スキャンを有効にする必要がある

説明: GitHub は、リポジトリに誤ってコミットされたシークレットの不正使用を防ぐために、既知の種類のシークレットについてリポジトリをスキャンします。 シークレット スキャンでは、GitHub リポジトリ内に存在するすべてのブランチで Git 履歴全体がスキャンされ、シークレットが探されます。 シークレットの例として、サービス プロバイダーが認証のために発行する場合があるトークンと秘密キーがあります。 シークレットがリポジトリにチェックインされると、リポジトリへの読み取りアクセス権を持つすべてのユーザーは、そのシークレットを使用して、それらの権限で外部サービスにアクセスできます。 シークレットは、プロジェクトのリポジトリの外部にある専用の安全な場所に保存する必要があります。

重大度: 高

GitHub リポジトリでコード スキャンを有効にする必要がある

説明: GitHub では、コード スキャンを使用してコードを分析し、コード内のセキュリティの脆弱性とエラーを見つけます。 コード スキャンを使用すると、コード内の既存の問題を検出、トリアージして、その修正に優先度を付けることができます。 また、コード スキャンによって、開発者が新しい問題を混入するのを防ぐことができます。 特定の日時にスキャンを実行するようにスケジュールすることや、リポジトリで特定のイベント (プッシュなど) が発生した場合にスキャンをトリガーすることができます。 コード スキャンによって、コード内で潜在的な脆弱性やエラーが検出された場合、GitHub では、リポジトリにアラートが表示されます。 脆弱性とは、プロジェクトの秘密性、一貫性、または可用性を損なうために悪用される可能性のある、プロジェクトのコードの問題です。

重大度: 中

GitHub リポジトリで Dependabot スキャンを有効にする必要がある

説明: GitHub は、リポジトリに影響するコード依存関係の脆弱性を検出すると、Dependabot アラートを送信します。 脆弱性とは、プロジェクトあるいはそのコードを利用する他のプロジェクトにおいて、秘密性、一貫性、可用性を損なうために悪用されうる、プロジェクトコードの問題です。 脆弱性の種類、重要度、攻撃の方法は様々です。 セキュリティの脆弱性があるパッケージにコードが依存している場合、この脆弱性のある依存関係が原因で、さまざまな問題が発生する可能性があります。

重大度: 中

GitHub リポジトリでシークレット スキャンの検出結果を解決する必要がある

説明: シークレットがコード リポジトリに見つかりました。 セキュリティ侵害を防ぐために、ただちにこれを修復する必要があります。 リポジトリで検出されたシークレットは、漏洩する可能性や、敵対者が見つける可能性があり、それによってアプリケーションやサービスが侵害される可能性があります。

重大度: 高

GitHub リポジトリでコード スキャンの検出結果を解決する必要がある

説明: コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

GitHub リポジトリで依存関係の脆弱性に関するスキャンの検出結果を解決する必要がある

説明: GitHub リポジトリには、依存関係の脆弱性スキャンの結果が解決されている必要があります。

重大度: 中

GitHub リポジトリでコードとしてのインフラストラクチャ スキャンの検出結果を解決する必要がある

説明: コードとしてのインフラストラクチャのセキュリティ構成に関する問題がリポジトリで見つかりました。 次に示す問題が、テンプレート ファイルで検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。

重大度: 中

GitHub リポジトリで既定のブランチの保護ポリシーを有効にする必要がある

説明: 意図しない変更や悪意のある変更がリポジトリに直接コミットされないように、リポジトリの既定のブランチをブランチ保護ポリシーで保護する必要があります。

重大度: 高

GitHub リポジトリで既定のブランチへの強制的なプッシュを無効にする必要がある

説明: 既定のブランチは通常、デプロイやその他の特権アクティビティに使用されるため、それに対する変更は慎重に行う必要があります。 強制的なプッシュを有効にすると、意図しない変更や悪意のある変更が既定のブランチに行われる可能性があります。

重大度: 中

GitHub 組織でシークレット スキャン プッシュ保護を有効にする必要がある

説明: プッシュ保護では、シークレットを含むコミットがブロックされるため、シークレットが誤って公開されるのを防ぎます。 資格情報の露出のリスクを回避するには、シークレット スキャンが有効なすべてのリポジトリでプッシュ保護を自動的に有効にする必要があります。

重大度: 高

GitHub リポジトリでセルフホステッド ランナーを使用しないこと

説明: GitHub 上のセルフホステッド ランナーでは、エフェメラル クリーン仮想マシンでの操作が保証されておらず、ワークフロー内の信頼されていないコードによって永続的に侵害される可能性があります。 そのため、セルフホステッド ランナーはアクション ワークフローに利用しないでください。

重大度: 高

GitHub 組織でアクション ワークフローのアクセス許可を読み取り専用に設定する必要がある

説明: 既定では、悪意のあるユーザーが過剰なアクセス許可を持つワークフローを悪用してリソースにアクセスしたり改ざんしたりするのを防ぐために、アクション ワークフローに読み取り専用のアクセス許可を付与する必要があります。

重大度: 高

GitHub 組織には管理者のアクセス許可を持つ複数のユーザーが必要

説明: 少なくとも 2 人の管理者がいると、管理者アクセス権を失うリスクが軽減されます。 これは、非常用アカウントのシナリオの場合に役立ちます。

重大度: 高

GitHub 組織では基本アクセス許可をアクセス許可なしまたは読み取りに設定する必要がある

説明: 基本アクセス許可を none に設定するか、組織が最小限の特権の原則に従い、不要なアクセスを防ぐために読み取る必要があります。

重大度: 高

(プレビュー) GitHub リポジトリで API セキュリティ テストの結果を解決する必要がある

説明: コード リポジトリに API セキュリティの脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

GitLab の推奨事項

GitLab プロジェクトでシークレット スキャンの検出結果を解決する必要がある

説明: シークレットがコード リポジトリに見つかりました。 セキュリティ侵害を防ぐために、ただちにこれを修復する必要があります。 リポジトリで検出されたシークレットは、漏洩する可能性や、敵対者が見つける可能性があり、それによってアプリケーションやサービスが侵害される可能性があります。

重大度: 高

GitLab プロジェクトでコード スキャンの検出結果を解決する必要がある

説明: コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。

重大度: 中

GitLab プロジェクトで依存関係の脆弱性に関するスキャンの検出結果を解決する必要がある

説明: GitHub リポジトリには、依存関係の脆弱性スキャンの結果が解決されている必要があります。

重大度: 中

GitLab プロジェクトでコードとしてのインフラストラクチャ スキャンの検出結果を解決する必要がある

説明: コードとしてのインフラストラクチャのセキュリティ構成に関する問題がリポジトリで見つかりました。 次に示す問題が、テンプレート ファイルで検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。

重大度: 中

非推奨の DevOps セキュリティに関する推奨事項

コード リポジトリでコード スキャンの検出結果を解決する必要がある

説明: Defender for Cloud の DevOps セキュリティで、コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。 (関連ポリシーはありません)

重大度: 中

コード リポジトリでシークレット スキャンの検出結果を解決する必要がある

説明: Defender for Cloud の DevOps セキュリティにより、コード リポジトリにシークレットが見つかりました。 セキュリティ侵害を防ぐために、ただちにこれを修復する必要があります。 リポジトリで検出されたシークレットは、漏洩する可能性や、敵対者が見つける可能性があり、それによってアプリケーションやサービスが侵害される可能性があります。 Azure DevOps では、Microsoft Security DevOps CredScan ツールによって、このツールが実行されるように構成されているビルドのみがスキャンされます。 そのため、リポジトリ内のシークレットの完全な状態が結果に反映されていない場合があります。 (関連ポリシーはありません)

重大度: 高

コード リポジトリで Dependabot スキャンの検出結果を解決する必要がある

説明: Defender for Cloud の DevOps セキュリティで、コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。 (関連ポリシーはありません)

重大度: 中

コード リポジトリでコードとしてのインフラストラクチャ スキャンの検出結果を解決する必要がある

説明: Defender for Cloud の DevOps セキュリティで、リポジトリのコード セキュリティ構成の問題としてインフラストラクチャが検出されました。 次に示す問題が、テンプレート ファイルで検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。 (関連ポリシーはありません)

重大度: 中

GitHub リポジトリでコード スキャンを有効にする必要がある

説明: GitHub では、コード スキャンを使用してコードを分析し、コード内のセキュリティの脆弱性とエラーを見つけます。 コード スキャンを使用すると、コード内の既存の問題を検出、トリアージして、その修正に優先度を付けることができます。 また、コード スキャンによって、開発者が新しい問題を混入するのを防ぐことができます。 特定の日時にスキャンを実行するようにスケジュールすることや、リポジトリで特定のイベント (プッシュなど) が発生した場合にスキャンをトリガーすることができます。 コード スキャンによって、コード内で潜在的な脆弱性やエラーが検出された場合、GitHub では、リポジトリにアラートが表示されます。 脆弱性とは、プロジェクトの秘密性、一貫性、または可用性を損なうために悪用される可能性のある、プロジェクトのコードの問題です。 (関連ポリシーはありません)

重大度: 中

GitHub リポジトリでシークレット スキャンを有効にする必要がある

説明: GitHub は、リポジトリに誤ってコミットされたシークレットの不正使用を防ぐために、既知の種類のシークレットについてリポジトリをスキャンします。 シークレット スキャンでは、GitHub リポジトリ内に存在するすべてのブランチで Git 履歴全体がスキャンされ、シークレットが探されます。 シークレットの例として、サービス プロバイダーが認証のために発行する場合があるトークンと秘密キーがあります。 シークレットがリポジトリにチェックインされると、リポジトリへの読み取りアクセス権を持つすべてのユーザーは、そのシークレットを使用して、それらの権限で外部サービスにアクセスできます。 シークレットは、プロジェクトのリポジトリの外部にある専用の安全な場所に保存する必要があります。 (関連ポリシーはありません)

重大度: 高

GitHub リポジトリで Dependabot スキャンを有効にする必要がある

説明: GitHub は、リポジトリに影響するコード依存関係の脆弱性を検出すると、Dependabot アラートを送信します。 脆弱性とは、プロジェクトあるいはそのコードを利用する他のプロジェクトにおいて、秘密性、一貫性、可用性を損なうために悪用されうる、プロジェクトコードの問題です。 脆弱性の種類、重要度、攻撃の方法は様々です。 セキュリティの脆弱性があるパッケージにコードが依存している場合、この脆弱性のある依存関係が原因で、さまざまな問題が発生する可能性があります。 (関連ポリシーはありません)

重大度: 中