目次

AWS IoT Device Defender 完全ガイド v2.0

初心者から実務者向けの包括的解説

AWS IoT Device Defender は、IoT デバイスフリートのセキュリティ監査と異常行動検出を統合したサービスです。デバイス設定の定期監査(証明書有効期限・過度に緩いポリシー・未承認エンドポイント)、ML ベースの異常行動検出(不審な通信パターン・データ量急増),自動軽減アクション(ポリシー剥奪・デバイス隔離)を提供します。数万~数十万台のデバイスフリート全体を継続的に監視し、PCI DSS・FDA・IEC 62304 などのコンプライアンス証拠を自動生成する、エンタープライズグレードの IoT セキュリティプラットフォームです。


目次

  1. 概要
  2. IoT Device Defender が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. コアコンポーネント
  6. 主要ユースケース
  7. Audit(監査)詳細
  8. Detect(異常検出)詳細
  9. 設定・操作の具体例
  10. カスタムメトリクス
  11. 類似サービス比較表
  12. ベストプラクティス
  13. トラブルシューティング
  14. 2025-2026 最新動向
  15. 学習リソース・参考文献
  16. 実装例・チェックリスト
  17. まとめ

概要

AWS IoT Device Defender とは

AWS IoT Device Defender は IoT デバイスセキュリティ監査・異常検出・自動軽減プラットフォーム として機能し、以下を統合提供します:

  • Audit(監査): 設定ミス・セキュリティリスクの定期検査
  • Detect(異常検出): ルールベース・ML ベースの動作異常検出
  • Device-side Metrics: デバイス上で収集する動作指標
  • Cloud-side Metrics: AWS 側で観測する通信パターン
  • Mitigation Actions: 問題デバイスへの自動対応
  • Compliance Reporting: 監査証跡・レポート自動生成

ユースケースの広がり

  • スマートホーム 100万台の証明書有効期限・ポリシー監視
  • 工場 IoT センサーの異常通信パターン検出(マルウェア早期発見)
  • 医療機器(IIoT)の未承認エンドポイント通信ブロック
  • 自動運転・コネクテッドカーのセキュリティ継続監視
  • PCI DSS / FDA コンプライアンス自動監査ログ生成

IoT Device Defender が解決する課題

課題 従来の方法 Device Defender での解決
大規模デバイス監査 Excel で手動追跡。数千台超で管理不可 数万~100万台の自動監査
証明書有効期限管理 定期 SSH での確認・Excel 更新が煩雑 自動スキャン・失効デバイスリスト自動生成
セキュリティポリシー監視 ポリシー変更を手動チェック。漏れ多発 過度に緩いポリシーを自動検出
デバイス盗難・マルウェア検知 ログ検索が必要。対応遅延 ML で異常通信パターン即座検出・アラート
コンプライアンス監査 手動ドキュメント作成。時間・コスト増 監査ログ自動記録・FDA・PCI DSS 対応報告書生成
不正接続検出 VPC Flow Logs を手動分析 未承認 IP・ポートへの接続自動検出・ブロック
デバイス隔離対応 手動でポリシー修正・証明書無効化 Mitigation Action で自動隔離

主な特徴

✅ 自動セキュリティ監査(Audit)

定期スケジュールで 14+ チェック項目を自動実行:

✓ ルート CA 証明書が失効しているか
✓ デバイス証明書の有効期限切れ
✓ IoT ポリシーが過度に緩い(ワイルドカード過多)
✓ 同一証明書を複数デバイスが共有
✓ IAM ロール別名が過度に緩い
✓ Cognito ロールが未承認サービスアクセス可能
✓ ロギング無効化
✓ 長期間未接続デバイス(放置デバイス)

✅ ML ベース異常検出(ML Detect)

機械学習モデルで「通常と異なる動作」を自動検出:

✓ 通常と異なる宛先 IP・ポートへの接続
✓ メッセージサイズの異常(大量データ送信)
✓ MQTT 接続・切断頻度の異常
✓ 認証失敗の急増
✓ インバウンド通信の異常(DDoS の兆候)
✓ クライアント証明書の異常利用

✅ ルールベース検出(Rules-based Detect)

静的スレッショルドで既知の脅威を検出:

  • ✓ ポート走査検出(未承認ポートへの大量接続試行)
  • ✓ メッセージ量スパイク(通常の 3 倍以上)
  • ✓ 未承認エンドポイント通信
  • ✓ バックドア・Command & Control(C&C)通信パターン

✅ Device-side Metrics

デバイス自身で測定・レポート:

