Skip to main content

CloudSecGPT super-charges raw cloud-security findings with AI. Analyzes OCSF/Parquet exports and live data from AWS Security Hub, GCP Security Command Center, and Azure Defender to provide risk scores, summaries, remediation steps, alert clustering, and interactive chat capabilities.

Project description

CloudSecGPT logo

CloudSecGPT super‑charges raw cloud‑security findings with AI. Give it an OCSF/ASFF/Parquet export – or pull live from AWS Security Hub, GCP Security Command Center, or Azure Defender – and it spits out:

  • Risk score (1‑10) for every finding
  • One‑line summary, business impact & concise remediation
  • Copy‑‑pasteable CLI fix command
  • Groups to slash alert fatigue
  • A gorgeous self‑contained HTML report
  • An interactive chat so you can ask “why?” & “how do I fix this?” on the fly

✨ Feature Matrix

Pillar Highlights
Sources • JSON-OCSF/JSON-ASFF/Parquet
--security-hub live pull
--gcp-scc org / folder / project
--azure-defender subscription
Analyze Enriches every finding → risk_score, summary, why, cli_fix, remediation
Groups Groups by resource_type + summary → noise ↓, signal ↑
Outputs 3 artefacts in --out dir:
analyzed.csv · grouped.csv · report.html
Chat cloudsecgpt chat → conversational Q&A with full context
LLM back‑ends openai · bedrock · ollama (local) · gemini · MCP client
Smart cache File + prompt hashed (BLAKE2b) → no double billing
Progress UI Tidy Rich bar with live findings counter

📦 Install

pip install cloudsecgpt

(Requires Python ≥ 3.9)

Developers:

git clone https://github.com/MrCloudSec/CloudSecGPT.git
cd CloudSecGPT && poetry install

⚙️ Quick start

export OPENAI_API_KEY=...
cloudsecgpt analyze --file path/to/JSON-OCSF/JSON-ASFF/Parquet \
  [--provider openai] [--model gpt-4o-mini] \
  [--batch 20] [--workers 8] \
  [--out ./out]
  • ./out/analyzed_<timestamp>.csv – full table sorted by highest risk
  • ./out/grouped_<timestamp>.csv – de‑duplicated view
  • ./out/report_<timestamp>.html – share‑ready report (logo, chart, sticky headers)

analyze.gif

Live pulls

# AWS Security Hub via AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and optional AWS_SESSION_TOKEN env vars
cloudsecgpt analyze --security-hub [-o out/]

# GCP SCC (auto‑detect single org) via GOOGLE_APPLICATION_CREDENTIALS env var or gcloud auth application-default login
cloudsecgpt analyze --gcp-scc [org/folder/projectID] [-o out/]

# Azure Defender (single subscription auto) via AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID env vars or az login
cloudsecgpt analyze --azure-defender [subscriptionID] [-o out/]

security-hub.gif

Chat mode

# Chat with the context of a file
cloudsecgpt chat findings.json

# Chat with the context of Security Hub via AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and optional AWS_SESSION_TOKEN env vars
cloudsecgpt chat --security-hub

# Chat with the context of GCP SCC via GOOGLE_APPLICATION_CREDENTIALS env var or gcloud auth application-default login
cloudsecgpt chat --gcp-scc

# Chat with the context of Azure Defender via AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID env vars or az login
cloudsecgpt chat --azure-defender

Ask anything – context is streamed from the analyzed findings.

chat.png


🐳 Docker

# Pull and run
docker run --rm -v $(pwd):/data -e OPENAI_API_KEY=your_key \
  mrcloudsec/cloudsecgpt:latest analyze /data/findings.parquet -o /data/out
# Build locally
git clone https://github.com/MrCloudSec/CloudSecGPT.git
cd CloudSecGPT && docker build -t cloudsecgpt .
docker run --rm -v $(pwd):/data cloudsecgpt analyze /data/findings.parquet -o /data/out

🔌 Providers

Flag Notes
openai OPENAI_API_KEY env var
bedrock standard AWS creds via AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and optional AWS_SESSION_TOKEN env vars
ollama ollama serve on localhost:11434
gemini GEMINI_API_KEY env var
mcp Any Model‑Context‑Protocol host (--host + optional --api-key)

🧑‍💻 Extend

class MyModel:
    def call(self, messages: list[dict[str, str]]) -> str:
        ...

Register it in core.get_model() – done.


🛡️ Why CloudSecGPT?

  • 👀 Single‑pane view across AWS / Azure / GCP / K8s
  • ⚡ Cut triage time with instant clustering
  • 🧠 Explain why it matters – not just “what”
  • 🗣️ Talk to your findings like ChatGPT
  • 👐 Open‑source, pluggable, works offline with local LLMs

🤝 Contributing

PRs & issues welcome! Pre‑commit hooks run Black, Flake8 & Bandit.


📜 License

Apache‑2.0 © 2025 @MrCloudSec

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudsecgpt-0.1.1.tar.gz (960.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudsecgpt-0.1.1-py3-none-any.whl (966.7 kB view details)

Uploaded Python 3

File details

Details for the file cloudsecgpt-0.1.1.tar.gz.

File metadata

  • Download URL: cloudsecgpt-0.1.1.tar.gz
  • Upload date:
  • Size: 960.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for cloudsecgpt-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a8781119e8efe52005994ac26f40807c5df26fab6ac7a0e14c8fcb4d8d7cf55f
MD5 d97d5d70a7e0f0fd3221290d45076d15
BLAKE2b-256 4363a00fba773ccf98d24695475887dbf9a7c13400fa1d9e23353354c2128eab

See more details on using hashes here.

File details

Details for the file cloudsecgpt-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cloudsecgpt-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 966.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for cloudsecgpt-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 39a81d7e31cb0f1cacb5a764bf00aea97dbd6e987703234ff0b17e37592bc558
MD5 1aaa42c7c3847be8b6e3cdc7feea9307
BLAKE2b-256 838608da688171001d278cb345128b90f663d07f6668bbec3c57c79892d813e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page