Skip to content

πŸš€ Identify AWS cost waste and security vulnerabilities across 16 core services with a single command

License

Notifications You must be signed in to change notification settings

secureonelabs/kosty

 
 

Repository files navigation

πŸ’° Kosty - AWS Cost Optimization & Security Audit CLI Tool

Kosty Logo Python AWS License

πŸš€ Identify AWS cost waste and security vulnerabilities across 16 core services with a single command

Save thousands of dollars monthly and improve security posture by finding unused resources, oversized instances, misconfigurations, and compliance issues

🎯 Quick Start β€’ πŸ“– Documentation β€’ πŸ”§ Installation β€’ πŸ’‘ Examples

πŸ“Š Visual Dashboard

Not just CLI! Kosty includes a beautiful, modern web dashboard to visualize your optimization results:

Kosty Dashboard

✨ Premium Features: Interactive charts, responsive design, real-time data visualization, and professional reporting.


🌟 Built by a Cloud Consultant, for Cloud Engineers

After years of AWS consulting , I kept finding the same costly patterns:

  • Load Balancers with no targets 10K$-30K$/year wasted
  • Orphaned EBS volumes: $1,000-2,500/year
  • Unused NAT Gateways, oversized instances, old snapshots,...

Every. Single. Time.

So I built Kosty - the tool I wish existed when I started consulting.

What Kosty Does

  • πŸ” Scans 16 core AWS services in one command
  • πŸ’° Identifies orphaned resources (instant cost savings)
  • πŸ“Š Finds oversized instances (EC2, RDS, Lambda)
  • πŸ” Detects security vulnerabilities (public DBs, unencrypted storage, open ports)
  • πŸ›‘οΈ Identifies compliance issues (old access keys, public snapshots, weak configurations)

One command. Full audit. Free forever.

AWS costs and security risks can spiral out of control quickly. Kosty helps you:

  • πŸ” Discover unused resources and security vulnerabilities across 16 core AWS services
  • πŸ’° Identify oversized and idle resources for cost optimization
  • πŸ” Detect security misconfigurations and compliance issues
  • ⚑ Optimize with prioritized recommendations for cost and security
  • 🏒 Scale across entire AWS Organizations with parallel processing
  • πŸ“Š Track issues with comprehensive reporting

🎯 Quick Start

# Install Kosty via pip (recommended)
pip install kosty

# Or install from source
git clone https://github.com/kosty-cloud/kosty.git
cd kosty && ./install.sh

# πŸš€ ONE COMMAND TO RULE THEM ALL - Comprehensive scan
kosty audit --output all

# Organization-wide comprehensive scan with reports
kosty audit --organization --max-workers 20 --output all

# Individual service scans
kosty ec2 audit --cpu-threshold 20
kosty rds audit
kosty s3 audit

# Cost and security audits separately
kosty ec2 cost-audit --cpu-threshold 20
kosty s3 security-audit
kosty iam security-audit

# Individual checks
kosty ec2 check-oversized-instances --cpu-threshold 20
kosty ec2 check-stopped-instances --days 7
kosty s3 check-empty-buckets
kosty rds check-public-databases

# πŸ“Š View results in beautiful dashboard
open dashboard/index.html

πŸ”§ Installation

Prerequisites

  • Python 3.7+
  • AWS CLI configured with appropriate credentials

Quick Install (Recommended)

pip install kosty

Install from Source

git clone https://github.com/kosty-cloud/kosty.git
cd kosty
./install.sh

Development Install

git clone https://github.com/kosty-cloud/kosty.git
cd kosty
pip install -e .

πŸ’‘ Examples

πŸ† High-Impact Optimizations

# Find oversized EC2 instances
kosty ec2 check-oversized-instances --cpu-threshold 20

# Find unused RDS read replicas
kosty rds check-unused-read-replicas

# Find over-provisioned Lambda functions
kosty lambda check-over-provisioned-memory

# Find orphaned EBS volumes
kosty ebs check-orphan-volumes

# Find unattached Elastic IPs
kosty eip check-unattached-eips

πŸ” Resource Discovery & Security Audits

# Storage optimization & security
kosty s3 check-empty-buckets
kosty s3 check-public-read-access
kosty s3 check-encryption-at-rest
kosty ebs check-orphan-volumes
kosty ebs check-unencrypted-orphan
kosty snapshots check-old-snapshots --days 30
kosty snapshots check-public-snapshots

