Skip to main content
Glama

CloudLedger

Многоаккаунтное сканирование безопасности AWS и реестр инфраструктуры с MCP-сервером для запросов истории сканирований.

Статус: предварительная версия. CloudLedger активно разрабатывается и ещё не опубликован в PyPI. Команды ниже описывают предполагаемый релиз 0.1.0; до этого момента возможны несоответствия.

Обзор

CloudLedger выполняет оценку безопасности и собирает детальную информацию об инфраструктуре в нескольких аккаунтах AWS, создавая исторический реестр каждого сканирования. Он интегрирует Prowler для автоматических проверок безопасности по стандартам CIS Benchmarks, PCI-DSS, GDPR, HIPAA и другим, а также предоставляет собранные данные через сервер Model Context Protocol (MCP) stdio, что позволяет запрашивать их на естественном языке из Claude Desktop, Claude Code или любого другого MCP-клиента.

Related MCP server: quicksight-mcp

Возможности

Сканер

  • Оценка безопасности: интеграция Prowler для автоматических проверок на основе фреймворков, а также встроенные оценки доступности, идентификации и сети

  • Инвентаризация сервисов: определение всех используемых сервисов AWS во всех регионах

  • Сетевая архитектура: конфигурации VPC, включая подсети, таблицы маршрутизации, интернет-шлюзы, NAT-шлюзы

  • Вычисления, хранилища и идентификация: EC2, балансировщики нагрузки, группы Auto Scaling, корзины S3 с анализом публичного доступа, пользователи IAM, роли и политики

  • DNS: зоны и наборы записей Route53

  • Тегирование сканирований: добавление тегов во время или после сканирования, поиск в реестре по тегу из CLI или инструментов MCP

  • Осведомлённость об организации AWS: интерактивные сканирования фиксируют членство в организации и управляющий аккаунт (control-tower), предлагают просканировать управляющий аккаунт, если в реестре нет его записи, и связывают аккаунты-участники с управляющим аккаунтом

  • Исторический реестр: каждое сканирование сохраняется с метками времени для сравнения и анализа отклонений

Хранилище

  • SQLite из коробки (расположение по умолчанию определяется платформой), или

  • PostgreSQL, MySQL или MSSQL через дополнительные пакеты, настраивается один раз с помощью cloudledger setup; данные для подключения хранятся в системной связке ключей

MCP-сервер

  • Запросы безопасности: общедоступные корзины S3, экземпляры EC2 с публичными IP-адресами, излишне разрешающие группы безопасности

  • Сетевые запросы: поиск аккаунтов, содержащих определённые IP-адреса или диапазоны CIDR, построение архитектуры VPC

  • Запросы конфигурации: сравнение конфигураций между датами сканирования, отслеживание отклонений

  • Запросы по тегам и организации: поиск сканирований по тегу, список тегов, определение связей организации

Требования

  • uv (управляет Python и всеми зависимостями)

  • Python 3.12 (устанавливается автоматически через uv; 3.13+ не поддерживается, так как Prowler фиксирует numpy 2.0.2)

  • Учётные данные AWS (рекомендуются временные токены сессии)

  • Подключение к интернету для доступа к API AWS

Установка

Из PyPI (после публикации):

# Run ad hoc without installing
uvx cloudledger --help

# Or install as a tool
uv tool install cloudledger

# With a server database backend
uv tool install "cloudledger[postgres]"   # or [mysql], [mssql], [all-db]

Из исходного кода:

git clone https://github.com/Cognisn/cloudledger.git
cd cloudledger
uv sync

Быстрый старт

# One-off configuration: choose SQLite or a server backend
cloudledger setup

# Interactive scan of a single account
cloudledger scan --tag client-acme --tag q3-review

# Batch scanning from CSV
cloudledger create-example-csv --output accounts.csv
cloudledger scan --csv accounts.csv

# Work with tags
cloudledger tag list
cloudledger tag find client-acme
cloudledger tag add <scan-id> follow-up

# Start the MCP server (stdio)
cloudledger-mcp

При запуске из локальной копии исходного кода добавляйте uv run перед командами.

Запросы через MCP

После подключения MCP-сервера к MCP-клиенту реестр отвечает на вопросы на естественном языке, например:

  • "Покажи все общедоступные корзины S3"

  • "Найди экземпляры EC2 с публичными IP-адресами в us-east-1"

  • "Перечисли все сканирования с тегом client-acme"

  • "Какие аккаунты принадлежат организации, управляемой аккаунтом 123456789012?"

  • "Сравни количество ресурсов между двумя последними сканированиями этого аккаунта"

Вопросы безопасности

  • Разработан для временных учётных данных; долгосрочные учётные данные не хранятся

  • Доступ к AWS API только на чтение

  • Пароли к базам данных хранятся в системной связке ключей, никогда не в открытом виде в конфигурации

  • CSV-файлы с учётными данными должны храниться с ограниченными правами, удаляться после использования и никогда не попадать в систему контроля версий

Этот инструмент предназначен только для авторизованных оценок безопасности. Убедитесь, что у вас есть соответствующие разрешения перед сканированием аккаунтов AWS.

Разработка

uv sync
uv run pytest            # SQLite-backed tests
uv run pytest -m db      # opt-in backend integration tests (requires docker compose up)

Вклад в разработку должен использовать австралийский английский в комментариях и документации, включать модульные тесты для новых функций и поддерживать актуальность CHANGELOG.md под заголовком Unreleased.

Лицензия

Лицензия MIT. Подробнее см. в LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language analysis of AWS cloud costs, waste audits, and budget insights across multiple profiles and regions.
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables natural language interaction with AWS QuickSight for building, editing, and managing analyses, datasets, and dashboards, including chart creation, SQL updates, and QA verification.
    61
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language queries to be converted into policy-verified SQL, vector search, and knowledge graph plans, with evidence-backed answers and an audit log.
    1
    Apache 2.0