AWS DevOps Agent で Azure 環境のどこまで見えるか試してみた

AWS DevOps Agent で Azure 環境のどこまで見えるか試してみた

DevOps AgentでのAzure調査は夢いっぱい
2026.05.29

はじめに

こんにちは。大阪オフィスの林です。

前回、下記の記事で AWS DevOps Agent を Azure テナントに接続しました。

https://dev.classmethod.jp/articles/aws-devops-agent-azure-integration/

付与したのは Reader ロール という読み取り専用のロール 1 つだけです。簡易的な調査を前回の記事でやってみました。
Reader というロールを付与している以上、「Azureというレイヤーであれば変更しない範囲でひと通り見えるんだろうなぁー」と素朴に推測はできます。でも実際のところ、

  • 「NSG に穴がない?」と聞いたら、ただ列挙するだけ?それとも指摘まで踏み込んでくれる?
  • 「VM の暗号化は?」と聞いたら、セキュリティプロファイル の中身まで踏み込んで返してくれる?
  • 「全部チェックして」と丸投げしたら、何件くらい引っかかる?
  • Defender for Cloud や Azure Policy、Sentinel まで届く?

このあたりは試してみないと分かりません。
本記事では、主にセキュリティ観点でいろいろなプロンプトを投げて、AWS DevOps Agent × Azure における調査の挙動について実際に試しながら見ていきたいと思います。

Agent 自身に聞いてみる

実際にプロンプトを投げる前に、ちょっと試しにAgent 自身に「あなたは何ができるの?」 と聞いてみました。

aws-devops-agent-azure-reader-scope-001

aws-devops-agent-azure-reader-scope-002

aws-devops-agent-azure-reader-scope-003

応答内容を鵜呑みにするのは危険ですが、一例としてざっくりまとめるとこんな感じでした。

カテゴリ Agent の自己申告
リソースの把握 リソース一覧、詳細情報、リソース間の依存関係
メトリクスとパフォーマンス Azure Monitor メトリクス、時系列分析、カスタムメトリクス
ログとイベント Log Analytics の KQL クエリ、Activity Log、診断ログ、コンテナログ
トポロジーと環境構造 全体構成のマッピング、環境識別 (dev/staging/prod)、依存関係の可視化
AKS (Kubernetes) 環境 Pod、Service、Deployment、Events、コンテナログ
調査・分析の実行 パフォーマンス問題の特定、エラーパターン検出、変更追跡、時系列比較

続けて、Agent 自身の権限についても聞いてみました。

aws-devops-agent-azure-reader-scope-004

Agent は実際に Azure RBAC API を叩いて、割り当てられているロールを確認してきました。

aws-devops-agent-azure-reader-scope-005

aws-devops-agent-azure-reader-scope-006

単に「Reader ロール権限です。」と答えるだけでなく、ロール定義 ID やスコープ、割り当て日まで API 経由で取得して報告してくる ところは「さすが!」という感じですね。

とはいえ、Agent自身の自己申告は自己申告。「セキュリティプロファイル のような細かい設定まで踏み込むのか?」など、ここからは実際にプロンプトを投げて確かめていきたいと思います。

環境の前提

ここからは実際にプロンプトを投げていきます。検証で使う環境はこんな感じです。

項目 内容
検証対象 リソースグループ rg-devopsagent-azure-demo (japaneast)、VM vm-devopsagent-demo (Standard_B2pts_v2, Ubuntu 22.04)
仕込み済みの脆弱構成 NSG で SSH 全開 (0.0.0.0/0:22)、Encryption At Host 無効、Public Blob Storage

セキュリティ観点で何かしら引っかかってほしいので、意図的に脆弱な構成をいくつか仕込んでいます。

パブリック IP の棚卸し

では早速見ていきましょう。
一番基本的な「リソースの把握」や「調査」から確認してみます。
初めの例として、『パブリック IP の棚卸し』をサンプルケースとして調査をしてみたいと思います

aws-devops-agent-azure-reader-scope-007

aws-devops-agent-azure-reader-scope-008

aws-devops-agent-azure-reader-scope-009

Agent は 4 つのツールを使い、約 2 分で返してきました。

VM 名・パブリック IP・NSG という聞いた項目だけでなく、聞いてもいない ネットワーク全体の公開状況サマリ (未割当 IP の有無、LB / App Gateway 経由の公開がないか) まで自発的に確認して返してきてくれてます。手動で Portal を行ったり来たりするより明らかに視野が広いです。

最後には「vm-devopsagent-demoNSG の具体的なセキュリティルールを確認しますか?」と、次の調査の提案までしてきました。会話の流れを汲んで先回りしてくれるのもうれしいですね。