✓ CPU 使用率
✓ メモリ使用率
✓ ディスク容量使用率
✓ ネットワークインターフェース数
✓ TCP・UDP ポートオープン数
✓ ディスク操作数
✓ プロセス実行数

✅ Cloud-side Metrics

AWS 側で観測する通信パターン:

✓ バイト受信数
✓ バイト送信数
✓ パケット受信数
✓ パケット送信数
✓ 接続試行数
✓ 接続確立数
✓ 切断数

✅ 自動軽減アクション(Mitigation)

問題検出時の自動対応:

✓ デバイス証明書を自動無効化
✓ IoT ポリシーを自動制限
✓ Thing Group から削除
✓ CloudWatch Alarm 発火
✓ SNS 通知
✓ Lambda 関数起動(カスタム対応)

アーキテクチャ

┌──────────────────────────────────────────────────────────────┐
│ IoT デバイスフリート                                         │
├──────────────────────────────────────────────────────────────┤
│ • スマートホーム・スマートシティ                             │
│ • 工場・インフラ IoT センサー                               │
│ • 医療機器・ウェアラブル                                    │
│ • コネクテッドカー・自動運転                                │
└──────────────────┬──────────────────────────────────────────┘
                   │
        ┌──────────▼──────────────────────────┐
        │ AWS IoT Device Defender             │
        ├─────────────────────────────────────┤
        │                                     │
        │ ┌─ Audit(定期監査)────────────┐  │
        │ │ • 日次・週次・月次スケジュール │  │
        │ │ • 14+ チェック項目実行        │  │
        │ │ • 監査レポート生成            │  │
        │ └─────────────────────────────┘  │
        │                                     │
        │ ┌─ Detect(異常検出)───────────┐  │
        │ │ • Rules-based Detect          │  │
        │ │ • ML Detect(14日学習)       │  │
        │ │ • Custom Metrics              │  │
        │ └─────────────────────────────┘  │
        │                                     │
        │ ┌─ Mitigation(自動軽減)───────┐  │
        │ │ • ポリシー自動修正            │  │
        │ │ • 証明書無効化                │  │
        │ │ • Thing 隔離                  │  │
        │ └─────────────────────────────┘  │
        └──────────────┬──────────────────┘
                       │
       ┌───────────────┼───────────────┬──────────┐
       │               │               │          │
   ▼   ▼           ▼   ▼           ▼   ▼      ▼   ▼
 CloudWatch     S3           SNS       Lambda   IoT Core
 Alarms        Logs         Alerts    Custom    Publish
                                      Action    Policy

コアコンポーネント

1. Security Profile(セキュリティプロファイル)

デバイスグループの期待動作を定義。以下で構成:

{
  "securityProfileName": "SmartHomeProfile",
  "targetArns": [
    "arn:aws:iot:us-east-1:123456789012:thinggroup/all-devices"
  ],
  "behaviors": [
    {
      "name": "num-connection-attempts",
      "metric": "aws:num-connection-attempts",
      "criteria": {
        "comparisonOperator": "LESS_THAN",
        "value": 5,
        "statisticalThreshold": {
          "statistic": "p90",
          "period": 300
        }
      },
      "suppressAlerts": false
    },
    {
      "name": "message-byte-size",
      "metric": "aws:message-byte-size",
      "criteria": {
        "mlDetectionConfig": {
          "confidenceLevel": "HIGH"
        }
      }
    }
  ],
  "alertTargets": {
    "SNS": {
      "alertTargetArn": "arn:aws:sns:us-east-1:...:iot-alerts",
      "roleArn": "arn:aws:iam::...:role/IoTDefenderRole"
    }
  }
}

2. Behavior(動作定義)

Single behavior が複数メトリクス監視:

Behavior Type 説明
Threshold-based 静的値との比較 Connection attempts > 10/min
ML-based(ML Detect) 機械学習で異常検出 Message size の異常
Statistical 過去データの p90・平均から外れたら検出 CPU 使用率が p90 超過

3. Audit Checks(監査項目)

14+ チェック:

1. AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK
2. CA_CERTIFICATE_EXPIRING_CHECK
3. CA_CERTIFICATE_KEY_QUALITY_CHECK
4. CONFLICTING_CLIENT_IDS_CHECK
5. DEVICE_CERTIFICATE_EXPIRING_CHECK
6. DEVICE_CERTIFICATE_KEY_QUALITY_CHECK
7. DEVICE_CERTIFICATE_SHARED_CHECK
8. IOT_POLICY_OVERLY_PERMISSIVE_CHECK
9. IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK
10. IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK
11. LOGGING_DISABLED_CHECK
12. REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK
13. REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK
14. UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK

4. Scheduled Audit(監査スケジュール)

定期実行設定:

aws iot create-scheduled-audit \
  --scheduled-audit-name daily-security-audit \
  --frequency DAILY \
  --day-of-month 1 \
  --target-check-names \
    DEVICE_CERTIFICATE_EXPIRING_CHECK \
    IOT_POLICY_OVERLY_PERMISSIVE_CHECK \
    CA_CERTIFICATE_EXPIRING_CHECK

5. Mitigation Action(軽減アクション)

問題デバイスへの自動対応:

{
  "actionName": "revoke-compromised-certificate",
  "actionType": "UPDATE_DEVICE_CERTIFICATE",
  "actionParams": {
    "updateDeviceCertificateParams": {
      "action": "DEACTIVATE"
    }
  }
}

主要ユースケース

✅ 1. スマートホーム 100万デバイス監視

監視内容:
- 証明書有効期限: 30 日以内に失効 → リスト作成・通知
- ポリシーチェック: 過度に緩い → 修正推奨リポート
- 長期未接続: 90 日以上 → 放置デバイスリスト生成

頻度: 週次監査
レポート対象: IT 部長・セキュリティチーム

✅ 2. 工場 IIoT マルウェア検知

異常通信検出:
- エンジニアリングステーション以外への通信 → ML 検出・アラート
- ポート走査検出: 同一デバイスが 50+ 別ポートへ接続試行
  → Mitigation: そのデバイスのポリシーを「接続禁止」に自動変更
- バイト送信量 5x 増加: 5 分以内に通常の 5 倍 → 隔離

効果:
- マルウェア感染デバイス早期検知(平均 2 時間以内)
- 自動隔離で他デバイスへの感染防止

✅ 3. 医療機器(IIoT)コンプライアンス対応

監査項目:
- HIPAA 要件: デバイス証明書の 2 年有効期限
  → 定期監査で失効 90 日前に通知
- FDA 21 CFR Part 11: 監査証跡の改ざん不可
  → Device Defender 監査ログを S3 に自動保存・WORM 設定

レポート:
- 月次監査レポート → FDA 監査対応資料として直接使用

✅ 4. 自動運転・コネクテッドカー security

監視:
- V2X(Vehicle-to-Everything)通信: 未承認 RSU との通信検出
- GPS スプーフィング検出: GPS データの異常値(時速 500km など)
- 異常な アクセル・ブレーキコマンド: エンジニアリング環境以外から

対応:
- 通信異常: 車両に警告表示・低速走行指示
- コマンド異常: ブレーキ・アクセル無効化(Fail-Safe)

✅ 5. PCI DSS コンプライアンス監査

Device Defender Audit で自動チェック:
- CIS Benchmarks for IoT への準拠確認
- デバイス設定の暗号化有効化確認
- アクセスコントロールリスト(ACL)の妥当性

結果:
- 監査スコア: 100 点換算
- 準拠状況を月次レポート化 → PCI DSS 監査対応

✅ 6. 農場 IoT センサー制御

異常検出:
- 土壌水分センサー: 通常は 5 秒ごとデータ送信
  異常: 1 秒ごと送信(50+ 倍)→ ハードウェア故障・データ漏出の兆候
  
- 気象ステーション: GPS 座標の急激な変化
  → デバイス盗難の可能性

対応:
- Mitigation: そのデバイスからのデータ受信停止
- SNS で農場管理者に盗難・故障通知

✅ 7. 建設・レンタル機械の盗難防止

監視:
- ドーザー・ショベルカーの GPS から位置情報取得
- 通常は工事現場 A(北緯 35.6762, 東経 139.6503)
- 異常: 深夜に東京湾(北緯 35.4437, 東経 139.7677)に移動
  → デバイス盗難の可能性高い

対応:
- 緊急アラート発火(警察に連絡)
- GPS 発信停止して盗難リスク軽減(相手先 GPS デバイス無効化)

✅ 8. ウェアラブル医療機器の異常検出

Patient Device Monitoring:
- 心拍計: 通常 60-100 bpm
  異常: 30 bpm 未満・150 bpm 超過 → 医療上の危機
  
- バッテリー: 通常 1% / 日 減衰
  異常: 10% / 日 減衰 → バッテリー劣化・交換推奨

対応:
- 医療専門家への即時アラート
- デバイス交換・修理フローの自動起動

✅ 9. 石油・ガス採掘施設の圧力制御

IoT センサー監視:
- パイプラインの圧力: 通常 150 bar
- 異常: 200 bar 超過(10+ 時間)
  → パイプ破裂・爆発の危機

ML Detect:
- 圧力・温度・流量の複合パターン学習
- 異常パターン検出(過去 14 日の学習に基づく)

Mitigation:
- 圧力弁自動開放(物理的安全装置と連携)
- 作業者に警告 LED・アラート発火

✅ 10. スマートシティ街灯管理

Monitoring:
- 街灯群 50万+ 台の状態管理
- 定期的な証明書・ファームウェア・ポリシー監査

Problem Detection:
- 故障した街灯: 通信断 7 日以上 → 修理リスト作成
- LED 点灯異常: 消費電力 3x 増加 → 短絡の可能性

Mitigation:
- 故障デバイス自動リスト化 → 保全チームに割り当て
- 電力異常デバイスは遠隔で電源切断(追加故障防止)

✅ 11. 航空機客室乗務員用機器

Aviation Safety Compliance:
- 客室乗務員呼び出しシステム
- 乗客 WiFi アクセスポイント
- 機内 IFE(In-Flight Entertainment)

Security Monitoring:
- 航空機内ネットワークへの不正アクセス検出
- 未承認デバイスの接続ブロック
- 暗号化通信の確認

Audit Trail:
- FAA Part 25 ソフトウェアセキュリティ要件対応
- 監査ログ自動生成・改ざん防止

✅ 12. クラウドゲーム・メタバース デバイス

Monitoring:
- ゲーム内デバイス(コントローラー・ヘッドセット・カメラ)
- 接続デバイス: 1 ユーザー = 3-5 デバイス

Cheating Detection:
- 異常な入力頻度・操作パターン → チート行為検出
- 未承認 API エンドポイントへのアクセス → 非公式ツール使用検出

Mitigation:
- チートユーザーのデバイス一時的な接続禁止

Audit(監査)詳細

監査実行フロー

# 1. Scheduled Audit 作成
aws iot create-scheduled-audit \
  --scheduled-audit-name weekly-audit \
  --frequency WEEKLY \
  --day-of-week MON \
  --start-time 02:00 \
  --target-check-names \
    DEVICE_CERTIFICATE_EXPIRING_CHECK \
    IOT_POLICY_OVERLY_PERMISSIVE_CHECK \
    CA_CERTIFICATE_EXPIRING_CHECK

# 2. 監査スケジュール確認
aws iot describe-scheduled-audit \
  --scheduled-audit-name weekly-audit

# 3. 監査結果取得
aws iot list-audit-findings \
  --task-id audit-task-20260426-001 \
  --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK

# 出力例:
{
  "findings": [
    {
      "findingId": "device-cert-exp-001",
      "taskId": "audit-task-20260426-001",
      "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
      "resourceIdentifier": {
        "deviceCertificateId": "cert-abc123"
      },
      "severity": "HIGH",
      "findingTime": "2026-04-26T10:30:00Z",
      "relatedResources": [
        {
          "resourceType": "DEVICE",
          "resourceIdentifier": {
            "deviceId": "device-001"
          }
        }
      ]
    }
  ]
}

監査結果の分析

# 重大度別の集計
aws iot list-audit-findings \
  --task-id audit-task-20260426-001 \
  --query 'findings[*].severity' \
  --output text | sort | uniq -c

# チェック項目別の集計
aws iot list-audit-findings \
  --task-id audit-task-20260426-001 \
  --query 'findings[*].checkName' \
  --output text | sort | uniq -c

# 影響デバイス特定
aws iot list-audit-findings \
  --task-id audit-task-20260426-001 \
  --check-name IOT_POLICY_OVERLY_PERMISSIVE_CHECK \
  --query 'findings[*].relatedResources[0].resourceIdentifier.deviceId' \
  --output text

Detect(異常検出)詳細

ML Detect セットアップ

# 1. Security Profile 作成(ML Detect 有効)
aws iot create-security-profile \
  --security-profile-name ml-security-profile \
  --behaviors '[
    {
      "name": "connection-attempts",
      "metric": "aws:num-connection-attempts",
      "criteria": {
        "mlDetectionConfig": {
          "confidenceLevel": "HIGH"
        }
      },
      "suppressAlerts": false
    },
    {
      "name": "message-size",
      "metric": "aws:message-byte-size",
      "criteria": {
        "mlDetectionConfig": {
          "confidenceLevel": "MEDIUM"
        }
      }
    },
    {
      "name": "disconnects",
      "metric": "aws:num-disconnects",
      "criteria": {
        "mlDetectionConfig": {
          "confidenceLevel": "HIGH"
        }
      }
    }
  ]' \
  --alert-targets '{
    "SNS": {
      "alertTargetArn": "arn:aws:sns:us-east-1:...:device-alerts",
      "roleArn": "arn:aws:iam::...:role/IoTDefenderRole"
    }
  }'

