Azure DevOps GitHub Advanced Security を構成する

GitHub Advanced Security for Azure DevOps では、GitHub Advanced Security の一連のセキュリティ機能がAzure Reposに追加され、次の機能が含まれています。

  • シークレット スキャン プッシュ保護: コード プッシュに資格情報などのシークレットを公開するコミットが含まれているかどうかを検査する
  • シークレット スキャン リポジトリのスキャン: リポジトリをスキャンし、誤ってコミットされた公開済みのシークレットを探す
  • 依存関係のスキャン – オープンソース依存関係の既知の脆弱性を検索する (直接および推移的)
  • コード スキャン – CodeQL 静的分析エンジンを使用して、SQL インジェクションや認証バイパスなどのコード レベルのアプリケーションの脆弱性を特定する

リポジトリに対して適切なレベルの保護を可能にする柔軟性を備えた Advanced Security の保護を企業に提供できます。 Azure DevOpsのGitHub Advanced Security は、Azure DevOpsおよび GitHub Code Security for Azure DevOps の GitHub Secret Protection として利用できます。

シークレット保護には、次の機能が含まれています。

  • プッシュ保護:シークレットリークが発生する前に防ぐ
  • 通知を含むシークレット スキャン アラートを使用して、問題になる前に既存の露出をキャッチする
  • セキュリティの概要。組織のリスクとセキュリティ保護のレベルに関する分析情報を提供します

コード セキュリティには、次の機能が含まれています。

  • オープン ソースの依存関係の脆弱性を見つけるための依存関係アラート
  • コード内の脆弱性を直接検出するための CodeQL スキャン
  • サード パーティ製ツールのセキュリティに関する調査結果
  • セキュリティの概要。組織のリスクとセキュリティ保護のレベルに関する分析情報を提供します

GitHub Advanced Security for Azure DevOps は、Azure DevOps サービスでのみ使用でき、特にコード Git リポジトリで使用できます。

GitHub advanced Security for Azure DevOps は、Azure Reposで動作します。 GitHub リポジトリで GitHub Advanced Security を使用する方法については、「GitHub Advanced Security」を参照してください。

前提条件

カテゴリ 必要条件
アクセス許可 - リポジトリのすべてのアラートの概要を表示するには、リポジトリに対する「コントリビューター」権限が必要です。
- Advanced Security でアラートを無視するには:Project administrator アクセス許可。
- Advanced Security でアクセス許可を管理するには: Project コレクション管理者 グループのメンバーであるか、Advanced Security: 設定を管理 のアクセス許可が 許可 に設定されている必要があります。

高度なセキュリティの権限の詳細については、「高度なセキュリティ権限の管理」を参照してください。

セルフホステッド エージェントの追加の前提条件

組織でセルフホステッド エージェントを使用している場合は、依存関係スキャン タスクが脆弱性アドバイザリ データをフェッチできるように、次の URL を許可リストに追加します。 詳細については、「 許可される IP アドレスとドメイン URL」を参照してください

ドメイン URL 説明
https://governance.dev.azure.com dev.azure.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
https://dev.azure.com dev.azure.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
https://advsec.dev.azure.com dev.azure.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
https://{organization_name}.governance.visualstudio.com {organization_name}.visualstudio.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
https://{organization_name}.visualstudio.com  {organization_name}.visualstudio.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
https://{organization_name}.advsec.visualstudio.com {organization_name}.visualstudio.com ドメインを使用して DevOps インスタンスにアクセスする組織向け
  • 互換性のあるバージョンの.NET ランタイムを実行します。 2026 年 4 月の時点で、現在のバージョンは引き続き 8.x .NET。 互換性のあるバージョンがエージェントに存在しない場合、依存関係スキャン ビルド タスクは .NET をダウンロードします。

  • CodeQL バンドルがエージェントのエージェント ツール キャッシュにインストールされていることを確認します。 YAML パイプラインのenableAutomaticCodeQLInstall: true パイプライン タスクで AdvancedSecurity-Codeql-Init@1 変数を使用するか、クラシック パイプラインの Enable automatic CodeQL detection and installation チェックボックスをオンにします。 または、手動でのインストール手順については、「Code scanning for GitHub Advanced Security for Azure DevOps」を参照してください。

GitHub Advanced Securityを有効にする