NSG の穴チェック

続いて、NSG の脆弱なルールををサンプルケースとして見ていきたいと思います。

こちらも 4 つのツールで、約 1 分で返ってきました。

aws-devops-agent-azure-reader-scope-010

aws-devops-agent-azure-reader-scope-011

aws-devops-agent-azure-reader-scope-012

aws-devops-agent-azure-reader-scope-013

ルールを列挙するだけなら Portal でも見えますが、Agent は 該当 NSG に紐付く NIC・VM・パブリック IP まで芋づる式に追跡 して、しかも 「SSH キー認証のみでパスワード無効 - これは良い設定です」と良い面の観察まで添えてくれてます。リスク指摘だけでなく褒めるところは褒めてくれる、というのは新鮮です。

修復策も 即時 / ベストプラクティス / 代替 / モニタリング の 4 段階で整理されて返ってきます。Reader 1 つで、構成情報 + リスク評価 + 関連リソースの相関 + 段階別の是正提案までまとめて返してくるのは、Portal を行ったり来たりするのとは別物の便利さです。

もう少し深く セキュリティ設定まで読める?

構成情報は見えました。次は VM の中のセキュリティ設定(暗号化やセキュリティプロファイル)がどこまで読めるかを試します。

aws-devops-agent-azure-reader-scope-014

aws-devops-agent-azure-reader-scope-015

aws-devops-agent-azure-reader-scope-016

こちらは 5 つのツールで、約 1 分で返ってきました。

Reader 権限だけで セキュリティプロファイルのプロパティまで踏み込めていました。
Reader 権限の Microsoft.Compute/virtualMachines/read で読める情報ではあるので、仕組み上アクセスできるのは分かるのですが、Agent がそこまで読みに行くかは試してみないと分かりませんでした。

しかも単に「無効です」と返すだけでなく、各対策の運用上の制約まで自発的に添えてくる ところが便利です。「Trusted Launch は既存 VM では変更不可、再作成が必要」「CMK は VM デプロイ前のセットアップが必要」などの情報はポータルだけ眺めていてもなかなか出てこない情報で、改善計画を立てるときに地味に効きます。