# 2. Security Profile を Thing Group に適用
aws iot attach-security-profile \
  --security-profile-name ml-security-profile \
  --security-profile-target-arn arn:aws:iot:us-east-1:...:thinggroup/smart-home-devices

# 3. ML Detect 学習期間(14 日)経過後に異常検出開始

# 4. 異常検出の結果確認
aws iot list-violation-events \
  --start-time 2026-04-12T00:00:00Z \
  --end-time 2026-04-26T23:59:59Z \
  --thing-name device-001

# 出力例:
{
  "violationEvents": [
    {
      "violationId": "violation-001",
      "thingName": "device-001",
      "securityProfileName": "ml-security-profile",
      "behavior": {
        "name": "message-size",
        "metric": "aws:message-byte-size",
        "criteria": {
          "mlDetectionConfig": {
            "confidenceLevel": "HIGH"
          }
        }
      },
      "metricValue": {
        "count": 50000,  # 通常は 1000 程度
        "cidrs": ["203.0.113.0/24"]
      },
      "violationEventTime": "2026-04-26T14:30:00Z",
      "violationEventType": "in-alarm"
    }
  ]
}

ML Detect の精度

初期学習期間: 14 日間
最小データポイント数: 25,000 / メトリクス / 期間

confidence Level:
- HIGH: 99% 信頼度(誤検知が稀)
- MEDIUM: 95% 信頼度(バランス型)
- LOW: 90% 信頼度(検知感度重視)

モデル更新: 毎日(十分なデータポイント存在時)

設定・操作の具体例

CLI による監査セットアップ

# 1. On-demand 監査を即座に実行(テスト用)
aws iot start-on-demand-audit-task \
  --target-check-names \
    DEVICE_CERTIFICATE_EXPIRING_CHECK \
    IOT_POLICY_OVERLY_PERMISSIVE_CHECK

# 2. 監査タスクの進行状況確認
aws iot describe-audit-task \
  --task-id audit-task-20260426-001

# 3. 監査の中止
aws iot cancel-audit-task \
  --task-id audit-task-20260426-001

SDK(Python)での操作

import boto3
from datetime import datetime, timedelta

iot_client = boto3.client('iot')
cloudwatch = boto3.client('cloudwatch')

# Security Profile 作成
def create_security_profile():
    response = iot_client.create_security_profile(
        securityProfileName='prod-security-profile',
        behaviors=[
            {
                'name': 'message-byte-size-anomaly',
                'metric': 'aws:message-byte-size',
                'criteria': {
                    'mlDetectionConfig': {
                        'confidenceLevel': 'HIGH'
                    }
                }
            },
            {
                'name': 'connection-attempts-high',
                'metric': 'aws:num-connection-attempts',
                'criteria': {
                    'comparisonOperator': 'GREATER_THAN',
                    'value': 100,
                    'durationSeconds': 300
                }
            }
        ],
        alertTargets={
            'SNS': {
                'alertTargetArn': 'arn:aws:sns:us-east-1:...:iot-alerts',
                'roleArn': 'arn:aws:iam::...:role/IoTDefenderRole'
            }
        }
    )
    return response

# 監査結果の分析
def analyze_audit_findings(task_id):
    findings = iot_client.list_audit_findings(taskId=task_id)
    
    # 重大度別集計
    severity_count = {}
    for finding in findings['findings']:
        severity = finding['severity']
        severity_count[severity] = severity_count.get(severity, 0) + 1
    
    # CloudWatch に送信
    cloudwatch.put_metric_data(
        Namespace='IoTSecurity',
        MetricData=[
            {
                'MetricName': 'AuditFindingCount',
                'Value': len(findings['findings']),
                'Unit': 'Count',
                'Timestamp': datetime.utcnow()
            }
        ]
    )
    
    return severity_count

# 実行
security_profile = create_security_profile()
findings_analysis = analyze_audit_findings('audit-task-001')
print(f"Severity Count: {findings_analysis}")

Lambda での自動軽減

import boto3
import json

iot = boto3.client('iot')
sns = boto3.client('sns')

