Microsoft Defender for Cloud のエージェントレス コード スキャンでは、Azure DevOps と GitHub のすべてのリポジトリに対して、迅速かつスケーラブルなセキュリティ カバレッジが提供されます。 エージェントレス コード スキャンでは、コードとコードとしてのインフラストラクチャ (IaC) が自動的にスキャンされ、ビルドまたはデプロイ パイプラインに変更を加えることなく、脆弱性や構成の誤りを特定します。 このアプローチにより、1 つの Azure DevOps または GitHub コネクタによるセットアップとメンテナンスが簡素化され、広範なカバレッジ、継続的な分析情報、実行可能なセキュリティ結果が提供されます。 これにより、セキュリティ チームと開発チームは、開発ワークフローを中断することなく、リスクをスムーズに修正することに集中できます。
実行するスキャナーをカスタマイズし、スキャンに含める、またはスキャンから除外する組織、プロジェクト、リポジトリを正確に定義できます。
前提条件
サポートされているユース ケース:
サポートされているリージョン: オーストラリア東部、カナダ中部、米国中部、東アジア、米国東部、北ヨーロッパ、スウェーデン中部、英国南部、西ヨーロッパ。
サポートされている環境: Azure DevOps コネクタと GitHub コネクタ。
ロールとアクセス許可:
コネクタの設定と構成のため:
- プロジェクト コレクション管理者: 初期セットアップを実行するために Azure DevOps で必要です。
- サブスクリプション共同作成者: コネクタを作成して構成するために Azure サブスクリプションで必要です。
セキュリティの結果を表示するため:
- セキュリティ管理者: セキュリティ設定、ポリシー、アラートを管理できますが、コネクタは変更できません。
- セキュリティ閲覧者: 推奨事項、アラート、ポリシーを表示できますが、変更することはできません。
主な利点
Microsoft Defender for Cloud でのエージェントレス コード スキャンの主な利点は次のとおりです。
- プロアクティブなリスク管理: 開発プロセスの早い段階でリスクを特定します。 これにより、セキュリティで保護されたコーディングプラクティスが可能になり、運用環境に到達する前に脆弱性が軽減されます。
- 簡単なオンボード: 最小限の構成で、パイプラインの変更なしですばやく設定できます。
- エンタープライズ規模の一元管理: 1 つのコネクタを使って、複数のリポジトリでコードを自動的にスキャンします。 これにより、大規模な環境に対して広範な範囲が提供されます。
- 速やかな修復のためのすばやい分析情報: オンボードの直後にアクションにつながる脆弱性分析情報を受け取ります。 これにより、迅速な修正が可能になり、露出時間が短縮されます。
- 開発者に優しくシームレス: 継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインとは独立して運用できます。変更や開発者の直接的な関与は必要ありません。 これにより、開発者の生産性やワークフローを中断することなく、継続的なセキュリティ監視が可能になります。
- 柔軟なカバレッジと制御: 実行するスキャナーとスキャン対象を選択します。 既定ですべてをカバーしたり、特定の組織、プロジェクト、またはリポジトリを含めたり除外したりするように設定をカスタマイズしたりできます。 これにより、セキュリティ カバレッジをリスク プロファイルと運用上のニーズと一致させることができます。複雑さが増す必要はありません。
リスク検出機能
エージェントレス コード スキャンでは、コードとコードとしてのインフラストラクチャ (IaC) テンプレートの両方に対して、対象となるセキュリティに関する推奨事項を提供することで、セキュリティが向上します。 これは、コネクタを通じて提供される基本的なクラウド セキュリティ体制管理のセキュリティに関する推奨事項に加えて行われます。 主な検出機能は次のとおりです。
- コードの脆弱性: 複数のプログラミング言語で一般的なコーディング エラー、安全でないコーディング手法、既知の脆弱性を見つけます。
- コードとしてのインフラストラクチャの構成ミス: 安全でないデプロイにつながる可能性がある IaC テンプレートでの誤ったセキュリティ構成を検出します。
コネクタを作成すると、リポジトリ、パイプライン、およびサービス接続に関する基本的なクラウド セキュリティ体制管理の推奨事項が提供され、セキュリティが強化されます。
スキャン ツール
エージェントレス コード スキャンでは、さまざまなオープンソース ツールを使って、コードおよびコードとしてのインフラストラクチャ (IaC) テンプレートの脆弱性と構成の誤りが検出されます。
ツール | サポートされている IaC と言語 | ライセンス |
---|---|---|
山賊 | Python(プログラミング言語) | Apache 2.0 |
Checkov | Terraform IaC テンプレート、Terraform プラン ファイル、AWS CloudFormation テンプレート、Kubernetes マニフェスト ファイル、Helm チャート ファイル、Dockerfile、Azure Resource Manager (ARM) IaC テンプレート、Azure Bicep IaC テンプレート、AWS SAM テンプレート (サーバーレス アプリケーション モデル)、Kustomize ファイル、サーバーレス フレームワーク テンプレート、OpenAPI 仕様ファイル | Apache 2.0 |
ESLint | JavaScript、TypeScript、JSX、TSX | MIT |
Template Analyzer | ARM IaC テンプレート、Bicep IaC テンプレート | MIT |
これらのツールは、さまざまな言語とコードとしてのインフラストラクチャ (IaC) フレームワークをサポートし、コードベース全体のセキュリティ分析を徹底します。
サポートされているシステムとファイルの種類
バージョン コントロール システム
Azure DevOps: Azure DevOps コネクタ経由で接続されたリポジトリの完全なサポート。
GitHub: GitHub コネクタ経由で接続されたリポジトリの完全なサポート。
プログラミング言語
- Python(プログラミング言語)
- JavaScript/TypeScript
コードとしてのインフラストラクチャ (IaC) のプラットフォームと構成
IaC プラットフォーム | サポートされているファイルの種類 | ノート |
---|---|---|
Terraform |
.tf 、.tfvars |
.tfvars 内の変数ファイルなど、HCL2 言語での Terraform IaC テンプレートをサポートします。 |
Terraform プラン | JSON ファイル | 分析とスキャンに使われる、計画された構成を表す JSON ファイルを含みます。 |
AWS CloudFormation | JSON、YAML ファイル | AWS リソースを定義するための AWS CloudFormation テンプレートをサポートします。 |
Kubernetes(クバネティス) | YAML、JSON ファイル | クラスターでの構成を定義するための Kubernetes マニフェスト ファイルをサポートします。 |
ヘルム | Helm チャート ディレクトリ構造、YAML ファイル | Helm の標準チャート構造に従います。Helm v3 チャート ファイルをサポートします。 |
Docker | Dockerfile という名前のファイル | コンテナー構成のための Dockerfile をサポートします。 |
Azure ARM テンプレート | JSON ファイル | JSON 形式の Azure Resource Manager (ARM) IaC テンプレートをサポートします。 |
Azure Bicep |
.bicep ファイル |
ARM 用のドメイン固有言語 (DSL) である Bicep IaC テンプレートをサポートします。 |
AWS SAM | YAML ファイル | サーバーレス リソース用の AWS サーバーレス アプリケーション モデル (SAM) テンプレートをサポートします。 |
Kustomize | YAML ファイル | Kubernetes カスタマイズ (Kustomize) 用の構成ファイルをサポートします。 |
サーバーレス フレームワーク | YAML ファイル | サーバーレス アーキテクチャの定義でサーバーレス フレームワーク用のテンプレートをサポートします。 |
OpenAPI | YAML、JSON ファイル | RESTful API を定義するための OpenAPI 仕様ファイルをサポートします。 |
Azure DevOps および GitHub 組織でエージェントレス コード スキャンを有効にする
Azure DevOps と GitHub の両方の組織を Defender for Cloud に接続して、エージェントレス コード スキャンを有効にすることができます。 Azure DevOps 組織の接続または GitHub 組織の接続に関するページの手順に従って作業を開始します。
スキャナーのカバレッジとスコープをカスタマイズする
GitHub と Azure DevOps の両方で、実行するスキャナーを制御し、エージェントレス スキャンに含めるリポジトリまたはエージェントレス スキャンから除外するリポジトリを正確に指定できます。
スキャナーを選択します。 ニーズに基づいて、各コードとコードとしてのインフラストラクチャ (IaC) スキャナーのオンとオフを切り替えます。
スキャンスコープを設定する: 既定ですべてのリポジトリをスキャンするか、特定の組織、プロジェクト、またはリポジトリを含めるか除外するようにカスタム スコープを定義するかを決定します。
- 除外モード: リスト以外のすべてをスキャンします。
- 包含モード: リストした内容のみをスキャンします。
カスタム スコープ オプション:
- GitHub の場合は、所有者またはリポジトリによってスコープを設定します。
- Azure DevOps の場合は、組織、プロジェクト、またはリポジトリごとにスコープを設定します。
新しいリポジトリの自動検出: 新しいリポジトリの自動検出は、コネクタのスコープに含まれる組織またはプロジェクトに常に制限されます。 除外モードを使用する場合は既定で有効になり、カスタム スコープ リストは設定されません。 新しく作成されたリポジトリは自動的にスキャンされます。
リストされているリポジトリのみがスキャンされるため、自動情報開示は包含モードでは使用できません。
これにより、スキャンをセキュリティニーズに合わせ、環境の拡大に合わせてカバレッジを最新の状態に保ち、不要なスキャンや不要な領域を回避できます。
エージェントレス コード スキャンのしくみ
エージェントレス コード スキャンは、CI/CD パイプラインとは独立して機能します。 Azure DevOps または GitHub コネクタを使用して、コードとコードとしてのインフラストラクチャ (IaC) 構成を自動的にスキャンします。 パイプラインを変更したり、拡張機能を追加したりする必要はありません。 このセットアップにより、複数のリポジトリを対象にした広範で継続的なセキュリティ分析が可能になります。 処理された結果は、Microsoft Defender for Cloud に直接表示されます。
スキャン プロセス
コネクタ内でエージェントレス コード スキャン機能を有効にすると、スキャン プロセスには次の手順が含まれます。
リポジトリの検出: システムは、コネクタの作成直後と 8 時間ごとに、Azure DevOps および GitHub コネクタを介してリンクされているすべてのリポジトリを自動的に識別します。
コードの取得: 分析のために各リポジトリの既定の (メイン) ブランチから最新のコードを安全に取得します。最初はコネクタのセットアップ後に 3 日から 4 日ごとに取得されます。
分析: システムは、Microsoft Defender for Cloud 内で管理および更新された一連の組み込みスキャン ツールを使用して、コードおよびコードとしてのインフラストラクチャ (IaC) テンプレートの脆弱性と誤った構成を見つけます。
検出結果の処理: Defender for Cloud のバックエンドを介してスキャンの検出結果を処理し、アクションにつながるセキュリティの推奨事項を作成します。
結果の配信: システムは、Defender for Cloud のセキュリティの推奨事項として検出結果を示し、セキュリティ チームが問題を確認して対処できるようにします。
スキャンの頻度と期間
-
スキャンの頻度:
- リポジトリ、パイプライン、およびサービス接続のセキュリティ体制は、コネクタを作成した後、8 時間ごとに評価されます。
- コネクタを作成した後、2 日から 4 日ごとに、コードとコードとしてのインフラストラクチャ (IaC) テンプレートで脆弱性がスキャンされます。
- スキャンの期間: 通常、スキャンはリポジトリのサイズと複雑さに応じて 15 から 60 分以内に完了します。
スキャン結果の表示と管理
スキャンが完了すると、ユーザーは Microsoft Defender for Cloud 内でセキュリティの検出結果にアクセスできます。
アクセスの結果
Microsoft Defender for Cloud の [セキュリティに関する推奨事項] タブに移動します。
次のような Azure DevOps リポジトリと GitHub リポジトリの両方の推奨事項を確認します。
リポジトリには、コード スキャンの結果が解決されている必要があります 。コード リポジトリで見つかった脆弱性を示します。
リポジトリには、コード スキャンの結果が解決されたインフラストラクチャが必要 です。IaC テンプレートのセキュリティ構成ミスにフラグを設定します。
両方のプラットフォームでサポートされている推奨事項の全範囲については、「 Azure DevOps と GitHub のセキュリティに関する推奨事項」を参照してください。
推奨事項には、マルチレビュー担当者の承認の要求、シークレット アクセスの制限、Azure DevOps と GitHub 環境の両方のベスト プラクティスの適用などの項目が含まれます。
影響を受けるファイル、重大度、修復手順の詳細を表示する推奨事項を選択します。
エージェントレス コード スキャンとパイプライン内スキャンの違い
Microsoft Security DevOps 拡張機能を使用したエージェントレス コード スキャンとパイプライン内スキャンでは、Azure DevOps と GitHub 内のセキュリティ スキャンの両方が提供されます。 彼らは異なるニーズに対応しますが、お互いを補完します。 次の表は、セキュリティと開発のニーズに最も適したオプションを選択するのに役立つ主な違いを示しています。
特徴 | エージェントレス コード スキャン | パイプライン内スキャン |
---|---|---|
適したユース ケース | 開発者に対する中断を最小限にして幅広いカバレッジを提供します | カスタマイズ可能なコントロールにより、詳細なパイプライン統合スキャンを提供します |
スキャンのスコープとカバレッジ | 2 ~ 4 日ごとにスケジュールされたコードとしてのインフラストラクチャ (IaC) とコード脆弱性スキャンに重点を置く | バイナリやコンテナー イメージを含む広範なカバレッジを提供し、パイプラインの実行のたびにトリガーされます |
セットアップと構成 | コネクタを作成した後、それ以上セットアップする必要はありません | CI/CD パイプラインごとに手動でインストールと構成を行う必要があります |
パイプラインの統合 | ワークフローの変更なしに、(CI/CD) パイプラインとは独立して実行します | CI/CD パイプライン内に統合され、パイプラインごとに構成する必要があります |
スキャナーのカスタマイズ | 実行するスキャナーを選択できます | 特定のスキャナー、カテゴリ、言語、秘密度レベル、Microsoft 以外のツールを使ってカスタマイズできます |
結果とフィードバック | Defender for Cloud 内の検出結果へのアクセスを提供します | CI/CD パイプライン内で準リアルタイムのフィードバックを提供し、Defender for Cloud で結果を見ることもできます |
中断と失敗の条件 | ビルドを中断することはできません | セキュリティ検出結果の重大度に基づいてビルドを中断するように構成できます |
スケーラビリティとパフォーマンスへの影響
エージェントレス コード スキャンでは、サブスクリプションにリソースは作成されず、パイプライン プロセス中にスキャンを行う必要はありません。 Azure DevOps と GitHub REST API を使用して、メタデータとコードをプルします。 つまり、API 呼び出しは Azure DevOps と GitHub のレート制限にカウントされますが、直接データ転送コストは発生しません。 このサービスは、開発環境を中断することなく、Azure DevOps と GitHub のレート制限内に収まるようにスキャンを管理します。 この方法は、DevOps のワークフローに影響を与えることなく、複数のリポジトリを対象とする効率的で高パフォーマンスのスキャンを提供します。 詳細については、GitHub REST API の Azure DevOps レートと使用制限 と レート制限に関するページを参照してください。
エージェントレス コード スキャンのデータ セキュリティ、コンプライアンス、アクセス制御
Microsoft Defender for Cloud のエージェントレス コード スキャン サービスは、厳密なデータ セキュリティとプライバシー対策を実装して、コードの安全で準拠した処理を保証します。
- データ暗号化とアクセス制御: システムは、業界標準のプロトコルを使って転送中のすべてのデータを暗号化します。 認可された Defender for Cloud サービスのみがコードにアクセスできます。
- データの保存場所と保持: スキャンは、データ保護法に準拠するために、Azure DevOps および GitHub コネクタ (米国または EU) と同じ geo で実行されます。 システムはスキャン中にのみコードを処理し、後で安全に削除して、長期間保存することはありません。
- リポジトリへのアクセス: サービスは、Azure DevOps と GitHub がスキャンを実行するためのセキュリティで保護されたアクセス トークンを生成します。 このトークンを使うと、サブスクリプションにリソースを作成することなく、必要なメタデータとコードを取得できます。 Defender for Cloud のコンポーネントのみがアクセスでき、データの整合性が保護されます。
- コンプライアンスのサポート: このサービスは、データ処理とプライバシーに関する規制とセキュリティの標準に準拠しており、地域のデータ保護要件に準拠して顧客コードが安全に処理およびスキャンされることを保証します。
これらの対策により、セキュリティで保護されて準拠した効率的なコード スキャン プロセスが実現され、データのプライバシーと整合性が維持されます。
制限事項 (パブリック プレビュー)
パブリック プレビュー フェーズの間は、次の制限事項が適用されます。
バイナリ スキャンなし: コード (SAST) と IaC スキャン ツールのみが実行されます。
スキャン頻度: 有効化時にリポジトリをスキャンし、2 ~ 4 日ごとにスキャンします。
リポジトリのサイズ: スキャンは 1 GB 未満のリポジトリに制限されます。
ブランチ カバレッジ: スキャンは既定のブランチ (通常は
main
) のみを対象とします。ツールのカスタマイズ: スキャン ツールをカスタマイズすることはできません。