# Database optimization & security
kosty rds check-oversized-instances --cpu-threshold 20
kosty rds check-public-databases
kosty rds check-unencrypted-storage
kosty dynamodb check-idle-tables

# Network optimization & security
kosty lb check-no-healthy-targets
kosty nat check-unused-gateways
kosty sg check-unused-groups
kosty sg check-overly-permissive

# Security & compliance checks
kosty ec2 check-ssh-open
kosty ec2 check-imdsv1
kosty ec2 check-unencrypted-ebs
kosty iam check-root-access-keys
kosty iam check-unused-roles
kosty iam check-old-access-keys

🏒 Comprehensive Scanning

# 🎯 ULTIMATE COST AUDIT - All services, all checks
kosty audit --output all

# Organization-wide comprehensive scan (16 services)
kosty audit --organization --max-workers 20 --output json

# Multi-region comprehensive audit
kosty audit --regions us-east-1,eu-west-1,ap-southeast-1 --output csv

# Single region scan
kosty audit --region eu-west-1 --output json

# Quick console summary
kosty audit --output console

# Generate all report formats
kosty audit --organization --output all --max-workers 15

# πŸ“Š Visualize results in dashboard
kosty audit --output json
open dashboard/index.html  # Upload the JSON file

πŸš€ Command Types

Kosty offers 3 types of commands for maximum flexibility:

1. 🎯 Complete Audits - Full service analysis

kosty <service> audit           # Complete audit (cost + security)
kosty ec2 audit                 # All EC2 checks
kosty s3 audit                  # All S3 checks

2. πŸ’° Targeted Audits - Cost or security focus

kosty <service> cost-audit      # Cost optimization only
kosty <service> security-audit  # Security issues only

kosty ec2 cost-audit           # EC2 cost issues only
kosty s3 security-audit        # S3 security issues only
kosty iam security-audit       # IAM security issues only

3. πŸ” Individual Checks - Specific issue detection

kosty <service> check-<issue>   # Specific check

kosty ec2 check-oversized-instances
kosty ec2 check-stopped-instances
kosty s3 check-empty-buckets
kosty rds check-public-databases
kosty iam check-root-access-keys

4. 🌍 Multi-Region & Organization - Comprehensive scanning

# Multi-region scanning
kosty audit --regions us-east-1,eu-west-1,ap-southeast-1
kosty ec2 audit --regions us-east-1,eu-west-1

# Organization-wide with multi-region
kosty audit --organization --regions us-east-1,eu-west-1 --max-workers 20
kosty s3 check-public-read-access --organization --regions us-east-1,eu-west-1

# Custom cross-account role for organization scanning
kosty audit --organization --cross-account-role MyCustomRole

# Separate organizational admin account
kosty audit --organization --org-admin-account-id 123456789012

# Combined custom role and admin account
kosty audit --organization --cross-account-role MyRole --org-admin-account-id 123456789012

πŸ“Š Complete Service Coverage (16 Services)

🎯 Service Overview

Category Services Key Checks
πŸ’» Compute EC2, Lambda Oversized instances, unused functions
πŸ—„οΈ Storage S3, EBS, Snapshots Empty buckets, orphaned volumes, old snapshots
πŸ—ƒοΈ Database RDS, DynamoDB Idle databases, over-provisioned tables
🌐 Network EIP, LB, NAT, SG, Route53 Unused resources, no healthy targets
πŸ” Security IAM Unused roles, old access keys, inactive users
πŸ“Š Management CloudWatch, Backup Unused alarms, expensive logs, empty vaults
🌐 Application API Gateway Unused APIs, expensive configurations

πŸ“‹ Service Commands Summary

Service Total Commands Audit Types Individual Checks
EC2 16 3 13 checks
RDS 17 3 14 checks
S3 14 3 11 checks
IAM 13 3 10 checks
EBS 12 3 9 checks
LB 10 3 7 checks
SG 9 3 6 checks
Lambda 8 3 5 checks
EIP 7 3 4 checks
CloudWatch 7 3 4 checks
Backup 6 3 3 checks
NAT 6 3 3 checks
Snapshots 6 3 3 checks
API Gateway 5 3 2 checks
DynamoDB 5 3 2 checks
Route53 5 3 2 checks

