https://cloudsentrix.netlify.app/
_____ _ _ _____ _ _
/ ____| | | |/ ____| | | (_)
| | | | ___ _ _ __| | (___ ___ _ __ | |_ _ ___ __
| | | |/ _ \| | | |/ _` |\___ \ / _ \ '_ \| __| | \ \/ /
| |____| | (_) | |_| | (_| |____) | __/ | | | |_| | > <
\_____|_|\___/ \__,_|\__,_|_____/ \___|_| |_|\__|_|_/_/\_\
v2.0.0
Multi-Cloud IAM Attack-Path Analyzer
Open-source CLI that scans GCP, AWS, Azure, Kubernetes, and Terraform for privilege-escalation risks — 40 detection rules, blast radius analysis, MITRE ATT&CK mapping, cross-cloud attack chains, and CI/CD integration. The free alternative to Wiz and Orca.
What It Does
| Target | Rules | Live Scan | Blast Radius | Dashboard | |
|---|---|---|---|---|---|
| ☁️ GCP IAM | 5 | ✅ gcloud | ✅ | ✅ | ✅ |
| 🟡 AWS IAM | 7 | ✅ boto3 + LocalStack | ✅ | ✅ | ✅ |
| 🔷 Azure RBAC | 5 | ✅ az CLI | ✅ | ✅ | ✅ |
| 🔷 Azure AD / Entra ID | 6 | ✅ az CLI | — | ✅ | ✅ |
| 🏗️ Terraform IaC + State | 11 | — | — | — | — |
| ☸️ Kubernetes RBAC | 6 | — | — | — | — |
| 🌐 Cross-Cloud Chains | — | — | — | — | ✅ JSON |
| Total | 40 rules |
Key Features
- 40 detection rules — GCP, AWS, Azure RBAC, Azure AD, Terraform, K8s — all MITRE ATT&CK mapped
- Industry-first cross-cloud attack chain detection — AWS→Azure→GCP multi-hop paths
- Blast radius — GCP, AWS, Azure all supported
- Terraform state file scanning — detect leaked secrets in
.tfstatefiles - Kubernetes RBAC scanning — cluster-admin abuse, wildcard permissions, pod exec
- Multi-cloud HTML dashboard — animated, website-theme, all clouds side by side
- Multi-cloud PDF report — cover page, executive summary, per-cloud findings
- Slack / Teams alerts — send findings after every scan
- CI/CD templates — GitHub Actions, GitLab CI, Jenkins — ready to use
- SARIF export — upload directly to GitHub Security tab
- Gemini AI summaries — plain-language executive reports
Installation
pip install cloudsentrix
Kali Linux / Debian:
pip install cloudsentrix --break-system-packages
Virtual environment:
python3 -m venv venv && source venv/bin/activate && pip install cloudsentrix
Windows:
python -m venv venv
venv\Scripts\activate
pip install cloudsentrix
From source:
git clone https://github.com/Talha-Imran-cloud/cloudsentrix.git
cd cloudsentrix && pip install -e .
cloudsentrix --version
# CloudSentrix 2.0.0
Quick Start
# GCP
cloudsentrix scan --file sample_data/sample_gcp_iam.json
# AWS
cloudsentrix scan --file sample_data/sample_aws_iam.json --cloud aws
# Azure
cloudsentrix scan --file sample_data/sample_azure_rbac.json --cloud azure
# Multi-cloud dashboard
cloudsentrix dashboard --gcp sample_data/sample_gcp_iam.json --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json --output dashboard.html
# Cross-cloud attack chains
cloudsentrix cross-cloud --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json
# Kubernetes RBAC
cloudsentrix k8s --path sample_data/sample_k8s_rbac.json
# Terraform scan
cloudsentrix terraform --path sample_data/sample_terraform/main.tf
# Terraform state secrets
cloudsentrix terraform --path sample_data/sample_terraform.tfstate
Getting Your IAM Policy File
# GCP
gcloud projects get-iam-policy YOUR_PROJECT_ID --format=json > gcp_iam.json
# AWS
aws iam get-account-authorization-details --output json > aws_iam.json
# Azure RBAC
az role assignment list --all --output json > azure_rbac.json
# Azure AD / Entra ID
az ad app list --all --output json > azure_ad.json
# Kubernetes
kubectl get clusterroles,clusterrolebindings,roles,rolebindings -o json > k8s_rbac.json
Commands
Windows: Use single-line commands. Multi-line
\syntax does not work in PowerShell.
scan — Full pipeline scan
cloudsentrix scan --file sample_data/sample_gcp_iam.json
cloudsentrix scan --file sample_data/sample_aws_iam.json --cloud aws
cloudsentrix scan --file sample_data/sample_azure_rbac.json --cloud azure
cloudsentrix scan --file sample_data/sample_azure_ad.json --cloud azure-ad
cloudsentrix scan --file sample_data/sample_gcp_iam.json --severity critical
cloudsentrix scan --file sample_data/sample_gcp_iam.json --notify slack
cross-cloud — Cross-Cloud Attack Chain Detection ⚡ Industry-First
cloudsentrix cross-cloud --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json
cloudsentrix cross-cloud --gcp sample_data/sample_gcp_iam.json --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json
cloudsentrix cross-cloud --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json --output chains.json
terraform — Terraform IaC + State Scanning
# Scan .tf files
cloudsentrix terraform --path sample_data/sample_terraform/main.tf
cloudsentrix terraform --path /path/to/terraform/
# Scan .tfstate for leaked secrets
cloudsentrix terraform --path sample_data/sample_terraform.tfstate
cloudsentrix terraform --path terraform.tfstate --output secrets.json
k8s — Kubernetes RBAC Scanning
cloudsentrix k8s --path sample_data/sample_k8s_rbac.json
cloudsentrix k8s --path /path/to/k8s/manifests/
cloudsentrix k8s --path k8s_rbac.json --output k8s_findings.json
dashboard — Multi-Cloud HTML Dashboard
cloudsentrix dashboard --gcp sample_data/sample_gcp_iam.json --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json --output dashboard.html
cloudsentrix dashboard --gcp sample_data/sample_gcp_iam.json --aws sample_data/sample_aws_iam.json --output dashboard.html
report-multi — Multi-Cloud PDF Report
cloudsentrix report-multi --gcp sample_data/sample_gcp_iam.json --aws sample_data/sample_aws_iam.json --azure sample_data/sample_azure_rbac.json --output multi_cloud_report.pdf
report — Single-Cloud PDF
cloudsentrix report --file sample_data/sample_gcp_iam.json --output report.pdf --no-ai
cloudsentrix report --file sample_data/sample_aws_iam.json --cloud aws --output aws_report.pdf --no-ai
cloudsentrix report --file sample_data/sample_azure_rbac.json --cloud azure --output azure_report.pdf --no-ai
live-scan — Scan Live Cloud Account
# GCP
cloudsentrix live-scan --project my-gcp-project-id
# AWS (requires: pip install boto3)
cloudsentrix live-scan --cloud aws
cloudsentrix live-scan --cloud aws --profile my-profile --region us-west-2
cloudsentrix live-scan --cloud aws --endpoint http://localhost:4566
# Azure
cloudsentrix live-scan --cloud azure --subscription my-subscription-id
export — Export Results
cloudsentrix export --file sample_data/sample_gcp_iam.json --output dashboard.html
cloudsentrix export --file sample_data/sample_aws_iam.json --cloud aws --output report.json
cloudsentrix export --file sample_data/sample_gcp_iam.json --output report.csv
cloudsentrix export --file sample_data/sample_gcp_iam.json --output results.sarif
score — Security Score
cloudsentrix score --file sample_data/sample_gcp_iam.json
cloudsentrix score --file sample_data/sample_aws_iam.json --cloud aws --json
cloudsentrix score --file sample_data/sample_gcp_iam.json --min-score 70
validate — Validate File Format
cloudsentrix validate --file sample_data/sample_gcp_iam.json
cloudsentrix validate --file sample_data/sample_aws_iam.json --cloud aws
cloudsentrix validate --file sample_data/sample_azure_rbac.json --cloud azure
cloudsentrix validate --file sample_data/sample_azure_ad.json --cloud azure-ad
Other Commands
cloudsentrix blast-radius --file sample_data/sample_gcp_iam.json --principal admin@company.com
cloudsentrix principal-path --file sample_data/sample_gcp_iam.json --source intern@company.com --target sa@my-project.iam.gserviceaccount.com
cloudsentrix mitre-map --file sample_data/sample_gcp_iam.json
cloudsentrix remediate --file sample_data/sample_gcp_iam.json --severity critical
cloudsentrix compare --old january.json --new february.json
cloudsentrix watch --path sample_data/sample_gcp_iam.json
cloudsentrix list-principals --file sample_data/sample_aws_iam.json --cloud aws
cloudsentrix rules
Slack / Teams Alerts
# Slack
export CLOUDSENTRIX_SLACK_WEBHOOK="https://hooks.slack.com/services/YOUR/WEBHOOK"
cloudsentrix scan --file sample_data/sample_gcp_iam.json --notify slack
# Teams
export CLOUDSENTRIX_TEAMS_WEBHOOK="https://your-org.webhook.office.com/..."
cloudsentrix scan --file sample_data/sample_gcp_iam.json --notify teams
# Direct URL
cloudsentrix scan --file sample_data/sample_gcp_iam.json --notify slack --webhook https://hooks.slack.com/services/YOUR/WEBHOOK
CI/CD Integration
Ready-made templates in ci-templates/ folder.
GitHub Actions
- name: Install CloudSentrix
run: pip install cloudsentrix
- name: Scan GCP IAM
run: cloudsentrix scan --file gcp_iam.json --severity high
- name: Generate SARIF
run: cloudsentrix export --file gcp_iam.json --output results.sarif
- name: Upload to GitHub Security
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
GitLab CI
cloudsentrix-scan:
image: python:3.11
script:
- pip install cloudsentrix
- cloudsentrix scan --file gcp_iam.json --cloud gcp
allow_failure: false
Jenkins
stage('Security Scan') {
steps {
sh 'pip install cloudsentrix'
sh 'cloudsentrix scan --file gcp_iam.json --cloud gcp'
}
}
AWS LocalStack Testing
pip install localstack awscli-local
localstack start
awslocal iam create-user --user-name test-admin
awslocal iam attach-user-policy --user-name test-admin --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
cloudsentrix live-scan --cloud aws --endpoint http://localhost:4566
Gemini AI Summary
export GEMINI_API_KEY="your_api_key_here"
cloudsentrix report --file sample_data/sample_gcp_iam.json --output report.pdf
Get free API key from Google AI Studio
Exit Codes
| Code | Meaning |
|---|---|
0 |
No CRITICAL findings |
1 |
CRITICAL findings — fail the pipeline |
2 |
Command error |
Detection Rules
☁️ GCP (5 rules)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| GCP-001 | Publicly Accessible Role Binding | CRITICAL | T1078.004 |
| GCP-002 | Service Account Token Creator | CRITICAL | T1098.001 |
| GCP-003 | Service Account Key Admin | CRITICAL | T1098.001 |
| GCP-004 | IAM Policy Administrator | CRITICAL | T1098.003 |
| GCP-005 | Service Account Impersonation via Resource Attach | HIGH | T1548.005 |
🟡 AWS (7 rules)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| AWS-001 | Administrator Access — Full AWS Control | CRITICAL | T1078.004 |
| AWS-002 | IAM PassRole — Privilege Escalation via Service | CRITICAL | T1098.003 |
| AWS-003 | IAM Policy Manipulation — Self-Escalation Path | CRITICAL | T1098.003 |
| AWS-004 | Publicly Assumable Role — Trust Policy Allows Anyone | CRITICAL | T1078.004 |
| AWS-005 | Access Key Creation — Long-Lived Credential Backdoor | CRITICAL | T1098.001 |
| AWS-006 | Backdoor IAM User Creation | CRITICAL | T1136.003 |
| AWS-007 | IAMFullAccess — Complete IAM Control | CRITICAL | T1098.003 |
🔷 Azure RBAC (5 rules)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| AZ-001 | Owner / Contributor at Broad Scope | CRITICAL | T1078.004 |
| AZ-002 | Service Principal with High-Privilege Role | CRITICAL | T1098.001 |
| AZ-003 | Guest User with Elevated Role | HIGH | T1078.006 |
| AZ-004 | Over-permissive Role Scope | HIGH | T1548.005 |
| AZ-005 | Custom Role with Dangerous Permissions | HIGH | T1098.003 |
🔷 Azure AD / Entra ID (6 rules)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| AZAD-001 | Dangerous OAuth Permission | CRITICAL | T1528 |
| AZAD-002 | Orphaned App Registration | HIGH | T1098.001 |
| AZAD-003 | Multi-Tenant App with Broad Permissions | CRITICAL | T1199 |
| AZAD-004 | Expired App Credentials | MEDIUM | T1552.001 |
| AZAD-005 | App Credential With No Expiry | HIGH | T1528 |
| AZAD-006 | Service Principal with High-Privilege App Roles | CRITICAL | T1098.003 |
🏗️ Terraform IaC (10 rules) + State (1 rule)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| TF-001 | AWS IAM Wildcard Policy (Action:* Resource:*) | CRITICAL | T1078.004 |
| TF-002 | AWS IAM Role Public Trust Policy (Principal:*) | CRITICAL | T1078.004 |
| TF-003 | AWS AdministratorAccess Policy Attached | CRITICAL | T1078.004 |
| TF-004 | GCP Public IAM Binding (allUsers) | CRITICAL | T1078.004 |
| TF-005 | GCP Owner/Editor Role Binding | HIGH | T1098.003 |
| TF-006 | Azure Owner Role Assignment | CRITICAL | T1078.004 |
| TF-007 | Hardcoded Secrets / Access Keys | CRITICAL | T1552.001 |
| TF-008 | AWS IAM Policy Uses NotAction | HIGH | T1078.004 |
| TF-009 | AWS IAM Inline Policy on User | MEDIUM | T1078.004 |
| TF-010 | Sensitive Policy Missing MFA Condition | MEDIUM | T1078.004 |
| TFS-001 | Secret Leaked in Terraform State File | CRITICAL | T1552.001 |
☸️ Kubernetes RBAC (6 rules)
| Rule | Title | Severity | MITRE |
|---|---|---|---|
| K8S-001 | ClusterRoleBinding to cluster-admin | CRITICAL | T1078.001 |
| K8S-002 | Wildcard Permissions in Role | CRITICAL | T1078.001 |
| K8S-003 | Role Can Read Kubernetes Secrets | HIGH | T1552.007 |
| K8S-004 | Default ServiceAccount Bound to Privileged Role | HIGH | T1078.001 |
| K8S-005 | Anonymous / Unauthenticated Access Granted | CRITICAL | T1078.001 |
| K8S-006 | Role Allows Pod Exec/Attach | HIGH | T1609 |
Project Structure
cloudsentrix/
├── src/
│ ├── cli.py # CLI entry point (19 commands)
│ ├── parser.py # GCP IAM parser
│ ├── graph.py # GCP graph engine
│ ├── detection.py # GCP detection (5 rules)
│ ├── risk_score.py # 0-100 scoring engine
│ ├── blast_radius.py # GCP blast radius
│ ├── watch_handler.py # File watcher
│ ├── live_scanner.py # Live GCP scanner
│ ├── pdf_report.py # Single-cloud PDF
│ ├── ai_summary.py # Gemini AI integration
│ ├── aws_parser.py # AWS IAM parser
│ ├── aws_graph.py # AWS graph engine
│ ├── aws_detection.py # AWS detection (7 rules)
│ ├── aws_blast_radius.py # AWS blast radius
│ ├── aws_live_scanner.py # Live AWS scanner
│ ├── azure_parser.py # Azure RBAC parser
│ ├── azure_detection.py # Azure RBAC detection (5 rules)
│ ├── azure_risk_score.py # Azure scoring engine
│ ├── azure_blast_radius.py # Azure blast radius
│ ├── azure_exporter.py # Azure JSON/CSV/SARIF/HTML
│ ├── azure_live_scanner.py # Live Azure scanner
│ ├── azure_ad_parser.py # Azure AD parser
│ ├── azure_ad_detection.py # Azure AD detection (6 rules)
│ ├── terraform_scanner.py # Terraform IaC + State scanner (11 rules)
│ ├── k8s_scanner.py # Kubernetes RBAC scanner (6 rules)
│ ├── cross_cloud_detector.py # Cross-cloud attack chain detection
│ ├── multi_dashboard.py # Multi-cloud animated HTML dashboard
│ ├── multi_pdf_report.py # Multi-cloud PDF report
│ └── notifier.py # Slack / Teams webhook alerts
├── ci-templates/
│ ├── github-actions-gcp.yml
│ ├── github-actions-aws.yml
│ ├── github-actions-multi-cloud.yml
│ ├── gitlab-ci.yml
│ └── jenkins-pipeline.groovy
├── tests/ # 144 pytest tests
├── sample_data/
│ ├── sample_gcp_iam.json
│ ├── demo_enterprise_iam.json
│ ├── sample_aws_iam.json
│ ├── sample_azure_rbac.json
│ ├── sample_azure_ad.json
│ ├── sample_k8s_rbac.json
│ ├── sample_terraform.tfstate
│ └── sample_terraform/
│ └── main.tf
├── .github/workflows/ci.yml
├── .github/workflows/publish.yml
├── pyproject.toml
└── README.md
Roadmap
| Feature | Status |
|---|---|
| GCP IAM — 5 rules, blast radius, remediation, live scan | ✅ Shipped |
| AWS IAM — 7 rules, blast radius, PassRole, live scan, LocalStack | ✅ Shipped |
| Azure RBAC — 5 rules, blast radius, live scan | ✅ Shipped |
| Azure AD / Entra ID — 6 rules, OAuth risks, orphaned apps | ✅ Shipped |
| Terraform IaC Scanner — 10 rules, GCP+AWS+Azure | ✅ Shipped |
| Terraform State Scanner — leaked secrets in .tfstate | ✅ Shipped |
| Kubernetes RBAC Scanner — 6 rules | ✅ Shipped |
| Cross-Cloud Attack Chain Detection — industry-first | ✅ Shipped |
| Multi-Cloud Animated HTML Dashboard | ✅ Shipped |
| Multi-Cloud PDF Report | ✅ Shipped |
| Slack / Teams Webhook Alerts | ✅ Shipped |
| CI/CD Templates — GitHub Actions, GitLab, Jenkins | ✅ Shipped |
| Gemini AI Executive Summaries | ✅ Shipped |
| Local Web Dashboard (Flask serve command) | 🔄 Planned |
Running Tests
pip install -e ".[dev]"
pytest tests/ -v
Expected: 144 passed
License
MIT — free to use, modify, and distribute.
Release files for cloudsentrix 2.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cloudsentrix-2.0.3.tar.gz | 252.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cloudsentrix-2.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 391.1 kB
Release files / cloudsentrix-2.0.3.tar.gz
| Download URL | cloudsentrix-2.0.3.tar.gz |
|---|---|
| Size | 252.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57137416c9112f54894b9f7a8303203d2f778a05a98cdde19e50a3ec8524ee0f
|
|
BLAKE2b-256 checksum How to use checksums |
0f91f5f20570f5f01d556b7fd990b85d587799238ed4677b03508d5c5617416c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency logRelease files / cloudsentrix-2.0.3-py3-none-any.whl
| Download URL | cloudsentrix-2.0.3-py3-none-any.whl |
|---|---|
| Size | 138.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a1632079835c382856ba97b4e30fc7f55e70be2af4edbd100f232228df0b230
|
|
BLAKE2b-256 checksum How to use checksums |
bd4a2bb4484c3b2bf4783a8000e518f80afa0504aedf477e4001865752fb6bf1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency log