Microsoft AZ-400: セキュリティ、コンプライアンス、DevSecOps — 学習ガイド
こちらの一部です: Microsoft DevOps Engineer Expert AZ-400 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
概要
Azureを中心としたデリバリーパイプラインにおけるセキュリティ、コンプライアンス、DevSecOpsでは、リスク検出を可能な限り早い段階にシフトし、ポリシーを継続的に適用し、証跡収集を自動化することが求められます。効果的な実装では、アプリケーションセキュリティテスト(SAST/DAST/SCA)、シークレットガバナンス、Infrastructure-as-Code(IaC)スキャン、規制コントロールをCI/CDライフサイクルに統合します。Azure DevOpsやGitHubでは、これはすべてのプルリクエストでアナライザーを実行し、品質のしきい値でマージをゲートし、Azure Key Vaultから期限付きのシークレットを取得する最小権限のIDでデプロイし、Microsoft Defender for DevOpsとDefender for Cloudで継続的に態勢を監視することを意味します。目標は、問題を発見するだけでなく、安全でない変更が保護されたリソースに到達するのを防ぎ、監査証跡を通じてコンプライアンスを証明し、セキュアなベロシティを維持することです。
シフトレフトセキュリティ、OWASP Top 10の緩和策、パイプラインの強化
シフトレフトセキュリティは、PR時のSASTとSCAから始まり、昇格前にシークレットスキャンとターゲットを絞ったDASTで補強されます。SASTは、インジェクションポイント、安全でないデシリアライザー、出力エンコーディングの欠落といったコードレベルの脆弱性を表面化させます。SonarQube/SonarCloudやGitHub code scanning(例:CodeQL)を統合して、すべての変更セットを分析します。プルリクエストを特定の行に紐づく問題で装飾し、脆弱性やカバレッジのしきい値が満たされない場合にビルドを失敗させる品質ゲートを適用します。SASTはOWASP Top 10のクラスに焦点を当てます:
- インジェクション:パラメーター化クエリ/ORMの使用を義務付け、入力を検証/正規化し、動的SQL/文字列連結を禁止します。SASTのルールセットと、検証済みのデータアクセスヘルパーの使用をアサートする単体テストを通じて強制します。
- クロスサイトスクリプティング(XSS):出力エンコーディングとContent Security Policyを要求します。SASTのテイント分析は、信頼できない入力からシンク(innerHTML, Response.Write)までを追跡すべきです。
- クロスサイトリクエストフォージェリ(CSRF):偽造防止トークンとSameSite Cookieを強制します。パイプラインはフレームワークアナライザーを実行して、ミドルウェア/設定が有効であることをアサートできます。
- 安全でないデシリアライゼーション:安全でないバイナリ/XMLシリアライザーを禁止し、許可される型を制限し、安全なデフォルト設定のJSONシリアライザーを優先します。SASTチェックと依存関係ポリシーにより、既知の安全でないライブラリの使用を防ぎます。
DASTは、ステージング環境で実行中のビルドを検証します。OWASP ZAPまたは同等のツールを、非本番環境へのデプロイ後のパイプラインジョブとして自動化し、認証済みスキャンとアプリのプロファイルに合わせて調整されたルールセットを使用します。脆弱性のベースラインに基づいて昇格をゲートします。新たに見つかった高/クリティカルな指摘事項でブロックし、受け入れられた例外は有効期限付きで永続化します。
ソフトウェアコンポジション分析(SCA)は、マージ前に脆弱なサードパーティパッケージを検出します。Dependabotを使用してバージョンアップのPRを作成し、OWASP Dependency-Checkを使用してCIでSBOMとCVEレポートを生成します。許可/拒否リストを定義し(例:プロプライエタリ製品に対してコピーレフトを拒否)、許可されていないライセンスを含むビルドを失敗させることで、ライセンスコンプライアンスを徹底します。シークレットスキャンはコミット時とCIで実行する必要があります。GitHub Advanced Securityのシークレットスキャンを採用するか、Gitleaks/Microsoft Security DevOpsを統合して、ハードコードされた認証情報、トークン、キーをキャッチします。シークレットのパターンが検出された場合はマージをブロックし、影響を受ける認証情報をローテーションします。
パイプラインの強化は交渉の余地がありません。ブランチ保護をロックダウンし、PRレビューを必須とし、SAST/SCA/DASTのステータスチェックを強制します。Azure Pipelinesでは、保護されたリソース、環境の承認とチェック、必須テンプレートを使用して、セキュリティステージを標準化します。短命で最小権限のトークンを優先し、ワークロードIDフェデレーションを使用して静的な認証情報を完全に回避します。セルフホストエージェントをプライベートネットワークに制限し、そのIDのスコープを最小限にし、信頼できないリポジトリに対して任意のスクリプトステップを許可しないテンプレートを強制することで、スクリプトインジェクションを無効にします。
シークレット、ID、Azure Key Vault、証明書のローテーション
Azure Key Vaultは、シークレット、キー、証明書の権威あるストアです。CI/CDと直接統合して、平文のシークレットを排除します:
- パイプラインのシークレット:Azure DevOpsでは、変数グループを、必要なシークレット名のみにスコープを限定したサービス接続を使用してKey Vaultにリンクします。シークレットは実行時に取得され、ログではマスクされます。GitHub Actionsでは、
azure/loginをフェデレーションIDと共に使用してトークンを取得し、Key Vaultを呼び出します。クライアントシークレットをリポジトリ設定に保存することは避けてください。 - マネージドIDアクセス:可能な限り、ワークロードとデプロイメントエージェントがマネージドIDまたはワークロードIDフェデレーションを使用してMicrosoft Entra IDで認証できるようにし、シークレットが保存されないようにします。最小権限の原則に従い、RBACまたはアクセスポリシーを使用してKey Vaultへのアクセスをスコープします(特定のシークレットバージョンに対してget/listのみ、purge/deleteは不可)。
- 証明書のローテーション:TLS/MTLS証明書をKey Vaultの証明書機能に保存し、統合されたCAを介して自動ローテーションさせます。消費するサービス(App Service, Application Gateway, CSI Secrets Store経由のAKS Ingress)がKey Vaultを参照するように構成し、再デプロイなしで更新された証明書が取得されるようにします。Key Vaultの
certificateNearExpiryイベントでEvent Gridを使用して、バインディングを検証し、キャッシュをウォームアップする自動化RunbookまたはFunctionをトリガーします。デプロイマニフェストで証明書バージョンの使用状況を追跡し、必要に応じてバージョンをピン留めし、メンテナンスウィンドウ中に意図的にロールフォワードします。
プライベートエンドポイント、ファイアウォールルール、消去保護、論理削除、および監査のためのLog AnalyticsまたはストレージへのロギングでKey Vaultを強化します。明示的に正当化されない限り、クロステナントアクセスを拒否し、ブレークグラスアカウントのアクセス権を定期的にローテーションします。
依存関係、コンテナ、IaC、そしてコードとしてのコンプライアンス
依存関係スキャンでは、セキュリティ上の欠陥とライセンスの両方を処理する必要があります。Dependabotは継続的に安全な更新を提案します。脆弱なバージョンを導入するPRをブロックするには、依存関係レビューポリシーを使用します。OWASP Dependency-Check(またはnpm audit、pip-auditのようなエコシステム固有のツール)をCIで実行し、SBOM(CycloneDX/SPDX)を生成し、重大度のしきい値やライセンスルールに違反した場合にはビルドを失敗させるべきです。高度なライセンスガバナンスのためには、法的なポリシーの強制と修復ワークフローが可能なSCAプラットフォームと組み合わせます。
コンテナイメージのセキュリティはCIから始まり、レジストリとランタイムへと続きます。
- Trivy: パイプラインのステップとして実行し、Dockerfileとビルド済みイメージをスキャンしてOS/パッケージのCVEや設定ミスを検出します。Critical/Highの検出結果でビルドを中断します。最小限のベースイメージとrootlessコンテナを強制します。
- Azure Container Registryの脆弱性スキャン: Microsoft Defender for Containersを有効にして、プッシュ/インポート時およびスケジュールに基づいてイメージをスキャンします。検出結果をDefender for Cloudに表示し、作業項目にエクスポートし、未解決のCritical/Highの問題があるイメージをブロックするデプロイメントゲートを強制します。
- Defender for Containers: ランタイムの脅威検出、kube-benchスタイルのチェック、アドミッションコントロールにより、AKS/ECS/Kubernetesに保護を拡張します。ポリシーを使用して、Notation/ACR content trustで署名された信頼されたACRからのみプルするようにし、CIおよびクラスターアドミッション時に署名を検証します。
IaCセキュリティは、クラウドリソースがデフォルトで安全にプロビジョニングされることを保証します。
- Checkovとtfsec: TerraformとKubernetesのマニフェストをスキャンし、安全でない設定(パブリックストレージ、開かれたセキュリティグループ、暗号化の欠如)を検出します。重大度のしきい値でビルドを失敗させます。既存の技術的負債をベースライン化し、新規/変更されたリソースに集中します。
- ARM/Bicepのリンティング: Bicepリンター(bicepconfig.json)とARM Template Tool Kit(arm-ttk)を有効にして、タグ付け、HTTPS-onlyエンドポイント、カスタマーマネージドキー、診断設定などのルールを強制します。what-ifデプロイメントと組み合わせて、適用前にドリフトを検出します。
コードとしてのコンプライアンスは、Azure PolicyとDefender for Cloudを使用して、コントロールを継続的に強制し、レポートします。
- CIS、NIST、ISO 27001、または内部ベースラインに準拠したAzure Policyイニシアチブを割り当てます。重要なガードレール(例:データベースのパブリックIP)にはDeny、診断のためにはDeployIfNotExists、可観測性のためにはAuditのような効果を選択します。ポリシー定義をバージョン管理されたアーティファクトとして保存し、policy-as-codeパイプラインでテストし、プルリクエスト経由で昇格させます。
- Defender for Cloudの規制コンプライアンスダッシュボードを使用して、サブスクリプションや管理グループを横断してコントロールへの準拠状況を可視化します。Azure Monitorと統合し、証跡をLog AnalyticsやEvent HubsにエクスポートしてSIEMに取り込みます。
- 監査証跡を維持する: ポリシーイベントと割り当てにはAzure Activity Logs、コンプライアンスクエリにはResource Graph、リポジトリとパイプラインの変更にはAzure DevOps/GitHubの監査ログ、そしてパイプライン実行のアーティファクトとして自動的にキャプチャされたリリース証跡を使用します。
SonarQube/SonarCloud、パイプラインセキュリティ、およびMicrosoft Defender for DevOps
SonarQube/SonarCloudは、エンジニアリングの品質とセキュリティを整合させる、強制力のある品質ゲートを提供します。「Clean as You Code」アプローチを採用し、新しいコードにゲートを設定します。具体的には、新規/変更された行に対する最小コードカバレッジ(例:80%以上)、新規の「Critical」な脆弱性やブロッカーとなるコードの匂いがゼロであること、そして低い重複率などです。ゲートを通過できなかった場合は、パイプラインを失敗させる必要があります。テストフレームワーク(JaCoCo, Cobertura, VSTest)からのカバレッジを公開し、言語ごとに品質プロファイルを調整して、セキュリティホットスポットやOWASPに準拠したルールを含めます。技術的負債の比率と修正時間を追跡し、その傾向を報告してチームの説明責任を促進します。
パイプラインセキュリティは、最小権限のサービス接続、保護されたリソース、そして包括的なシークレットマスキングにかかっています。
- サービス接続では、スコープを絞った(サブスクリプション/リソースグループ、特定のACR、またはKey Vault)ワークロードIDフェデレーションまたはマネージドIDを使用すべきです。サービス接続と環境で承認とチェックを有効にし、所有者が使用を承認するようにします。「使用」権限を信頼できるパイプラインに限定し、「すべてのパイプラインにアクセス許可を付与する」を無効にします。
- Azure DevOpsの保護されたリソースは、サービス接続、変数グループ、セキュアファイル、環境を保護します。承認者、営業時間、Azure Monitorのクエリ結果、外部のRESTポリシーエンジンなどのチェックを要求します。これらをデプロイ前のゲートとして、また機密性の高い読み取り(例:本番環境のシークレット取得)の前提条件として扱います。
- すべてのログでシークレットマスキングを強制する必要があります。スクリプト内での変数展開を制限し、シークレットのエコーを避け、PATを保存する代わりにsystem.accessTokenスコープのAPIを優先します。パイプラインのログを定期的にスキャンして偶発的なシークレットの漏洩を検出し、検出時にはローテーションさせます。
Microsoft Defender for DevOpsは、GitHubとAzure DevOpsにまたがるリポジトリとパイプラインのセキュリティポスチャーを統合します。組織/プロジェクトをDefender for Cloudに接続し、コード、シークレット、IaC、依存関係のリスクシグナルを取り込み、統合された推奨事項を提示します。検出結果を所有者と関連付け、有効期限付きの抑制ワークフローをサポートし、ブランチ保護、必須レビュー担当者、ステータスチェックの採用状況を測定します。Defender for DevOpsをMicrosoft Security DevOpsタスク/アクションと組み合わせることで、複数のアナライザー(例:Semgrep, Trivy, tfsec, Gitleaks, Bandit)をワンステップでオーケストレーションし、SARIFをコードスキャンに発行します。Defender for Cloudを使用して、DevOpsのベストプラクティス(例:シークレットスキャンが有効、必須レビュー担当者数 ≥ 2、非管理者によるマージが無効)を追跡・強制するガバナンスイニシアチブを作成し、リポジトリの衛生状態を監査可能なコントロールにまで高めます。
実践的な問題シナリオ
Spotifyは、.NETとNode.jsにまたがる新しいAKSホストのマイクロサービススタックのセキュアなデリバリーを標準化する必要があります。リポジトリはGitHub Enterprise Cloudにあり、デプロイはAzure DevOpsのマルチステージYAMLパイプラインを通じて行われます。課題は、マージ前に脆弱な依存関係や設定ミスのあるインフラストラクチャを阻止し、静的な資格情報を排除し、クリティカルなCVEを持つイメージの昇格をブロックし、同時に監査可能なコンプライアンス証跡を生成することです。
- PR時のSAST/SCAとシークレットスキャンを強制する
- PRデコレーションと品質ゲートを備えた多言語SASTのためにSonarCloudを選択します。新しいコードのカバレッジを80%以上、新規の「Critical」な脆弱性をゼロに設定します。Dependabotを有効にして安全なアップグレードを自動でPRし、GitHubの依存関係レビューで既知のCVEを導入するPRをブロックします。GitHub Advanced SecurityのシークレットスキャンとCIでのGitleaksの実行により、資格情報漏洩に対する多層防御を確保します。
- 昇格前に認証付きDASTを追加する
- パイプラインステージでOWASP ZAPを使用し、テストアカウントを準備したステージング環境をターゲットにします。新しい「High」または「Critical」な問題が現れた場合、リリースチェックが本番環境へのデプロイをブロックします。ZAPは、OWASPに準拠したカバレッジと簡単なCI自動化のために選択されます。
- Key VaultとワークロードIDフェデレーションでIDとシークレットを保護する
- サービス接続において、サービスプリンシパルのクライアントシークレットをMicrosoft EntraのワークロードIDフェデレーションに置き換え、保存されたシークレットを排除します。パイプラインは、最小権限のget/listアクセス許可を介してAzure Key VaultからランタイムシークレットとDB資格情報を取得します。これにより、長期的な資格情報が不要になり、ローテーションが集中管理されます。
- 証明書の自動化を実装する
- Ingress証明書とmTLS証明書を自動ローテーション付きでKey Vaultに保存します。AKSは、Kubernetesにシークレットをコピーするのを避けるため、Secrets Store CSI driverを介して証明書を取得します。更新後、Event GridがFunctionをトリガーしてバインディングを検証します。この設計により、ローテーション時のダウンタイムと人為的ミスが最小限に抑えられます。
- コンテナとレジストリを強化する
- CIでTrivyを実行してDockerfileとビルド済みイメージをスキャンし、「Critical」または「High」で失敗させます。クリーンなイメージのみをACRにプッシュします。Defender for Containersを有効にして、プッシュ時および定期的にACRをスキャンし、検出結果をDefender for Cloudに表示します。ポリシーに基づいたリリースチェックにより、未解決の「Critical」または「High」なCVEを持つイメージのデプロイをブロックします。Trivyは迅速なフィードバックを提供し、Defenderは継続的でレジストリネイティブな保証を追加します。
- IaCをスキャンし、Bicep/ARMをリントする
- Checkovとtfsecを使用してTerraformとHelmチャートをスキャンし、タグ付け、暗号化、ネットワーク制御を強制します。Azureネイティブのテンプレートに対しては、CIでBicep linterとARM TTKを実行します。チェックに失敗した場合はマージをブロックし、ベースラインによってノイズを新規/変更されたリソースに限定します。これらのツールは、広範なルールカバレッジと強力なAzureサポートのために選択されます。
- コンプライアンスと証跡をコード化する
- CIS Azureと企業ベースラインに対応するAzure Policyイニシアチブを割り当てます。重要なガードレールにはDenyを、診断用にはDeployIfNotExistsを強制します。結果をDefender for Cloudの規制ダッシュボードにフィードします。不変の証跡として、アクティビティログとDefenderの推奨事項をLog Analyticsにエクスポートします。Policyは継続的な強制を提供し、ダッシュボードは監査に対応したビューを提供します。
- パイプラインと保護されたリソースをロックダウンする
- サービス接続をスコープ指定されたサブスクリプション/リソースグループに制限します。本番環境には環境の承認とAzure Monitorのクエリチェックを要求します。変数グループとセキュアファイルを保護し、すべてのシークレットをマスクします。プライベートネットワークを使用してセルフホストエージェントを強化します。これらの機能は影響範囲を縮小し、リスクの高いアクションに対して人間の介在を保証します。
- Microsoft Defender for DevOpsでポスチャーを統合する
- GitHub組織とAzure DevOpsプロジェクトをDefender for Cloudに接続し、コード、シークレット、IaCの検出結果を集約し、リポジトリ保護の採用状況を追跡します。Microsoft Security DevOpsアクション/タスクを使用して、Semgrep、Trivy、tfsec、GitleaksをSARIF発行とともにオーケストレーションし、サービス全体で標準化されたスキャンを保証します。これにより、リスク管理と修正ワークフローが集中管理されます。
各ツール/機能は、実現可能な限り早期の検出、自動的な強制、および監査可能性を目的として選択されています。SonarCloudとZAPはコードとランタイムのリスクをゲートし、DependabotとTrivyは安全なアップデートを加速させます。Key VaultとIDフェデレーションは静的なシークレットを排除し、Checkov/tfsecとAzure Policyはドリフトを防ぎます。保護されたリソースと承認は影響範囲を制御し、Defender for DevOpsとDefender for Cloudは統一された実用的なポスチャー管理を提供します。
← リリース管理とデプロイ戦略 · すべてのドメイン · テスト戦略と品質エンジニアリング →
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →