3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


この記事は約 2,000 文字・読了 5 分 を目安に、生成 AI を使ったクラウド権限チェックの流れを紹介します。


はじめに

クラウド環境の権限設定は少しのミスで重大インシデントにつながります。しかし膨大な IAM ポリシーを手作業で確認するのは時間がかかり、ヒューマンエラーも避けられません。
そこで本記事では AWS IAM Access AnalyzerChatGPT を組み合わせ、「危険権限の自動検出 → 日本語要約レポート生成」を 10 分で行う手順 を解説します。


1. 構成イメージ

  1. Access Analyzer で外部公開や過剰権限を検出
  2. 検出結果 (JSON) をスクリプトで整形
  3. ChatGPT に投げて日本語で要約レポート生成

2. 事前準備

  • AWS CLI / IAM Access Analyzer 有効化
  • OpenAI API Key(環境変数 OPENAI_API_KEY へ設定)
  • Python 3.10 以降
pip install boto3 openai tabulate

3. Access Analyzer で検出結果を取得

# すべての finding を JSON 出力
aws accessanalyzer list-findings \
  --analyzer-name default \
  --query "findings" \
  --output json > findings.json

4. Python で ChatGPT に要約依頼

import json, os, openai
from tabulate import tabulate

openai.api_key = os.environ["OPENAI_API_KEY"]

# Load findings
with open("findings.json") as f:
    findings = json.load(f)[:20]  # 件数が多い場合は 20 件に絞る

table = [
    [f["resource"], f["createdAt"], f["status"], f["isPublic"]] 
    for f in findings
]

prompt = f"""
以下は AWS IAM Access Analyzer が検出した
危険なアクセス権限のサマリです。
脅威度が高い順に日本語で要約し、
最後に対策チェックリストを Markdown で出力してください。
"""

response = openai.ChatCompletion.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": prompt}],
    temperature=0.3,
)

with open("markdown_report.md", "w") as f:
    f.write(response.choices[0].message.content)

print("✅ レポートを markdown_report.md に出力しました")

5. 生成されたレポート(例)

### 危険度 TOP3

1. **arn:aws:s3:::public-bucket**  
   - 状態: PUBLIC  
   - 説明: 全世界から読み取り可能な S3 バケット  
   - 推奨対策: Block Public Access を有効化し、署名 URL に置き換えます。

2. **arn:aws:iam::123456789012:role/Admin**  
   - 状態: ACTIVE  
   - 説明: AdministratorAccess を持ち、MFA 未設定  
   - 推奨対策: ロールを分割し、MFA を必須化します。

3. **arn:aws:rds:ap-northeast-1:...:db:mydb**  
   - 状態: PUBLIC  
   - 説明: RDS インスタンスがパブリックサブネットに配置  
   - 推奨対策: VPC 内限定アクセスに変更し、パブリック IP を削除します。

6. よくあるハマりどころ

問題 原因 対策
レポートが長すぎてトークンエラー finding 数が多い 重要度でソートし 20 件程度に絞る
ChatGPT が英語で返す プロンプトが英語中心 「日本語で要約してください」と明記
API コストが高い トークン多消費 gpt-3.5 で下書き → gpt-4o で最終整形

7. 5 分チェックリスト

  • Access Analyzer が有効化されている
  • findings.json を定期的にスナップショット取得
  • Python スクリプトを CI に組み込み自動レポート
  • ChatGPT 出力を Slack 通知しチームで共有
  • レポートの高リスク項目を優先的に修正

まとめ

生成 AI とネイティブのセキュリティツールを組み合わせることで、
「検出 → 要約 → 共有」 までを自動化し、運用負荷を大幅に削減できます。
Qiita Tech Festa 2025 を機に、ぜひ自分のクラウド環境でも試してみてください!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?