πŸ“Š Total: 147 commands (1 global + 146 service commands)

πŸ” Top Individual Checks by Service

EC2 (13 individual checks):

  • check-oversized-instances - Instances with low CPU utilization
  • check-stopped-instances - Instances stopped for 7+ days
  • check-ssh-open - SSH port open to 0.0.0.0/0
  • check-idle-instances - Instances with <5% CPU usage

S3 (11 individual checks):

  • check-empty-buckets - Buckets with no objects
  • check-public-read-access - Buckets with public read access
  • check-encryption-at-rest - Unencrypted buckets
  • check-lifecycle-policy - Buckets needing lifecycle policies

RDS (14 individual checks):

  • check-public-databases - Publicly accessible databases
  • check-oversized-instances - Over-provisioned RDS instances
  • check-unused-read-replicas - Unused read replicas
  • check-unencrypted-storage - Unencrypted RDS storage

IAM (10 individual checks):

  • check-root-access-keys - Root account access keys
  • check-unused-roles - Roles unused for 90+ days
  • check-inactive-users - Inactive users with active keys
  • check-wildcard-policies - Policies with wildcard permissions

🎯 The Ultimate Command

# πŸš€ ONE COMMAND TO AUDIT EVERYTHING
kosty audit

# Organization-wide comprehensive audit
kosty audit --organization --max-workers 20

# Generate all report formats
kosty audit --output all

What kosty audit does:

  • βœ… Scans 16 core AWS services automatically
  • βœ… Runs complete audits (cost + security) per service
  • βœ… Generates comprehensive reports (JSON, CSV, Console)
  • βœ… Prioritizes issues by severity and impact
  • βœ… Scales across single account or entire organization

πŸš€ Features

πŸ’» CLI + Web Dashboard

  • βœ… Modular CLI Architecture - Organized by AWS service for maintainability
  • βœ… Command Line Interface - Powerful CLI for automation and scripting
  • βœ… Visual Web Dashboard - Modern React-based interface with interactive charts
  • βœ… Multiple Report Formats - Console, JSON, CSV outputs + visual reports

πŸ” Comprehensive Analysis

  • βœ… 16 Core AWS Services - Essential infrastructure coverage
  • βœ… One-Command Audit - kosty audit scans everything
  • βœ… Organization Support - Multi-account scanning with configurable roles
  • βœ… Multi-Region - Scan across multiple AWS regions simultaneously with --regions
  • βœ… Flexible IAM - Custom cross-account roles and separate org admin accounts

⚑ Performance & Usability

  • βœ… Parallel Processing - High-performance with configurable workers
  • βœ… Issue Tracking - Comprehensive categorization and prioritization
  • βœ… Safe Operations - Read-only analysis, no resource modifications
  • βœ… Professional Reporting - Executive-ready dashboards and reports
  • βœ… Smart Validation - Upfront permission checks with clear error messages

πŸ“– Documentation

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. πŸ› Report Issues - Found a bug? Open an issue
  2. πŸ’‘ Feature Requests - Have an idea? Start a discussion
  3. πŸ”§ Add Services - Implement new AWS service checks
  4. πŸ“– Improve Docs - Help make documentation better
  5. ⭐ Star the Repo - Show your support!

Adding New Services

# kosty/services/new_service_audit.py
import boto3
from typing import List, Dict, Any

class NewServiceAuditService:
    def __init__(self):
        self.cost_checks = ['check_unused_resources']
        self.security_checks = ['check_public_access']
    
    def audit(self, session: boto3.Session, region: str, **kwargs) -> List[Dict[str, Any]]:
        results = []
        results.extend(self.cost_audit(session, region, **kwargs))
        results.extend(self.security_audit(session, region, **kwargs))
        return results

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

⭐ Show Your Support

If Kosty helped you save money on AWS costs, please:

  • ⭐ Star this repository
  • 🐦 Share on Twitter with #AWSCostOptimization
  • πŸ’¬ Tell your colleagues about cost optimization
  • 🀝 Contribute to make it even better

πŸ’° Save money. Optimize AWS. Scale efficiently.

🎯 Get Started β€’ πŸ“– Documentation β€’ 🀝 Contribute

About

πŸš€ Identify AWS cost waste and security vulnerabilities across 16 core services with a single command

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 71.5%
  • HTML 28.4%
  • Shell 0.1%