AWS Inspectorの活用ガイド:Security Hub・GuardDutyとの違いを徹底比較
要約(Summary)
- AWS Inspectorとは?
自動化された脆弱性診断サービスで、ホストやコンテナ、サーバレス環境のセキュリティチェックを実施。 - 主な機能
- OSやアプリケーションの脆弱性スキャン
- ソフトウェア構成のベストプラクティス検証
- カスタムルールの作成・適用
- 活用シナリオ
- 定期的なセキュリティチェックの自動化
- デプロイ前の脆弱性検出
- CI/CDパイプラインへの組み込みサンプル
- Security Hub・GuardDutyとの違い
- Inspector:脆弱性診断に特化
- Security Hub:複数サービスの検知結果を一元管理
- GuardDuty:異常挙動検出(ログ・フロー分析)
- 対象読者
- セキュリティエンジニア、DevOpsエンジニア、SRE、クラウド管理者
1. はじめに:なぜ脆弱性診断が重要か
現代のクラウド環境では、瞬時にサーバを立ち上げ、コードをデプロイすることが可能です。その一方で、小さな設定ミスやパッチ未適用のまま稼働させてしまうと、サイバー攻撃のリスクが大幅に高まります。
AWS Inspectorは、こうしたリスクを軽減し、安心してクラウドリソースを運用するための自動スキャンサービスです。
以下のような方に特におすすめです:
- 定期的な脆弱性診断を自動化したい
- デプロイ前後にセキュリティチェックを組み込みたい
- 専門知識が浅いチームメンバーにも簡単に運用を任せたい
2. AWS Inspectorとは?
2.1 概要
AWS Inspectorは、Amazon Web Servicesが提供するマネージド型の脆弱性診断サービスです。EC2インスタンスやECS/EKS上のコンテナ、さらにはLambda関数などに対して自動的にセキュリティ評価を実行できます。
2.2 主な機能
- ネットワーク到達可能性スキャン
- インスタンスのパブリック/プライベートIPへの到達性をチェック
- 不要なポート開放の検出
- 脆弱性スキャン(CVEベース)
- OSやミドルウェアの既知脆弱性をCVE識別子と紐付け
- 最新の脆弱性データベースと連携
- セキュリティベストプラクティス検証
- CISベンチマークやAWSベストプラクティスに準拠して設定検証
- カスタムルールの作成
- 独自のセキュリティ要件に合わせたルールをYAML形式で定義
- 詳細レポート生成
- 時系列でのスキャン結果比較
- SlackやEメール通知との連携
3. AWS Inspectorの導入と基本的な使い方
3.1 導入手順
- Inspectorエージェントのインストール
# Amazon Linuxの場合 sudo yum install amazon-inspector sudo systemctl start amazon-inspector
- インスペクションテンプレートの作成
- AWSマネジメントコンソールまたはAWS CLIでテンプレート定義
- 対象ターゲット(タグ指定やセキュリティグループ指定)を設定
- スキャン実行
aws inspector start-assessment-run \ --assessment-template-arn arn:aws:inspector:... \ --assessment-run-name "DailyScan-$(date +%Y%m%d)"
- 結果確認・レポート取得
aws inspector list-findings \ --assessment-run-arns arn:aws:inspector:... aws inspector get-findings --finding-arns <FINDING_ARN>
3.2 CI/CDパイプラインへの組み込み例
# GitHub Actions の例
jobs:
security_scan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Push image to ECR
run: |
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin <ECR_URI>
docker push <ECR_URI>/myapp:${{ github.sha }}
- name: Trigger Inspector Scan
run: |
aws inspector start-assessment-run \
--assessment-template-arn arn:aws:inspector:... \
--assessment-run-name "CI-CD-Scan-${{ github.sha }}"
- name: Check Findings
run: |
FINDINGS=$(aws inspector list-findings --assessment-run-arns arn:aws:inspector:...)
if [ -n "$FINDINGS" ]; then
echo "Vulnerabilities found"
exit 1
fi
4. Security Hub・GuardDutyとの違い
4.1 AWS Security Hub
- 役割:複数のセキュリティサービス(Inspector, GuardDuty, Macieなど)の結果を集約し、一元管理・可視化
- 機能:
- セキュリティ標準の自動チェック(CIS AWS Foundationsなど)
- Findingsの統合ダッシュボード
- 他サービスへの自動リメディエーション連携
- 適用シーン:
- 複数AWSアカウントのセキュリティ状況をまとめて把握
- ガバナンス要件に応じた標準準拠チェック
4.2 Amazon GuardDuty
- 役割:ログやフロー(VPC Flow Logs, CloudTrail, DNS Logsなど)を解析し、異常挙動を検出
- 機能:
- 不審なAPIコール検知
- マルウェア通信の兆候検出
- 異常ポートスキャンやブルートフォース攻撃の検知
- 適用シーン:
- リアルタイムでの侵入検知(IDS)
- インシデント対応時のフォレンジック
サービス | 主な目的 | データソース | 結果 |
---|---|---|---|
Inspector | 脆弱性診断・評価 | エージェント、ホスト内環境 | CVEリスト、ベストプラクティス違反 |
Security Hub | 結果の統合管理 | Inspector, GuardDuty, Macie… | 統合ダッシュボード |
GuardDuty | 異常検知(IDS) | CloudTrail, VPC Flow Logs… | 異常アクティビティ検知 |
5. 実践サンプル:Webアプリケーションの定期スキャン設定
5.1 シナリオ
- 対象:ECS Fargateで動作するWebアプリ
- 要件:毎週月曜日午前2時に脆弱性診断を実施し、検出結果をSlack通知
5.2 実装例
- Lambda関数作成
import boto3 import os import requests inspector = boto3.client('inspector') SLACK_WEBHOOK = os.environ['SLACK_WEBHOOK'] def lambda_handler(event, context): run = inspector.start_assessment_run( assessmentTemplateArn=os.environ['TEMPLATE_ARN'], assessmentRunName='WeeklyScan' ) findings = inspector.list_findings( assessmentRunArns=[run['assessmentRunArn']] )['findingArns'] msg = f"【Inspector結果】検出数: {len(findings)}件" requests.post(SLACK_WEBHOOK, json={'text': msg})
- EventBridgeルール設定
- cron式:
cron(0 2 ? * MON *)
- ターゲット:上記Lambda関数
- cron式:
6. まとめと今後の展望
AWS Inspectorは、クラウドネイティブ環境における脆弱性診断を自動化し、運用負荷を軽減する強力なツールです。Security HubやGuardDutyと組み合わせることで、**「脆弱性診断」+「統合管理」+「異常検知」**の三位一体で、より堅牢なセキュリティ体制を構築できます。
ポイント再確認
- Inspector:脆弱性診断に特化
- Security Hub:結果の統合・可視化
- GuardDuty:ログ解析による異常検知
ぜひこの記事を参考に、AWS環境でのセキュリティチェックを包括的に自動化し、安全・安心なクラウド運用を実現してくださいね。