def lambda_handler(event, context):
    """
    Device Defender 異常検出時に Lambda トリガー
    """
    
    # SNS メッセージからの Device Defender イベント解析
    message = json.loads(event['Records'][0]['Sns']['Message'])
    
    thing_name = message['thingName']
    violation_type = message['violationEventType']
    
    print(f"Handling violation for device: {thing_name}")
    
    if violation_type == 'in-alarm':
        # 1. 問題デバイスのポリシー修正(最小権限に制限)
        try:
            response = iot.attach_policy(
                policyName='restricted-device-policy',
                target=iot.describe_thing(thingName=thing_name)['thingArn']
            )
            print(f"Restricted policy applied to {thing_name}")
        except Exception as e:
            print(f"Error attaching policy: {str(e)}")
        
        # 2. デバイスの詳細情報取得
        device_info = iot.describe_thing(thingName=thing_name)
        
        # 3. セキュリティチームに通知
        sns.publish(
            TopicArn='arn:aws:sns:us-east-1:...:security-team',
            Subject=f'URGENT: IoT Device Security Violation - {thing_name}',
            Message=f"""
Device: {thing_name}
Violation Type: {violation_type}
Device ARN: {device_info['thingArn']}
Attributes: {json.dumps(device_info['attributes'])}

Mitigation Applied:
- Restricted security policy attached
- Device connectivity limited

Next Steps:
1. Review device logs
2. Isolate device if compromised
3. Apply firmware update
4. Re-enable after verification
            """
        )
        
        return {
            'statusCode': 200,
            'body': json.dumps('Mitigation action triggered')
        }
    
    return {
        'statusCode': 400,
        'body': json.dumps('Unknown violation type')
    }

IaC(Terraform)での構築

# Terraform: Device Defender セットアップ

resource "aws_iot_security_profile" "smart_home" {
  name = "smart-home-profile"
  
  behavior {
    name = "message-size-anomaly"
    metric = "aws:message-byte-size"
    
    criteria {
      ml_detection_config {
        confidence_level = "HIGH"
      }
    }
  }
  
  behavior {
    name = "connection-attempts"
    metric = "aws:num-connection-attempts"
    
    criteria {
      comparison_operator = "GREATER_THAN"
      value = 100
      duration_seconds = 300
    }
  }
  
  alert_target {
    alert_target_arn = aws_sns_topic.iot_alerts.arn
    role_arn = aws_iam_role.device_defender.arn
  }
  
  depends_on = [
    aws_iot_thing_group.all_devices
  ]
}

resource "aws_iot_scheduled_audit" "daily" {
  name = "daily-security-audit"
  frequency = "DAILY"
  
  target_check_names = [
    "DEVICE_CERTIFICATE_EXPIRING_CHECK",
    "IOT_POLICY_OVERLY_PERMISSIVE_CHECK",
    "CA_CERTIFICATE_EXPIRING_CHECK"
  ]
  
  depends_on = [
    aws_iot_security_profile.smart_home
  ]
}

カスタムメトリクス

Device Defender では、標準メトリクス以外に カスタムメトリクス を定義可能:

# カスタムメトリクス定義
aws iot create-custom-metric \
  --metric-name battery-level \
  --metric-type "aws:number" \
  --unit "Percent"

# Security Profile でカスタムメトリクスを使用
aws iot create-security-profile \
  --security-profile-name battery-monitoring \
  --behaviors '[
    {
      "name": "low-battery",
      "metric": "battery-level",
      "criteria": {
        "comparisonOperator": "LESS_THAN",
        "value": 10,
        "durationSeconds": 300
      }
    }
  ]'

# デバイス側でカスタムメトリクスを報告
# MQTT Topic: $aws/things/{thingName}/metrics/{metricName}
# Payload:
# {
#   "value": 25,
#   "timestamp": 1704067200000
# }

類似サービス比較表

特性 Device Defender Azure Defender for IoT Palo Alto IoT Security Forescout Armis
Audit 監査 ✅ 14+ チェック項目 ✅ CIS Benchmarks △ 限定的 ✅ 詳細 △ 基本的
ML 異常検出 ✅ GA(2021+) ✅ ML Detect ✅ 高精度 ✅ エージェント型 ✅ Agentless
Device-side Metrics ✅ 7 項目 ✅ 5+ 項目 △ 限定 ✅ 詳細 △ 通信レベル
Cloud-side Metrics ✅ 7 項目 ✅ 4+ 項目 ✅ AWS 非対応 ✅ マルチベンダー ✅ AI ベース
自動軽減 ✅ Policy・Cert・Lambda △ アラート主体 △ 手動対応 ✅ 自動遮断 ✅ ポリシー制御
統合対象 AWS IoT / SiteWise Azure IoT Hub AWS 非対応 マルチベンダー マルチベンダー
コンプライアンス PCI DSS・FDA・CIS PCI DSS・HIPAA 業界標準 ISO 27001・NIST SOC 2・ISO 27001
価格モデル デバイス月額 資産数ベース 利用量 年額契約 年額契約
学習曲線 🟩 中程度 🟩 中程度 🟥 複雑 🟥 複雑 🟥 複雑
マネージド ✅ AWS マネージド ✅ Azure マネージド △ ハイブリッド △ On-premise △ On-premise

ベストプラクティス

✅ 1. Thing Group による階層管理

# ❌ すべてのデバイスに同一 Profile
aws iot attach-security-profile \
  --security-profile-target-arn arn:aws:iot:...:all-devices

# ✅ デバイスタイプ別に異なる Profile
# Smart Home デバイス
aws iot create-thing-group --thing-group-name smart-home
aws iot attach-security-profile \
  --security-profile-name smart-home-profile \
  --security-profile-target-arn arn:aws:iot:...:thinggroup/smart-home

# Industrial Sensors
aws iot create-thing-group --thing-group-name industrial-sensors
aws iot attach-security-profile \
  --security-profile-name industrial-profile \
  --security-profile-target-arn arn:aws:iot:...:thinggroup/industrial-sensors

✅ 2. ML Detect の学習期間を最大活用

  • ❌ ML Detect 有効化直後から警告
  • → モデルが未学習で誤検知多発
  • ✅ 14 日の学習期間を完了してから本運用
  • → 十分なデータ・安定した検知精度

✅ 3. Audit 監査結果の自動分析

def analyze_and_notify_audit():
    findings = iot.list_audit_findings(taskId='...')
    
    high_severity = [f for f in findings['findings'] 
                     if f['severity'] == 'HIGH']
    
    if len(high_severity) > 0:
        # 重大度 HIGH の場合は即座に通知
        sns.publish(
            TopicArn='arn:aws:sns:...:critical-alerts',
            Subject='CRITICAL: IoT Security Audit Findings',
            Message=f'Found {len(high_severity)} critical issues'
        )

✅ 4. Mitigation Action の段階的対応

{
  "actionName": "progressive-isolation",
  "steps": [
    {
      "severity": "MEDIUM",
      "action": "LOG_AND_ALERT"
    },
    {
      "severity": "HIGH",
      "action": "APPLY_RESTRICTED_POLICY"
    },
    {
      "severity": "CRITICAL",
      "action": "ISOLATE_DEVICE"
    }
  ]
}

✅ 5. 証明書有効期限の事前対応

# 定期的に有効期限切れが近いデバイスリスト取得
EXPIRING_DEVICES=$(aws iot list-audit-findings \
  --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
  --query 'findings[?severity==`HIGH`]')

# 自動で新規証明書生成・デバイスに配布
for device in $EXPIRING_DEVICES; do
  aws iot create-certificate-from-csr \
    --certificate-pem file://$device.csr
  # IoT Core または OTA Job で新規証明書配布
done

✅ 6. CloudWatch アラーム との連携

cloudwatch.put_metric_alarm(
    AlarmName='IoT-Device-Violation-Alert',
    MetricName='ViolationEventCount',
    Namespace='IoTSecurity',
    Statistic='Sum',
    Period=300,  # 5 分
    EvaluationPeriods=1,
    Threshold=5,  # 5 件以上で警告
    ComparisonOperator='GreaterThanOrEqualToThreshold',
    AlarmActions=[
        'arn:aws:sns:us-east-1:...:security-team'
    ]
)

✅ 7. IAM ロールの最小権限設計

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:AttachPolicy",
        "iot:UpdateDeviceCertificate"
      ],
      "Resource": "arn:aws:iot:*:*:thing/*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:*:*:device-alerts"
    }
  ]
}

トラブルシューティング

現象 原因 対策
ML Detect が異常を検知しない 学習期間 14 日未満 / データポイント < 25,000 CloudWatch でメトリクス数確認。14 日経過待機
Audit 監査が実行されない Scheduled Audit の スケジュール無効・時刻超過 describe-scheduled-audit で状態確認。時刻修正
Mitigation Action が失敗 Target ARN 誤り / IAM 権限不足 IAM ロールの iot:AttachPolicy 権限確認
誤検知が多すぎる ML モデルが未学習状態 / Confidence Level が低い HIGH に変更・14 日学習期間完了待機
デバイスが隔離されない Isolation Policy が存在しない IoT ポリシー「restricted-device-policy」を作成
監査レポートが生成されない Audit 結果の S3 出力先に権限なし S3 バケットポリシーで IAM ロール追加
大量デバイスの監査が遅い 一度に 100万+ デバイス監査 → タイムアウト Thing Group で分割・段階的監査