Reader の Microsoft.Compute/*/read 1 つで、構成の読み取り + 観点別の評価 + 実装上の制約まで返ってくるというのはドキュメントだけでは読み取れない発見でした。

最後、「全部棚卸しして」と丸投げしたら

個別に聞けばある程度イイ感じに見える。では「全部まとめてチェックして」と丸投げしたらどうなるか?
やってみました。

aws-devops-agent-azure-reader-scope-017

実際に Agent が返してきたレポート全文は長いので、折りたたんでおきます。粒度感や言い回しの参考にどうぞ。

Agent が返してきた包括的セキュリティ評価レポート

包括的セキュリティ評価レポート

  • Azure サブスクリプション: ******************
  • 評価日: 2026 年 5 月 29 日
  • スコープ: サブスクリプション全体のセキュリティ体制評価

エグゼクティブサマリー

環境概要

  • リソース数: 最小構成 (VM 1 台、VNet 1 つ、NSG 1 つ、パブリック IP 1 つ)
  • 主要ワークロード: 開発/DevOps エージェント (vm-devopsagent-demo)
  • ロケーション: Japan East リージョン
  • セキュリティ体制: 高リスク
  • 重大な問題: 3 件
  • 高重要度の問題: 7 件
  • 中重要度の問題: 6 件
  • 低重要度の問題: 3 件

最重要セキュリティ懸念

  1. SSH がインターネット全体 (0.0.0.0/0) に公開 ── 重大
  2. 監視、ログ、診断機能が一切未構成 ── 重大
  3. ディスク暗号化がプラットフォームマネージドキーのみ ── 高
  4. VM にセキュリティ拡張機能とハードニングが欠如 ── 高
  5. NSG フローログ未構成 ── 高
  6. DDoS 保護プランなし ── 中
  7. Security Center / Defender for Cloud の構成状態が不明 ── API 制限により確認不可

セキュリティドメイン別の詳細所見

1. ネットワークセキュリティ

🚨 重大な所見

所見 1.1: SSH ポートがインターネットに公開

  • リソース: vm-devopsagent-demoNSG (rg-devopsagent-azure-demo, Japan East)
  • 問題: NSG ルール "default-allow-ssh" が任意の送信元 (0.0.0.0/0) から SSH (TCP/22) を許可
    • 優先度: 1000
    • プロトコル: TCP
    • 送信元: * (Any)
    • 宛先: * (Any)
    • ポート: 22
    • アクション: 許可
  • リスク: ブルートフォース攻撃、クレデンシャルスタッフィング、インターネットからの不正アクセス試行に直接さらされる。最も頻繁に悪用される攻撃ベクターの一つ
  • 影響: 重大 - VM 全体への単一侵害ポイント
  • 改善策:
    • 即座に実施: 送信元を特定の IP アドレスまたは IP 範囲 (オフィス/VPN の IP) に制限
    • 推奨: Azure Bastion を実装し、パブリック IP 公開なしでセキュアな RDP/SSH 接続を実現
    • 代替案: Security Center の Just-In-Time (JIT) VM アクセスを使用し、時間制限と IP 制限付き SSH アクセスを実現
    • ベストプラクティス: デフォルト SSH ポートの変更、fail2ban の実装、証明書ベース認証のみの使用
⚠️ 高重要度の所見

所見 1.2: NSG フローログ未構成

  • リソース: vm-devopsagent-demoNSG
  • 問題: NSG フローログが有効化されていない。フローログは IP トラフィックパターンの可視性を提供
  • リスク: ネットワークトラフィックの監査証跡なし、異常な接続パターンの検出不可、インシデント対応能力の低下
  • 影響: 高 - セキュリティ監視のブラインドスポット
  • 改善策:
    • フローログ保持用のストレージアカウントを作成
    • vm-devopsagent-demoNSG で NSG フローログを有効化
    • ML ベースの脅威検出のための Traffic Analytics を構成
    • 保持期間を最低 90 日に設定 (コンプライアンス要件)

所見 1.3: VM にパブリック IP が直接割り当て

  • リソース: vm-devopsagent-demo (パブリック IP: **.**.**.**)
  • 問題: VM にパブリック IP が直接割り当てられており、セキュリティゲートウェイを経由していない
  • リスク: 攻撃面の増加、インターネットスキャンと攻撃への直接的な露出
  • 影響: 高 - VM がインターネットから直接到達可能
  • 改善策:
    • セキュアな管理アクセスのために Azure Bastion を展開
    • パブリック IP を削除し、プライベート接続を使用
    • パブリックアクセスが必要な場合、Azure Firewall または Application Gateway の背後に配置
    • トラフィック検査のためにネットワーク仮想アプライアンス (NVA) を実装
📋 中重要度の所見

所見 1.4: DDoS 保護プランなし

  • リソース: 仮想ネットワーク (vm-devopsagent-demoVNET)
  • 問題: DDoS Protection Standard が有効化されていない (enableDdosProtection: false)
  • リスク: サービス中断を引き起こす可能性のある大量 DDoS 攻撃に脆弱
  • 影響: 中 - サービス可用性リスク
  • 改善策: VNet で Azure DDoS Protection Standard を有効化 / DDoS Protection テレメトリとアラートを構成 / DDoS 対応計画をレビュー

所見 1.5: Azure Firewall またはネットワーク仮想アプライアンスなし

  • リソース: サブスクリプション全体
  • 問題: トラフィック検査とフィルタリングのための集中ファイアウォールなし
  • リスク: エグレスフィルタリングの強制能力が限定的、集中的な脅威インテリジェンスなし
  • 影響: 中 - ディープパケット検査機能なし
  • 改善策: Azure Firewall またはサードパーティ NVA を展開 / ハブアンドスポークネットワークトポロジーを実装 / すべてのインターネット向けトラフィックに強制トンネリングを構成

所見 1.6: プライベートエンドポイント未構成

  • リソース: サブスクリプション全体
  • 問題: PaaS サービス用の Azure Private Link / プライベートエンドポイントが展開されていない
  • リスク: PaaS サービスを追加した場合、パブリックエンドポイント経由で公開される可能性
  • 影響: 中 - 将来の PaaS サービスのネットワーク分離欠如
  • 改善策: 将来の PaaS サービスにはプライベートエンドポイントを展開 / ストレージ/データベースのパブリックネットワークアクセスを無効化 / 名前解決にプライベート DNS ゾーンを使用

所見 1.7: Network Watcher Connection Monitor なし

  • リソース: NetworkWatcher_japaneast は存在するがフローログや監視は未構成
  • 問題: Network Watcher は展開されているが監視に利用されていない
  • リスク: プロアクティブなネットワーク接続監視なし
  • 影響: 低 - 最適化機会の損失
  • 改善策: 重要なパスに Connection Monitor を構成 / ネットワークパフォーマンス監視を設定

2. 暗号化

⚠️ 高重要度の所見

所見 2.1: プラットフォームマネージドキーのみでディスク暗号化

  • リソース: vm-devopsagent-demo_OsDisk_1_0d15fe8321924aacbfe4b30a9ae48842
  • 問題:
    • 暗号化タイプ: EncryptionAtRestWithPlatformKey (PMK)
    • カスタマーマネージドキー (CMK) 暗号化なし
    • ディスクサイズ: 30 GB Premium SSD
  • リスク: 暗号化キーのライフサイクル制御が少ない、カスタマーマネージド暗号化のコンプライアンス要件を満たせない
  • 影響: 高 - コンプライアンスとデータ主権の懸念
  • 改善策:
    • Azure Key Vault を作成 (サブスクリプション内に存在しない)
    • カスタマーマネージドキーを生成またはインポート
    • CMK を使用したディスク暗号化を有効化
    • キーローテーションポリシーを構成
    • Key Vault の論理的削除と消去保護を有効化

所見 2.2: Encryption At Host 未有効化

  • リソース: vm-devopsagent-demo
  • 問題: VM で Encryption At Host 機能が有効化されている証拠なし
  • リスク: テンポラリディスクとキャッシュがホストレベルで暗号化されていない
  • 影響: 高 - テンポラリストレージとキャッシュのデータが暗号化されていない
  • 改善策:
    • VM で "Encryption At Host" を有効化 (VM の再起動が必要)
    • VM サイズ (Standard_B2pts_v2) がこの機能をサポートしているか確認

所見 2.3: Azure Key Vault 未展開

  • リソース: サブスクリプション全体
  • 問題: サブスクリプション内に Key Vault がゼロ
  • リスク: 集中シークレット管理なし、証明書が安全に保存されていない、CMK 暗号化の実装不可
  • 影響: 高 - 重要なセキュリティインフラの欠如
  • 改善策:
    • 適切なアクセスポリシーで Azure Key Vault を展開
    • Key Vault ファイアウォールを有効化 (特定の VNet/IP に制限)
    • 論理的削除と消去保護を有効化
    • 診断ログを構成
    • Key Vault アクセスに RBAC を実装 (アクセスポリシーは避ける)
    • Key Vault に Azure Private Link を有効化

所見 2.4: VM に Trusted Launch と Secure Boot が欠如

  • リソース: vm-devopsagent-demo
  • 問題: VM 構成に Trusted Launch、Secure Boot、vTPM 機能が表示されない
  • リスク: ブートレベルのルートキットやファームウェア攻撃に脆弱
  • 影響: 中 - ブート整合性が測定されていない
  • 改善策:
    • 新規 VM には Trusted Launch セキュリティタイプを選択
    • Secure Boot と vTPM を有効化
    • 現在の VM は Trusted Launch を有効化するために再作成が必要な可能性

3. ID・アクセス管理

🚨 重大な所見

所見 3.1: RBAC ロール割り当ての監査不可

  • リソース: サブスクリプション全体
  • 問題: Microsoft.Authorization プロバイダーが制限されている - ロール割り当て、特権ロール、サービスプリンシパルの監査不可
  • リスク: 最小権限の原則を検証できない、過度に許可された Owner/Contributor 割り当てを特定できない
  • 影響: 重大 - IAM 可視性の完全な欠如
  • 改善策:
    • Microsoft.Authorization API アクセスを要求
    • Azure Portal 経由での手動監査が必要:
      • サブスクリプションレベルのすべてのロール割り当てをレビュー
      • ユーザーへの Owner 割り当てを特定 (最小限であるべき)
      • Contributor 割り当てをレビュー
      • カスタムロール定義を監査
      • サービスプリンシパルの権限をレビュー
    • Azure AD Privileged Identity Management (PIM) を実装
    • Just-In-Time (JIT) 特権アクセスを有効化
⚠️ 高重要度の所見

所見 3.2: VM にマネージド ID が見当たらない

  • リソース: vm-devopsagent-demo
  • 問題: VM 構成にシステム割り当てまたはユーザー割り当てマネージド ID が表示されない
  • リスク: 保存された認証情報、接続文字列、またはサービスプリンシパルシークレットを使用している可能性が高い
  • 影響: 高 - 認証情報の露出リスク
  • 改善策:
    • VM でシステム割り当てマネージド ID を有効化
    • マネージド ID に必要な Azure RBAC ロールを付与
    • VM から保存された認証情報を削除
    • DefaultAzureCredential を使用した Azure SDK にアプリケーションを更新

所見 3.3: VM 管理者ユーザー名が露出

  • リソース: vm-devopsagent-demo
  • 問題: 管理者ユーザー名 azureuser は標準的/予測可能
  • リスク: ブルートフォース攻撃における攻撃者の労力を削減 (ユーザー名が既知)
  • 影響: 中 - 部分的な認証情報露出
  • 改善策:
    • 将来の VM には非標準の管理者ユーザー名を使用
    • アカウントロックアウトポリシーを実装
    • SSH 証明書認証のみを使用

4. ストレージセキュリティ

所見 4.1: ストレージアカウント未展開

  • リソース: サブスクリプション全体
  • 問題: ストレージアカウントがゼロ - 実行中のワークロードがあるサブスクリプションとしては異常
  • 観察: これによりストレージ関連のセキュリティ懸念は制限されるが、以下も示している:
    • VM のブート診断が構成されていない
    • バックアップストレージなし
    • NSG フローログストレージなし
    • 監査ログ保持なし
  • 影響: 中 - コア診断および監査インフラの欠如
  • 改善策:
    • セキュアな構成でストレージアカウントを作成:
      • "セキュアな転送が必須" を有効化 (HTTPS のみ)
      • 最小 TLS バージョンを 1.2 に設定
      • パブリック BLOB アクセスを無効化
      • BLOB の論理的削除を有効化 (7-90 日)
      • バージョン管理を有効化
      • ファイアウォールルールを構成 (特定の VNet に制限)
      • インフラストラクチャ暗号化を有効化
      • 暗号化にカスタマーマネージドキーを使用
    • VM ブート診断を構成
    • NSG フローログストレージを設定
    • アクティビティログのエクスポートを構成

5. ログ・監視

🚨 重大な所見

所見 5.1: Log Analytics ワークスペース未展開

  • リソース: サブスクリプション全体
  • 問題: Log Analytics ワークスペースがゼロ
  • リスク: 集中ログ収集なし、セキュリティ分析なし、Azure Monitor 統合なし
  • 影響: 重大 - 完全な監視の盲目状態
  • 改善策:
    • Log Analytics ワークスペースを作成
    • ワークスペース保持期間を構成 (最小 30 日、推奨 90 日以上)
    • ワークスペースレベルのロールベースアクセス制御を有効化
    • データ収集ルールを構成

所見 5.2: 診断設定未構成

  • リソース: すべてのリソース (VM、NSG、VNet、パブリック IP)
  • 問題: Microsoft.Insights が登録されていない - 診断設定をクエリできない
    • NSG 診断ログなし
    • VNet 診断ログなし
    • アクティビティログがエクスポートされていない
  • リスク: セキュリティイベントの監査証跡ゼロ、コンプライアンス違反、運用上のブラインドスポット
  • 影響: 重大 - セキュリティインシデントの検出・調査不可
  • 改善策:
    • Microsoft.Insights プロバイダーを登録
    • Log Analytics ワークスペースを作成 (5.1 参照)
    • NSG で診断設定を有効化 (フローログと分析の両方をキャプチャ)
    • VNet で診断設定を有効化
    • アクティビティログを Log Analytics にエクスポートするよう構成
    • Azure Monitor Agent 経由で VM ゲストレベルのログを有効化
⚠️ 高重要度の所見

所見 5.3: Azure Monitor アラート未構成

  • リソース: サブスクリプション全体
  • 問題: アクティビティログアラートとメトリックアラートがゼロ
  • リスク: セキュリティイベントや運用問題のプロアクティブな通知なし
  • 影響: 高 - リアクティブのみのセキュリティ体制
  • 改善策:
    • 以下のアラートルールを作成:
      • NSG ルール変更 (セキュリティアラート)
      • VM 電源状態変更
      • 失敗した SSH 認証試行 (VM エージェントが必要)
      • 高 CPU/メモリ使用率
      • ディスク容量枯渇
      • ネットワーク異常
    • 通知用のアクショングループを構成
    • SIEM/SOAR プラットフォームと統合

所見 5.4: 監視用 VM 拡張機能なし

  • リソース: vm-devopsagent-demo
  • 問題: VM 拡張機能がゼロインストール (Azure Monitor Agent なし、Log Analytics エージェントなし、セキュリティエージェントなし)
  • リスク: ゲスト OS テレメトリなし、VM 内部のセキュリティ監視なし
  • 影響: 高 - VM 内部への可視性なし
  • 改善策:
    • Azure Monitor Agent (AMA) をインストール - レガシーエージェントを置き換え
    • 以下のデータ収集ルールを構成:
      • システムログ (syslog)
      • セキュリティイベント
      • パフォーマンスカウンター
    • Microsoft Defender for Endpoint 統合を検討
    • VM Application Health 拡張機能をインストール

所見 5.5: VM ブート診断無効

  • リソース: vm-devopsagent-demo
  • 問題: ブート診断ストレージが構成されていない
  • リスク: ブート失敗のトラブルシューティングやコンソール出力のキャプチャ不可
  • 影響: 中 - 運用トラブルシューティングの制限
  • 改善策:
    • ブート診断用のマネージドストレージを作成、またはマネージドストレージオプションを使用
    • VM でブート診断を有効化

6. Security Center / Defender for Cloud

⚠️ 高重要度の所見

所見 6.1: Security Center 構成の確認不可

  • リソース: サブスクリプション全体
  • 問題: Microsoft.Security プロバイダーが制限されている - 以下をクエリできない:
    • Defender for Cloud 価格ティア
    • セキュリティ推奨事項
    • セキュアスコア
    • セキュリティ連絡先
    • セキュリティポリシー
  • リスク: 不明なセキュリティ体制、重要なセキュリティ機能が欠落している可能性
  • 影響: 高 - 高度な脅威保護が有効かどうか確認不可
  • 改善策:
    • Microsoft.Security API アクセスを要求、または Azure Portal 経由で手動確認:
      • Defender for Cloud が有効化されているか確認
      • Defender プランが有効化されているか確認: Servers、Storage、Key Vault、Resource Manager
      • アラート通知用のセキュリティ連絡先を構成
      • セキュリティ推奨事項をレビューして対処
      • セキュアスコアを確認
    • Defender for Servers (Plan 2 推奨) を有効化:
      • 適応型アプリケーション制御
      • ファイル整合性監視
      • Just-in-time VM アクセス
      • 脅威検出
      • 脆弱性評価

所見 6.2: 脆弱性評価の証拠なし

  • リソース: vm-devopsagent-demo
  • 問題: VM で脆弱性評価拡張機能が検出されない
  • リスク: OS とアプリケーションの脆弱性が不明
  • 影響: 高 - パッチコンプライアンスやセキュリティ脆弱性を評価できない
  • 改善策:
    • Defender for Servers がまだ有効化されていない場合は有効化
    • Microsoft Defender Vulnerability Management を展開 (統合済み)
    • または Qualys/Rapid7 拡張機能を展開
    • 自動スキャンスケジュールを構成
    • 自動パッチ管理を実装

7. その他のセキュリティ所見

📋 中重要度の所見

所見 7.1: Azure Bastion 未展開

  • リソース: サブスクリプション全体
  • 問題: セキュアな RDP/SSH 接続のための Azure Bastion サービスなし
  • リスク: 管理アクセスにパブリック IP と NSG ルールに依存
  • 影響: 中 - より安全性の低い管理アクセス方法
  • 改善策:
    • VNet に Azure Bastion を展開
    • AzureBastionSubnet を作成 (最小 /26)
    • Bastion 展開後に VM からパブリック IP を削除
    • Bastion サブネットアクセスのみを許可するように NSG ルールを更新

所見 7.2: バックアップ/リカバリソリューションなし

  • リソース: vm-devopsagent-demo
  • 問題: Microsoft.RecoveryServices プロバイダーが制限されている - Azure Backup が構成されていない可能性が高い
  • リスク: ディザスタリカバリ機能なし、データ損失リスク
  • 影響: 中 - 事業継続性リスク
  • 改善策:
    • Recovery Services コンテナーを作成
    • VM の Azure Backup を有効化
    • バックアップポリシーを構成 (保持期間: 30 日以上)
    • 復元手順をテスト
    • DR のために Azure Site Recovery を検討

所見 7.3: VM が割り当て解除状態

  • リソース: vm-devopsagent-demo
  • 問題: VM が現在割り当て解除されている (PowerState/deallocated)
  • 観察: セキュリティ体制評価が制限される - 実行中のプロセス、インストールされたソフトウェア、アクティブな構成を確認できない
  • 影響: 低 - 評価が不完全
  • 推奨: VM が実行されているべき場合、なぜ割り当て解除されているか調査
📝 低重要度の所見

所見 7.4: ネットワークセキュリティポリシー (Azure Policy) なし

  • リソース: サブスクリプション全体
  • 問題: Microsoft.Authorization プロバイダーが制限されている - Azure Policies を確認できない
  • リスク: 自動コンプライアンス強制なし
  • 影響: 低 - 手動ガバナンスが必要
  • 改善策: 以下の Azure Policy 割り当てを実装:
    • NSG なしでのリソース作成を拒否
    • ストレージと VM の暗号化を要求
    • タグ付け標準を強制
    • パブリック IP 割り当てを拒否
    • 診断設定を要求

所見 7.5: リソースタグ付けが限定的

  • リソース: すべてのリソース
  • 問題: purpose: devopsagent-azure-demo タグのみ存在
  • リスク: 所有権追跡、コスト配分、コンプライアンススコープの特定が困難
  • 影響: 低 - 運用および財務ガバナンスのギャップ
  • 改善策: 包括的なタグ付け戦略を実装:
    • Environment (dev/staging/prod)
    • Owner/Team
    • Cost Center
    • Criticality
    • Compliance scope
    • Data classification

優先順位付き改善ロードマップ

フェーズ 1: 即時対応 (24 時間以内)

  • SSH NSG ルールの制限 - 送信元を 0.0.0.0/0 から特定の IP 範囲に変更
  • 診断ログの有効化 - Microsoft.Insights プロバイダーを登録
  • Log Analytics ワークスペースの展開 - 監視基盤を確立

フェーズ 2: 短期対応 (1 週間以内)

  • Azure Key Vault の作成 - シークレット管理を確立
  • NSG フローログの有効化 - ネットワーク可視性
  • VM ブート診断の有効化 - トラブルシューティング機能
  • Azure Monitor Agent のインストール - ゲスト OS テレメトリ
  • VM でマネージド ID を有効化 - 認証情報を削除
  • セキュアな構成でストレージアカウントを作成 - ブート診断、フローログ、バックアップ
  • アクティビティログのエクスポート構成 - 監査証跡保持

フェーズ 3: 中期対応 (1 ヶ月以内)

  • Azure Bastion の展開 - VM からパブリック IP を削除
  • Defender for Cloud の有効化 - 高度な脅威保護
  • CMK でディスク暗号化を有効化 - カスタマーマネージド暗号化
  • Azure Backup の構成 - ディザスタリカバリ
  • DDoS Protection Standard の有効化 - サービス可用性
  • Azure Monitor アラートの構成 - プロアクティブ監視
  • Encryption At Host の有効化 - 包括的暗号化

フェーズ 4: 長期対応 (3 ヶ月以内)

  • Azure Firewall の展開 - 集中ネットワークセキュリティ
  • ハブアンドスポークトポロジーの実装 - ネットワークセグメンテーション
  • 新規 VM に Trusted Launch を有効化 - ブート整合性
  • Azure Policies の実装 - 自動ガバナンス
  • 脆弱性評価の展開 - 継続的セキュリティ
  • 包括的タグ付けの実装 - リソースガバナンス
  • API アクセスの要求 - 自動監査のために Microsoft.SecurityMicrosoft.Authorization を有効化

リスクサマリーマトリクス

ドメイン 重大 リスクレベル
ネットワークセキュリティ 1 3 4 1 重大
暗号化 0 4 1 0
ID・アクセス管理 1 2 1 0 重大
ストレージセキュリティ 0 0 1 0
ログ・監視 2 3 1 0 重大
Security Center 0 2 0 0
その他 0 0 2 2
合計 3 7 6 3 高リスク

改善工数見積もり

  • 即時修正 (フェーズ 1): 4-8 時間
  • 短期修正 (フェーズ 2): 2-3 日
  • 中期修正 (フェーズ 3): 1-2 週間
  • 長期修正 (フェーズ 4): 3-4 週間
  • 合計推定工数: 完全な改善に 6-8 週間

コスト影響

すべての推奨事項を実装すると、追加の Azure コストが発生します:

  • Azure Bastion: 月額約 $140-180 (Standard SKU)
  • DDoS Protection Standard: 月額約 $2,944 (サブスクリプション全体)
  • Log Analytics ワークスペース: GB あたり約 $2-5 + 保持コスト
  • Defender for Cloud (Servers): VM あたり月額約 $15
  • Azure Backup: 1 VM あたり月額約 $10-20
  • ログ/バックアップ用ストレージ: 月額約 $20-50
  • Key Vault 操作: 最小限 (月額約 $1-2)
  • NSG フローログストレージ: 月額約 $5-15

推定追加月額コスト: $200-300 (DDoS Protection Standard を除く)
DDoS Protection Standard を含む: $3,200-3,500/月

注意: DDoS Protection Standard はサブスクリプション全体をカバーし、複数の VNet やパブリック IP が存在する場合はコスト効率的です。

結論

この Azure サブスクリプションは、複数の重大なギャップを持つ 高リスク のセキュリティ体制を示しています:

主要な脆弱性:

  • IP 制限なしでインターネットに SSH が公開 (重大)
  • 監視とログインフラの完全な欠如 (重大)
  • Security Center の可視性や高度な脅威保護なし
  • カスタマーマネージドキーによる暗号化の欠如
  • バックアップまたはディザスタリカバリ機能なし

特定された強み:

  • 最小限の攻撃面 (単一 VM 展開)
  • SSH キー認証が強制されている (パスワード認証無効)
  • Network Watcher インフラが存在 (ただし活用されていない)
  • 標準 NSG デフォルトルールが適切に構成されている

即座の対応が必要: 最も重大なセキュリティギャップである、インターネットからの無制限 SSH アクセスは、潜在的な侵害を防ぐために即座に対処する必要があります。これに続いて、セキュリティ可視性のために包括的なログと監視を確立することが不可欠です。

総合評価: この環境は開発/デモセットアップ ("devopsagent-azure-demo") のようであり、本番グレードのセキュリティは必要ないかもしれません。ただし、このインフラが機密データを扱う場合、または本番ネットワークからアクセス可能な場合は、すべての重大および高重要度所見の即時改善が必須です。

ここまで来ると、もはや「リソース状態の確認」ではなく 初動セキュリティ監査レポートが出てくる という感覚です。

網羅性は一括が圧倒的。ただしツール呼び出しと所要時間のコストは桁違い。「初動の棚卸し」「定期監査」は一括、「インシデント時のピンポイント調査」は個別、と使い分けるのが現実的で良さそうです。(これはAzureに限らずですが・・・)

ちょっと脱線。多層防御の話

ここまで見てきたとおり、Reader ロール 1 つでも意外と広く読み取れます。構成情報、セキュリティ設定、関連リソースの相関、一括棚卸しでの 19 件の懸念を検出とかなりの範囲です。

ここで少し気になるのが、「AI Agent にこれだけ広い読み取り権限を渡して大丈夫なのか? もし Agent が攻撃者に乗っ取られたら?」という懸念。AI Agent ならではのリスクを、DevOps Agent はどう抑え込んでいるのか、少し脱線して補足しておきます。

想定されている攻撃の 1 つ ─ プロンプトインジェクション

AI Agent への代表的な脅威に プロンプトインジェクション があります。攻撃者がリソースタグやログなどに「VM を全部削除して」のような悪意ある指示文をこっそり仕込み、Agent を意図しない動作に誘導する手口です。

Agent は外部データを読んで調査・判断するのが仕事なので、構造的に避けられない脅威です。AI Agent 特有のリスクと言えます。

独立した 4 層で守る

こうした攻撃に対して、AWS DevOps Agent の公式セキュリティドキュメント では 4 つの独立した防御層 が挙げられています。

No 防御層 どう守るか
1 Limited write capabilities Agent のツール自体が変更操作を持たない (Read-only 設計)
2 Account boundary enforcement Azure RBAC で割り当てられた範囲を超えられない (Reader が担う)
3 AI safety protections ASL-3 モデルがプロンプトインジェクションを検出してブロック
4 Immutable audit trail 思考過程と操作が改ざん不可能なジャーナルに記録

ポイントは それぞれが独立している ということ。どれか 1 つの層が破られても、別の層が止めてくれる設計です。

Reader ロールのみの付与は、ちょうど 第 2 層 (Azure RBAC) を成立させる役割 を担っています。Write 権限のあるロールを足してしまうと第 2 層が外れ、防御が薄くなるだけ。
これが 公式ドキュメント (Azure 接続)Reader 1 つだけの付与 が指定されている理由です。

まとめ

最後ちょっと脱線してしまいましたが、Reader ロール 1 つでどこまで Azure を覗けるのか?いろいろなプロンプトを投げて確かめてみました。検証してわかったことを整理しておきます。

  • 思っていた以上に深く見える
    • VM の セキュリティプロファイル のような細かい設定や、関連リソースの相関関係まで Reader ロール 1 つで届く
  • Agent が解釈までしてくれる
    • 単に値を返すだけでなく、リスク評価・修復策・是正ロードマップまで自発的に出してくる
  • 一括棚卸しの網羅性が凄い
    • 1 プロンプトで 19 件の懸念を検出 + 段階別の改善ロードマップ + 改善コストの試算まで自発的にレポート
  • 「何ができるの?」と Agent 自身に聞くのも有効
    • 鵜呑みは禁物だが、検証の入り口として便利
  • Reader より絞った最小権限カスタムロールも公式に提示されている
    • 本番運用ではトレードオフを意識して選択

ざっくり言えば、Reader ロール権限 1 つで Azure 環境の調査基盤がほぼ揃うということです。PoC でとりあえず動かしてみるなら Reader ロールで十分すぎますし、本番運用に乗せる段階で最小権限カスタムロールへ移行する、という段階的なアプローチが現実的だと思います。

便利そうなので、気になっていた方はぜひぜひ試していただけますと幸いです!

以上、大阪オフィスの林がお送りしました!

Microsoft Azure の利用費割引・活用サポート提供中!

クラスメソッドは、Microsoft Azureのうち特に生成AI領域に強みがあります。AWSの総合支援をメインに5,000社以上支援してきた実績をベースに、特にマルチクラウドでビジネスを最大化したいお客様に引き合いを頂いております。

Microsoft Azure 請求代行・技術支援サービスを詳しく見る

この記事をシェアする

関連記事