組織、プロジェクト、またはリポジトリのレベルで Advanced Security を有効にすることができます。 各スキャン ツールと結果にアクセスするには、まず Advanced Security を有効にする必要があります。 Advanced Security を有効にすると、このポリシーが有効になっているリポジトリへのシークレットを含む今後のプッシュはブロックされ、リポジトリ シークレットのスキャンはバックグラウンドで実行されます。

リポジトリレベルの導入プロセス

  1. Azure DevOps projectの Project 設定に移動します。
  2. Repos>Repositories を選択します。
  3. Advanced Security を有効にするリポジトリを選択します。
  4. [有効] を選択し、課金を開始して Advanced Security をアクティブにします。 Advanced Security が有効になっているリポジトリのリポジトリ ビューにシールド アイコンが表示されるようになりました。

GitHub Advanced Securityを有効にする際のスクリーンショット。

プロジェクトレベルのオンボーディング

  1. Azure DevOps projectの Project 設定に移動します。
  2. Repos を選択します。
  3. [Settings](設定) タブを選択します。
  4. [すべて有効にする] を選択すると、プロジェクトのアクティブなコミッターの数の見積もりが表示されます。 このアクションでは、既存のリポジトリに対してのみ製品が有効になります。
  5. [課金の開始] を選択して、プロジェクト内のすべての既存のリポジトリに対して Advanced Security をアクティブにします。
  6. 必要に応じて、[ 新しいリポジトリに対して Advanced Security を自動的に有効にする ] を選択して、今後新しく作成されたリポジトリの作成時に Advanced Security を有効にします。 この設定は [すべてのアクションを有効にする] とは別のものであり、個別に選択する必要があります。

Advanced Security 向けのプロジェクト レベルの有効化のスクリーンショット。

組織全体のオリエンテーション

  1. Azure DevOps組織の Organization 設定に移動します。
  2. [リポジトリ] を選択します。
  3. [すべて有効にする] を選択すると、組織のアクティブなコミッターの数の見積もりが表示されます。 このアクションでは、既存のリポジトリに対してのみ製品が有効になります。
  4. [課金の開始] を選択して、組織の各プロジェクトで、すべての既存のリポジトリに対して Advanced Security をアクティブにします。
  5. 必要に応じて、[ 新しいプロジェクトに対して Advanced Security を自動的に有効にする ] を選択して、今後新しく作成されたプロジェクトの作成時に Advanced Security を有効にします。 この設定は [すべてのアクションを有効にする] とは別のものであり、個別に選択する必要があります。

Advanced Security 向けの組織レベルの有効化のスクリーンショット。

Secret Protection または Code Security は、組織、プロジェクト、またはリポジトリ レベルで有効にすることができます。

リポジトリレベルの導入プロセス

  1. Azure DevOps projectの Project 設定に移動します。
  2. Repos>Repositories を選択します。
  3. Advanced Security を有効にするリポジトリを選択します。
  4. シークレット保護またはコード セキュリティを切り替えます。
  5. [ 請求の開始] を選択します。 いずれかの製品が有効になっているリポジトリのリポジトリ ビューにシールド アイコンが表示されるようになりました。
  6. 必要に応じて 、依存関係スキャンの既定のセットアップを有効にするには、[ オプション] を選択し、[依存関係スキャンの既定のセットアップ] チェック ボックスをオンにします。

GitHub Advanced Securityを有効にする際のスクリーンショット。

プロジェクトレベルのオンボーディング

  1. Azure DevOps projectの Project 設定に移動します。
  2. Repos を選択します。
  3. [Settings](設定) タブを選択します。
  4. [ すべて有効にする] を 選択すると、プロジェクトの製品あたりのアクティブなコミッターの数の見積もりが表示されます。 このアクションでは、選択した製品が既存のリポジトリに対してのみ有効になります。
  5. Secret Protection または Code Security の目的の製品と、関連するすべてのサブ機能を切り替えます。
  6. [ 課金の開始 ] を選択して、プロジェクト内のすべての既存のリポジトリに対して Secret Protection や Code Security をアクティブ化します。
  7. 必要に応じて、 新しいリポジトリに対して自動的に Advanced Security を有効に して、今後新しく作成されたリポジトリの作成時に Secret Protection または Code Security が有効になるように切り替えます。 この設定は [すべてのアクションを有効にする] とは別のものであり、個別に選択する必要があります。

Advanced Security 向けのプロジェクト レベルの有効化のスクリーンショット。

