SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Amazon Inspector v2 — EC2・Lambda・コンテナの脆弱性スキャン設計

Amazon Inspector v2の継続的脆弱性スキャン、EC2/ECR/Lambda対応、CVSSスコアによる優先度付け、リスクスコア計算、Security Hubとの統合、自動修復パターンを解説。

一言結論

Inspector v2はCVSSスコアにネットワーク到達可能性を加味した独自スコアで優先度付けするため、インターネットから到達可能な高CVSSの脆弱性を最優先で修正するという判断が機械的に行えるようになり、Security Hub経由でSSMパッチ自動適用と連携することで修正サイクルを短縮できる。

Amazon Inspector v2とは

Amazon Inspector v2は、AWSワークロードの脆弱性を継続的に自動スキャンするサービスだ。EC2インスタンス、ECRリポジトリ内のコンテナイメージ、Lambda関数を対象に既知の脆弱性(CVE)と設定ミスを検出する。

Inspector v1とは別の独立したサービスで、エージェントなしで動作する(EC2はSSM Agentを利用)。

スキャン対象

EC2インスタンス:
  - OSパッケージの脆弱性(CVE)
  - ネットワーク到達可能性の設定問題(ポート開放等)
  SSM Agentが必要(エージェントレスではない)

ECRコンテナイメージ:
  - プッシュ時に自動スキャン
  - ベースイメージのCVE
  - アプリケーション依存関係の脆弱性(OS + npm/pip等)

Lambda関数:
  - 依存パッケージの脆弱性(npm, pip等)
  - Lambda関数レイヤーの依存関係

スキャンの有効化

# Inspector v2の有効化(Organizations全体)
aws inspector2 enable \
  --account-ids 123456789012 \
  --resource-types EC2 ECR LAMBDA

# Organizationsレベルでの一括有効化
aws inspector2 update-organization-configuration \
  --auto-enable '{
    "ec2": true,
    "ecr": true,
    "lambda": true
  }'

リスクスコアとCVSSスコア

Inspector v2はCVSSスコアを基本としつつ、AWSの環境コンテキスト(到達可能性等)を加味した独自スコアを計算する。

Inspector スコア = CVSS base score + 環境コンテキスト調整

環境コンテキストの調整要素:
  - ネットワーク到達可能性(インターネットから到達可能か)
  - エクスプロイトの存在(既知の悪用コードがあるか)
  - 実際の露出状態(どのポートが開いているか)
# 優先度の高いFindingを確認
aws inspector2 list-findings \
  --filter-criteria '{
    "findingStatus": [{"comparison": "EQUALS", "value": "ACTIVE"}],
    "severity": [
      {"comparison": "EQUALS", "value": "CRITICAL"},
      {"comparison": "EQUALS", "value": "HIGH"}
    ]
  }' \
  --sort-criteria '{"field": "INSPECTOR_SCORE", "sortOrder": "DESC"}'

ネットワーク到達可能性の検出

Inspector v2はEC2インスタンスへのネットワークパスを分析し、インターネットから到達可能なポートを検出する。

検出できる設定問題:
  - セキュリティグループで0.0.0.0/0からSSH(22)を許可
  - パブリックIPを持つインスタンスへの広範なポート許可
  - セキュリティグループのルール連鎖による意図しない公開

Finding例:
  Network reachability on tcp port 22 
  → インターネットからSSHポートに到達可能

Security Hubとの統合

Inspector v2のFindingはSecurity Hubに自動転送される。

Inspector Finding → Security Hub → EventBridge → Lambda(自動修復)

自動修復の例:
  - Critical CVEを持つEC2インスタンスを隔離(SGをQuarantine SGに変更)
  - SSMパッチマネージャーで即時パッチ適用
  - ECRのリポジトリタグで脆弱なイメージにラベル
# Inspector FindingのEventBridge処理
def handler(event, context):
    for finding in event['detail']['findings']:
        severity = finding['severity']
        resource_type = finding['resources'][0]['type']
        
        if severity == 'CRITICAL' and resource_type == 'AWS_EC2_INSTANCE':
            instance_id = finding['resources'][0]['id'].split('/')[-1]
            
            # SSMパッチマネージャーでパッチを即時適用
            ssm = boto3.client('ssm')
            ssm.send_command(
                InstanceIds=[instance_id],
                DocumentName='AWS-RunPatchBaseline',
                Parameters={
                    'Operation': ['Install'],
                    'SnapshotId': ['{{ssm:patchbaselineid}}']
                }
            )

ECRコンテナのスキャン設定

# ECRリポジトリでInspector v2スキャンを確認
aws ecr describe-images \
  --repository-name my-app \
  --query 'imageDetails[?imageManifestMediaType!=`null`].{Tag:imageTags,ScanStatus:imageScanStatus.status,Findings:imageScanFindingsSummary}'

# プッシュ時の自動スキャン設定
aws ecr put-image-scanning-configuration \
  --repository-name my-app \
  --image-scanning-configuration scanOnPush=true

CIS OSのベンチマーク準拠確認

EC2インスタンスのOSがCISベンチマークに準拠しているかもチェックできる(Inspector v2の設定確認スキャン)。

EC2設定スキャンで検出できる問題:
  - パスワードポリシーが弱い
  - 不要なサービスが実行中
  - SSH設定の問題(rootログイン許可等)
  - ファイルシステムのパーミッション設定

Inspector Classic(v1)との違い

Inspector v1(レガシー):
  EC2のみ対象
  エージェントが必要
  手動または定期スキャン
  
Inspector v2(現在推奨):
  EC2 + ECR + Lambda対応
  SSM Agent(EC2の場合)
  継続的スキャン(ソフトウェア変更時に自動)
  Security Hub統合
  組織レベルの一括管理

試験頻出ポイント

  • Inspector v2はEC2/ECR/Lambdaの継続的脆弱性スキャン
  • EC2スキャンにはSSM Agentが必要
  • CVSSスコアにネットワーク到達可能性等を加味したInspectorスコアを使う
  • ECRのプッシュ時スキャンは別設定(Inspector v2 + ECRスキャン)
  • FindingはSecurity Hubに集約できる

まとめ

Inspector v2は「何の脆弱性があり、どこが最もリスクが高いか」を継続的に可視化する。ネットワーク到達可能性を考慮したリスクスコアで優先度付けし、高スコアのFindingから対処することが効率的なセキュリティ改善につながる。