この記事では、[環境設定] ページを使用して Azure DevOps、GitHub、または GitLab 環境を接続する場合に、Microsoft Defender for Cloudに表示される推奨事項を示します。
環境に表示される推奨事項は、保護するリソースとカスタマイズした構成に基づいています。 リソースに適用ポータルで推奨事項を確認できます。
これらの推奨事項に応じて実行できるアクションについては、Defender for Cloudの
DevOps のセキュリティの利点と機能の詳細を確認します。
DevOps の推奨事項は、 セキュリティ スコアには影響しません。 最初に解決する推奨事項を決定するには、各推奨事項の重大度と、セキュリティ スコアに対する潜在的な影響を確認します。
Azure DevOpsの推奨事項
Azure DevOps リポジトリでは、Azure DevOpsのセキュリティ強化 (GHAzDO) を有効にGitHubする必要があります
説明: Defender for Cloudの DevOps セキュリティは、中央のコンソールを使用して、セキュリティ チームがAzure DevOps全体でコードからクラウドにアプリケーションとリソースを保護する機能を強化します。 GitHub Advanced Security for Azure DevOps を含む、Azure DevOps (GHAzDO) リポジトリのGitHub Advanced Security を有効にすると、Azure DevOps リポジトリのシークレット、依存関係、コードの脆弱性に関する調査結果が表示されますMicrosoft Defender for Cloud。
重要度: 高
リポジトリAzure DevOpsシークレット スキャンの結果が解決されている必要がある
説明: シークレットがコード リポジトリに見つかりました。 セキュリティ侵害を防ぐために直ちに修復します。 リポジトリで見つかったシークレットが漏洩したり、敵対者によって検出されたりして、アプリケーションやサービスが侵害される可能性があります。 Microsoft Security DevOps 資格情報スキャン ツールは、実行するように構成されているビルドのみをスキャンします。 そのため、リポジトリ内のシークレットの完全な状態が結果に反映されていない場合があります。
重要度: 高
Azure DevOps リポジトリでコード スキャンの結果が解決されている必要がある
説明: コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。
重要度: 中
Azure DevOps リポジトリに依存関係の脆弱性スキャンの結果が解決されている必要がある
説明: コード リポジトリに見つかった依存関係の脆弱性。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。
重要度: 中
Azure DevOps リポジトリには、コード スキャンの結果が解決された時点でインフラストラクチャが必要です
説明: コードとしてのインフラストラクチャのセキュリティ構成に関する問題がリポジトリに見つかりました。 テンプレート ファイルで問題が検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。
重要度: 中
Azure DevOps パイプラインには、フォークのビルドで使用できるシークレットを含めることはできません
説明: パブリック リポジトリでは、組織外のユーザーがフォークを作成し、フォークされたリポジトリでビルドを実行する可能性があります。 このような場合、この設定が有効になっている場合、外部のユーザーは、内部であることを意図したパイプライン シークレットをビルドするためのアクセス権を取得できます。
重要度: 高
Azure DevOpsサービス接続では、すべてのパイプラインへのアクセスを許可しないでください
説明: サービス接続は、ジョブでタスクを実行するために、Azure Pipelinesから外部およびリモートのサービスへの接続を作成するために使用されます。 パイプラインのアクセス許可は、サービス接続を使用する権限を持つパイプラインを制御します。 パイプライン操作のセキュリティをサポートするために、すべての YAML パイプラインへのアクセス権をサービス接続に付与しないでください。 これは、1 つのパイプラインで使用されるコンポーネントの脆弱性を攻撃者が重要なリソースにアクセスして他のパイプラインを攻撃するために使用できるため、最小限の特権の原則を維持するのに役立ちます。
重要度: 高
セキュリティで保護されたファイルAzure DevOps、すべてのパイプラインへのアクセスを許可しない
説明: ファイルをセキュリティで保護すると、開発者はパイプライン間で共有できるファイルを格納できます。 これらのファイルは通常、署名証明書や SSH キーなどのシークレットを格納するために使用されます。 セキュリティで保護されたファイルにすべての YAML パイプラインへのアクセスが許可されている場合、承認されていないユーザーは、YAML パイプラインを構築し、セキュリティで保護されたファイルにアクセスすることで、セキュリティで保護されたファイルから情報を盗むことができます。
重要度: 高
シークレット変数を持つ変数グループAzure DevOps、すべてのパイプラインへのアクセス権を付与することはできません
説明: 変数グループには、YAML パイプラインに渡すか、複数のパイプラインで使用できるようにする値とシークレットが格納されます。 同じプロジェクト内の複数のパイプラインで変数グループを共有および使用できます。 シークレットを含む変数グループがすべての YAML パイプラインからアクセス可能としてマークされている場合、攻撃者は新しいパイプラインを作成することで、シークレット変数に関連する資産を悪用する可能性があります。
重要度: 高
クラシック Azure サービス接続Azure DevOpsサブスクリプションへのアクセスには使用しないでください
説明: Azure サブスクリプションに接続するには、従来のサービス接続ではなく、Azure Resource Manager (ARM) タイプのサービス接続Azure使用します。 ARM モデルでは、アクセス制御の強化、監査の強化、ARM ベースのデプロイ/ガバナンス、シークレットのマネージド ID とキー コンテナーへのアクセス、Entra アクセス許可ベースの認証、合理化された管理のためのタグとリソース グループのサポートなど、複数のセキュリティ強化が提供されます。
重要度: 中
(プレビュー)Azure DevOps リポジトリでは、API セキュリティ テストの結果が解決されている必要があります
説明: コード リポジトリに見つかった API セキュリティの脆弱性。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。
重要度: 中
(プレビュー)Azure DevOps リポジトリでは、コード プッシュに対して 2 つ以上のレビュー担当者の承認が必要です
説明: 意図しない変更や悪意のある変更が直接コミットされないようにするには、Azure DevOps リポジトリに既定のブランチの保護ポリシーを実装することが重要です。 コードが既定のブランチとマージされる前に、少なくとも 2 人のコード レビュー担当者に pull request の承認を要求することをお勧めします。 少なくとも 2 人のレビュー担当者からの承認を要求することで、承認されていない変更のリスクを軽減でき、システムが不安定になり、セキュリティの脆弱性が発生する可能性があります。
この推奨事項は、Azure DevOpsをDefender for Cloudに接続している場合は、基本的なセキュリティ体制Defender for Cloud提供されます。
重要度: 高
(プレビュー)Azure DevOps リポジトリでは、要求者が独自のプル要求を承認できないようにする必要があります
説明: 意図しない変更や悪意のある変更が直接コミットされないようにするには、Azure DevOps リポジトリに既定のブランチの保護ポリシーを実装することが重要です。 pull request 作成者が自分の申請を承認することを禁止し、すべての変更が作成者以外のユーザーによる客観的なレビューを確実に受けられるようにすることをお勧めします。 これにより、承認されていない変更のリスクを軽減でき、システムの不安定さやセキュリティの脆弱性につながる可能性があります。
この推奨事項は、Azure DevOpsをDefender for Cloudに接続している場合は、基本的なセキュリティ体制Defender for Cloud提供されます。
重要度: 高
(プレビュー)Azure DevOps プロジェクトでクラシック パイプラインの作成を無効にする必要がある
説明: クラシック ビルドおよびリリース パイプラインの作成を無効にすると、同じリソース (同じサービス接続など) を共有する YAML パイプラインとクラシック パイプラインに起因するセキュリティ上の問題が回避されます。 潜在的な攻撃者は、クラシック パイプラインを利用して、最新の YAML パイプラインを中心に設定された一般的な防御メカニズムを回避するプロセスを作成できます。
重要度: 高
GitHub推奨事項
GitHub組織は、すべてのリポジトリからアクション シークレットにアクセスできるようにするべきではありません
説明: GitHub組織レベルで格納されている GitHub アクション ワークフローで使用されるシークレットの場合は、アクセス ポリシーを使用して、組織のシークレットを使用できるリポジトリを制御できます。 組織レベルのシークレットを使用すると、複数のリポジトリ間でシークレットを共有できます。 これにより、重複するシークレットを作成する必要が減ります。 ただし、リポジトリからシークレットにアクセスできるようになったら、リポジトリに対する書き込みアクセス権を持つすべてのユーザーは、ワークフロー内の任意のブランチからシークレットにアクセスできます。 攻撃対象領域を減らすには、選択したリポジトリからのみシークレットにアクセスできるようにします。
この推奨事項は、Azure DevOpsをDefender for Cloudに接続している場合は、基本的なセキュリティ体制Defender for Cloud提供されます。
重要度: 高
GitHub リポジトリでシークレット スキャンが有効になっている必要がある
Description: GitHubは、リポジトリに誤ってコミットされたシークレットの不正使用を防ぐために、既知の種類のシークレットについてリポジトリをスキャンします。 シークレット スキャンでは、GitHub リポジトリに存在するすべてのブランチで、すべてのシークレットについて Git 履歴全体がスキャンされます。 シークレットの例として、サービス プロバイダーが認証のために発行する場合があるトークンと秘密キーがあります。 シークレットがリポジトリにチェックインされると、リポジトリへの読み取りアクセス権を持つすべてのユーザーは、そのシークレットを使用して、それらの権限で外部サービスにアクセスできます。 シークレットは、プロジェクトのリポジトリの外部にある専用の安全な場所に保存する必要があります。
重要度: 高
GitHub リポジトリでコード スキャンが有効になっている必要がある
Description: GitHubはコード スキャンを使用してコードを分析し、コード内のセキュリティの脆弱性とエラーを見つけます。 コード スキャンを使用すると、コード内の既存の問題を検出、トリアージして、その修正に優先度を付けることができます。 また、コード スキャンによって、開発者が新しい問題を混入するのを防ぐことができます。 特定の日時にスキャンを実行するようにスケジュールすることや、リポジトリで特定のイベント (プッシュなど) が発生した場合にスキャンをトリガーすることができます。 コード スキャンでコード内の潜在的な脆弱性またはエラーが検出された場合、GitHubはリポジトリにアラートを表示します。 脆弱性とは、プロジェクトの秘密性、一貫性、または可用性を損なうために悪用される可能性のある、プロジェクトのコードの問題です。
重要度: 中
リポジトリGitHub Dependabot スキャンが有効になっている必要がある
Description: GitHubは、リポジトリに影響するコード依存関係の脆弱性を検出すると、Dependabot アラートを送信します。 脆弱性とは、プロジェクトあるいはそのコードを利用する他のプロジェクトにおいて、秘密性、一貫性、可用性を損なうために悪用されうる、プロジェクトコードの問題です。 脆弱性の種類、重要度、攻撃の方法は様々です。 セキュリティの脆弱性があるパッケージにコードが依存している場合、この脆弱性のある依存関係が原因で、さまざまな問題が発生する可能性があります。
重要度: 中
リポジトリGitHubシークレット スキャンの結果が解決されている必要がある
説明: コード リポジトリで見つかったシークレット。 セキュリティ侵害を防ぐために、ただちにこれを修復する必要があります。 リポジトリで検出されたシークレットは、漏洩する可能性や、敵対者が見つける可能性があり、それによってアプリケーションやサービスが侵害される可能性があります。
重要度: 高
GitHub リポジトリでコード スキャンの結果が解決されている必要がある
説明: コード リポジトリに脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。
重要度: 中
GitHubリポジトリに依存関係の脆弱性スキャンの結果が解決されている必要がある
説明: GitHubリポジトリには、依存関係の脆弱性スキャンの結果が解決されている必要があります。
重要度: 中
GitHub リポジトリには、コード スキャンの結果が解決された時点でインフラストラクチャが必要です
説明: コード としてのインフラストラクチャのセキュリティ構成の問題がリポジトリで見つかりました。 テンプレート ファイルで問題が検出されました。 関連するクラウド リソースのセキュリティ態勢を改善するために、これらの問題を修復することを強くお勧めします。
重要度: 中
GitHub リポジトリでは、既定のブランチの保護ポリシーが有効になっている必要があります
説明: 意図しない変更や悪意のある変更がリポジトリに直接コミットされないように、リポジトリの既定のブランチをブランチ保護ポリシーで保護する必要があります。
重要度: 高
GitHubリポジトリでは、既定のブランチへのプッシュを強制的に無効にする必要があります
説明: 既定のブランチは通常、デプロイやその他の特権アクティビティに使用されるため、それに対する変更は慎重に行う必要があります。 強制プッシュを有効にすると、意図しない変更や悪意のある変更が既定のブランチに発生する可能性があります。
重要度: 中
GitHub組織でシークレット スキャン プッシュ保護を有効にする必要がある
説明: プッシュ保護では、シークレットを含むコミットがブロックされるため、シークレットが誤って公開されるのを防ぎます。 資格情報の公開のリスクを回避するには、すべてのシークレット スキャンが有効なリポジトリに対してプッシュ保護を自動的に有効にする必要があります。
重要度: 高
GitHub リポジトリではセルフホステッド ランナーを使用しないでください
説明: GitHub上の Self-Hosted ランナーは、エフェメラルクリーン仮想マシンでの操作の保証を欠いており、ワークフロー内の信頼されていないコードによって永続的に侵害される可能性があります。 そのため、Self-Hosted ランナーはアクション ワークフローに使用しないでください。
重要度: 高
GitHub組織には、ワークフローのアクセス許可が読み取り専用に設定されているアクションが必要です
説明: 既定では、悪意のあるユーザーが過剰なアクセス許可を持つワークフローを悪用してリソースにアクセスしたり改ざんしたりするのを防ぐために、アクション ワークフローに読み取り専用のアクセス許可を付与する必要があります。
重要度: 高
GitHub組織には、管理者アクセス許可を持つ複数のユーザーが必要です
説明: 少なくとも 2 人の管理者がいると、管理者アクセス権を失うリスクが軽減されます。 これは、重大なアカウント シナリオの場合に役立ちます。
重要度: 高
GitHub組織は、基本アクセス許可をアクセス許可なしまたは読み取りアクセス許可に設定する必要があります
説明: 基本アクセス許可を none に設定するか、組織が最小限の特権の原則に従い、不要なアクセスを防ぐために読み取る必要があります。
重要度: 高
(プレビュー)GitHub リポジトリでは、API セキュリティ テストの結果が解決されている必要があります
説明: コード リポジトリに API セキュリティの脆弱性が見つかりました。 リポジトリのセキュリティ態勢を改善するために、これらの脆弱性を修復することを強くお勧めします。
重要度: 中
(プレビュー)GitHub組織は、すべてのリポジトリからアクション シークレットにアクセスできるようにするべきではありません
説明: GitHub組織レベルで格納されている GitHub アクション ワークフローで使用されるシークレットの場合は、アクセス ポリシーを使用して、組織のシークレットを使用できるリポジトリを制御できます。 組織レベルのシークレットを使用すると、複数のリポジトリ間でシークレットを共有できるため、重複するシークレットを作成する必要が減ります。 ただし、リポジトリからシークレットにアクセスできる場合は、リポジトリに対する書き込みアクセス権を持つすべてのユーザーが、ワークフロー内の任意のブランチからシークレットにアクセスできます。 攻撃対象領域を減らすには、選択したリポジトリからのみシークレットにアクセスできるようにします。
重要度: 高
(プレビュー)組織GitHubパブリック コードに一致するCopilot の提案をブロックする必要がある
説明: GitHub Copilotのフィルターを有効にして、GitHubのパブリック コードに一致するコード提案をブロックすると、セキュリティと法的コンプライアンスが強化されます。 これにより、公開コードまたはオープンソース コードが意図せず組み込まれるのを防ぎ、法的問題のリスクを軽減し、ライセンス条項への準拠を確保します。 さらに、パブリック コードから組織のプロジェクトに潜在的な脆弱性が導入されるのを回避し、それによってコードの品質とセキュリティを高めるのに役立ちます。 フィルターが有効になっている場合、GitHub Copilotは、周囲のコードで約 150 文字のコード候補を、GitHubのパブリック コードと照合します。 一致または近い一致がある場合、候補は表示されません。
重要度: 高
(プレビュー)組織GitHub外部コラボレーターに多要素認証を適用する必要がある
説明: GitHub組織の外部コラボレーターに多要素認証を適用することは、コラボレーターが組織のリポジトリとリソースにアクセスするためにパスワード以外に追加の形式の ID を使用することを要求するセキュリティ対策です。 これにより、パスワードが侵害された場合でも、承認されていないアクセスから保護することでセキュリティが強化され、業界標準への準拠が保証されます。 これには、要件についてコラボレーターに通知し、移行のサポートを提供し、最終的にデータ侵害のリスクを軽減する必要があります。
重要度: 高
(プレビュー)GitHub リポジトリでは、コード プッシュに対して 2 人のレビュー担当者による承認が最低限必要です
説明: 意図しない変更や悪意のある変更が直接コミットされないようにするには、GitHub リポジトリに既定のブランチの保護ポリシーを実装することが重要です。 コードが既定のブランチとマージされる前に、少なくとも 2 人のコード レビュー担当者に pull request の承認を要求することをお勧めします。 少なくとも 2 人のレビュー担当者からの承認を要求することで、承認されていない変更のリスクを軽減でき、システムが不安定になり、セキュリティの脆弱性が発生する可能性があります。
重要度: 高
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 リポジトリでコード スキャンが有効になっている必要がある
Description: GitHubはコード スキャンを使用してコードを分析し、コード内のセキュリティの脆弱性とエラーを見つけます。 コード スキャンを使用すると、コード内の既存の問題を検出、トリアージして、その修正に優先度を付けることができます。 また、コード スキャンによって、開発者が新しい問題を混入するのを防ぐことができます。 特定の日時にスキャンを実行するようにスケジュールすることや、リポジトリで特定のイベント (プッシュなど) が発生した場合にスキャンをトリガーすることができます。 コード スキャンでコード内の潜在的な脆弱性またはエラーが検出された場合、GitHubはリポジトリにアラートを表示します。 脆弱性とは、プロジェクトの秘密性、一貫性、または可用性を損なうために悪用される可能性のある、プロジェクトのコードの問題です。 (関連ポリシーはありません)
重要度: 中
GitHub リポジトリでシークレット スキャンが有効になっている必要がある
Description: GitHubは、リポジトリに誤ってコミットされたシークレットの不正使用を防ぐために、既知の種類のシークレットについてリポジトリをスキャンします。 シークレット スキャンでは、GitHub リポジトリに存在するすべてのブランチで、すべてのシークレットについて Git 履歴全体がスキャンされます。 シークレットの例として、サービス プロバイダーが認証のために発行する場合があるトークンと秘密キーがあります。 シークレットがリポジトリにチェックインされると、リポジトリへの読み取りアクセス権を持つすべてのユーザーは、そのシークレットを使用して、それらの権限で外部サービスにアクセスできます。 シークレットは、プロジェクトのリポジトリの外部にある専用の安全な場所に保存する必要があります。 (関連ポリシーはありません)
重要度: 高
リポジトリGitHub Dependabot スキャンが有効になっている必要がある
Description: GitHubは、リポジトリに影響するコード依存関係の脆弱性を検出すると、Dependabot アラートを送信します。 脆弱性とは、プロジェクトあるいはそのコードを利用する他のプロジェクトにおいて、秘密性、一貫性、可用性を損なうために悪用されうる、プロジェクトコードの問題です。 脆弱性の種類、重要度、攻撃の方法は様々です。 セキュリティの脆弱性があるパッケージにコードが依存している場合、この脆弱性のある依存関係が原因で、さまざまな問題が発生する可能性があります。 (関連ポリシーはありません)
重要度: 中