2025-2026 最新動向

📰 1. CIS Benchmarks for IoT サポート拡張

AWS IoT Device Defender が CIS Benchmarks for IoT(Level 1・2) に完全対応:

  • 自動監査で CIS スコアを点数化
  • コンプライアンス達成率(0-100%)をダッシュボード表示

📰 2. Generative AI による脅威分析

AWS Bedrock との統合で:

  • 異常検出後、生成 AI で「原因推測・対応推奨」を自動生成
  • セキュリティ分析官の作業時間を 50% 削減

📰 3. Zero Trust デバイスセキュリティ

  • デバイス証明書の短命化(24 時間単位)
  • Continuous Certification: 1 時間ごとにデバイス再認証
  • Device Defender による信頼スコア計算(リアルタイム)

📰 4. Supply Chain Security

  • デバイス製造段階での Device Defender 統合
  • 出荷前セキュリティ検査の自動化
  • Firmware Integrity Check との連携

学習リソース・参考文献

公式ドキュメント(8+)

  1. AWS IoT Device Defender Developer Guide
  2. Custom Metrics in AWS IoT Device Defender
  3. ML Detect in AWS IoT Device Defender
  4. Device-side Metrics
  5. Cloud-side Metrics
  6. AWS IoT Device Defender Concepts
  7. AWS IoT Device Defender FAQs
  8. AWS IoT Device Defender Features

パートナー・ベンダー リソース(5+)

  1. CIS Benchmarks for IoT
  2. IoT Cybersecurity NIST Framework
  3. AWS IoT Security Best Practices
  4. PCI DSS IoT Compliance Guide
  5. FDA 21 CFR Part 11 for IoT

実装例・チェックリスト

チェックリスト: Device Defender 導入前評価

  • [ ] IoT デバイスが 1,000+ 台以上か?
  • [ ] セキュリティ監査が業務要件か?(PCI DSS・FDA・ISO 27001)
  • [ ] 異常検出による自動軽減が必要か?
  • [ ] IoT Core との統合が可能か?
  • [ ] CloudWatch アラーム・SNS 通知基盤が構築済みか?
  • [ ] セキュリティ分析官の人員確保が困難か? → 自動化による効率化
  • [ ] コンプライアンス報告書の自動生成が必要か?

チェックリスト: Security Profile 設計

  • [ ] Device Type 別に異なる Profile 設計(Smart Home / Industrial / Healthcare)
  • [ ] Metric 選択が適切か(Message Size / Connection Attempts / Disconnects)
  • [ ] Confidence Level を適切に設定(HIGH / MEDIUM / LOW)
  • [ ] Alert Target を SNS・Lambda・CloudWatch で複数設定
  • [ ] Suppression Rules で誤検知軽減(メンテナンス時間帯等)

チェックリスト: 本番運用準備

  • [ ] ML Detect 14 日学習期間を完了
  • [ ] Audit スケジュール設定(日次 / 週次 / 月次)
  • [ ] Mitigation Action テスト(ポリシー制限・証明書無効化)
  • [ ] CloudWatch Logs で Device Defender アクティビティを記録
  • [ ] S3 へ監査レポートを自動エクスポート・WORM 設定
  • [ ] セキュリティチームの教育・アラート対応フロー確立
  • [ ] Cost Estimation(デバイス数 × $0.10/月 + 監査費用)

まとめ

AWS IoT Device Defender は、大規模 IoT デバイスフリート全体のセキュリティ監査・異常検出・自動軽減を実現する統合プラットフォームです。14+ 項目の自動監査、ML ベースの異常検出、段階的な軽減アクションにより、マルウェア感染・デバイス盗難・設定ミスを早期検知し、セキュリティ運用負荷を大幅に軽減します。

PCI DSS・FDA・ISO 27001 等のコンプライアンス監査ログを自動生成するため、ヘルスケア・金融・製造業などの規制産業で特に強力です。

導入効果:

  • セキュリティ監査の手動作業 90% 削減
  • デバイス異常検知を 2 時間以内に実現(従来 24 時間以上)
  • コンプライアンス監査対応時間 70% 削減
  • セキュリティインシデント検知率 95%+ 向上

最終更新:2026-04-26 バージョン:v2.0