組織全体のオリエンテーション

  1. Azure DevOps組織の Organization 設定に移動します。
  2. [リポジトリ] を選択します。
  3. [ すべて有効にする] を 選択し、組織の製品ごとのアクティブなコミッターの数の見積もりが表示されます。 このアクションでは、選択した製品が既存のリポジトリに対してのみ有効になります。
  4. Secret Protection または Code Security の目的の製品と、関連するすべてのサブ機能を切り替えます。
  5. [課金の開始] を選択して、組織の各プロジェクトで、すべての既存のリポジトリに対して Advanced Security をアクティブにします。
  6. 必要に応じて、[ 新しいプロジェクトに対して Advanced Security を自動的に有効にする ] を切り替えて、今後新しく作成されたプロジェクトで 作成時にシークレット保護 または コード セキュリティ が有効になるようにします。 この設定は [すべてのアクションを有効にする] とは別のものであり、個別に選択する必要があります。

Advanced Security 向けの組織レベルの有効化のスクリーンショット。

シークレット スキャンを設定する

Advanced Security を有効にすると、シークレット スキャンのプッシュ保護とリポジトリ スキャンが自動的に有効になります。 リポジトリ設定ページからシークレット プッシュ保護を有効または無効にすることができます。

プッシュ保護を有効にするスクリーンショット。

選択したリポジトリに対して Advanced Security を有効にすると、シークレット スキャン リポジトリのスキャンが自動的に開始されます。

シークレットスキャンプッシュ保護とリポジトリスキャンは、シークレット保護を有効にすると自動的に有効になります。 リポジトリ設定ページからシークレット プッシュ保護を有効または無効にすることができます。

プッシュ保護を有効にするスクリーンショット。

シークレット スキャン リポジトリのスキャンは、選択したリポジトリに対して Secret Protection を有効にすると自動的に開始されます。

依存関係スキャンを設定する

依存関係スキャン機能にアクセスするには、リポジトリに対して Code Security 製品が有効になっている必要があります。

依存関係スキャンは、パイプライン ベースのスキャン ツールです。 結果はリポジトリごとに集計されます。 既定のブランチをスキャンする場合は、リポジトリ設定ページの [脆弱性のある依存関係をスキャンする] 設定を利用できます。 この機能は、既定のブランチを対象とするパイプライン、または既定のブランチを対象とするプル要求ビルドに、依存関係スキャン タスクを自動的に含めます。

より高度なセットアップを行う場合、またはすべてのブランチをスキャンする場合は、スキャンするすべてのパイプラインに依存関係スキャン タスクを追加することをお勧めします。 詳細については、「Dependency scanning for GitHub Advanced Security for Azure DevOpsを参照してください。

コード スキャンを設定する

コード スキャン機能にアクセスするには、リポジトリに対して Code Security 製品が有効になっている必要があります。

コード スキャンは、リポジトリごとに結果が集計されるパイプライン ベースのスキャン ツールです。 CodeQL タスクをAzure Pipelinesに直接追加することで、コード スキャンを構成できます。

コード スキャンを設定するには、次のタスクを順番にパイプラインに追加します。

  1. AdvancedSecurity-Codeql-Init@1 — CodeQL を初期化します
  2. カスタム ビルド ステップ (コンパイル済み言語の場合)
  3. AdvancedSecurity-Codeql-Analyze@1 — CodeQL 分析を実行します

CodeQL の初期化タスクで分析する言語を指定します。 サポートされている言語には、 csharp, cpp, go, java, javascript, python, ruby, swiftが含まれます。

ヒント

メインの運用パイプラインの複製された別のパイプラインにコード スキャン タスクを追加するか、新しいパイプラインを作成することをお勧めします。 構成オプションの詳細については、「 コード スキャンの設定」を参照してください。

プル要求注釈を設定する

依存関係スキャンとコード スキャンの両方について、注釈はプル要求に対して自動的に構成されます。この場合、ビルド検証ポリシーは、パイプラインに含まれる依存関係スキャンタスクやコード スキャン タスクと共に適用されます。 ビルド検証ポリシーの構成の詳細については、「ビルド検証」を参照してください。

また、プル要求注釈では、ソース (pull request) ブランチをスキャンする前に、既定のブランチとターゲット ブランチに対する Advanced Security スキャンも必要です。 プル要求ブランチのアラートの解決の詳細については、「プル要求の依存関係スキャン アラートの管理」および「プル要求のコード スキャン アラートの管理」を参照してください。

Advanced Security を無効にするには、次回リポジトリの Advanced Security を再度有効にするときに、アラートとアラートの状態が [セキュリティの詳細設定] タブに保持されます。