Перейти к содержимому

Кейс · Безопасность AI-агентов

Sallyport CloudДва человека сделали работу отдела безопасности: AI-агенты делают 100 000+ вызовов в день без единого ключа

Sallyport Cloud хранит API-ключи в зашифрованном хранилище, подставляет их в вызовы агента и делает эти вызовы сам: по MCP, HTTP, SSH и через подключения к базам данных. Ключа у агента нет, поэтому ни утёкший промпт, ни перехваченный агент отдать его не могут. Сейчас через шлюз идёт больше 100 000 вызовов агентов в день, к каждому он добавляет меньше 20 мс, и ни один ключ не утёк. Я спроектировал архитектуру, отвечал за соответствие шифрования требованиям и проверил всю систему на уязвимости, в том числе через проект Daybreak от OpenAI: проверка нашла больше 30 проблем, и все они закрыты. Собрала продукт команда из двух человек вместе с AI-агентами, хотя продукту безопасности обычно нужен целый отдел и соответствующий бюджет.

Клиент
Sallyport Cloud
Продукт
Шлюз ключей для AI-агентов (MCP proxy)
Нагрузка
100 000+ вызовов агентов в день, меньше 20 мс на вызов
Каналы
MCP, HTTP, SSH и базы данных: 4 канала, один шлюз
Агентские клиенты
9 на одном адресе, от Claude Code до ChatGPT и Cursor
Моя роль
CTO по подписке, по сей день
Команда
2 человека, AI-native, без отдельного отдела безопасности
Sallyport Cloud: продукт

В цифрах

вызовов агентов в день через шлюз, и ни один ключ не утёк
100 000+
добавляет шлюз к вызову, и безопасность не тормозит агентов
<20 мс
находок проверки OpenAI Daybreak, и каждая закрыта навсегда
30+
сервисов доступны агентам без ключа, каждый вызов размечен по риску
800+
способов прочитать сохранённый ключ, даже для нашей команды
0
человека делают работу целой команды безопасности
2

Продукт

Публичный сайт: главная с экраном активности, каталог сервисов, экран сохранённого ключа со страницы о безопасности и запись одного вызова со страницы продукта.

  • Главная Sallyport Cloud: «Your AI agents do the work. They never see your keys» и экран Activity со всеми вызовами агентов
  • Каталог сервисов: 820 сервисов по видам работы, поиск и раздел «Connect your own» для любого веб-API, удалённых MCP-серверов, SSH, SFTP, S3, почты и баз данных
  • «A saved key can't be seen again»: экран ключа stripe-live показывает, каким агентам он доступен, его версии и единственный хост, куда он уходит, но не сам ключ
  • Запись каждого действия: карточка одного вызова — агент, версия ключа, правило, которое его разрешило, намерение агента и записи в журнале
01

С чего начинали

AI-агенту, который делает настоящую работу, нужны ключи к GitHub, Stripe, облаку и базе данных, и любой ключ, отданный агенту, рано или поздно может утечь. Sallyport Cloud даёт агенту действие, а ключ оставляет у себя: агент называет вызов, шлюз берёт ключ из зашифрованного хранилища, сам делает вызов и возвращает результат.

Сервис хранит production-ключи своих клиентов, поэтому планку для всего остального задавала безопасность. Я работаю в нём CTO по подписке и выстроил продукт так, чтобы команда из двух человек, полностью AI-native, взяла эту планку без отдела безопасности, который для таких продуктов обычно нанимают.

02

Что мы сделали

  1. Один процесс: ключу некуда утечь, а вызов остаётся быстрым

    Я спроектировал шлюз как один процесс на Go: он держит подключение к базе, хранилище ключей и журнал и сам делает исходящий вызов. Внутри платформы нет второго звена, которому можно передать ключ: ключ выходит из хранилища один раз на вызов и только для вызова, который уже разрешён. Без второго звена шлюз ещё и работает быстро: к вызову он добавляет меньше 20 мс. Так исчезает целый класс утечек, с которым большинство многосервисных платформ живёт годами. Хранилище и шлюз работают в США.

  2. Корневой ключ, который не может использовать или потерять один человек

    За соответствие шифрования требованиям отвечал я. Ключи хранятся с envelope-шифрованием: корневой ключ открывает ключ арендатора, тот открывает ключ домена данных, а каждая запись запечатана своим подключом (HKDF-SHA256, ChaCha20-Poly1305). Корневой ключ разделён на три доли, и любые две его восстанавливают, поэтому потерянная доля ничего не стоит, а украденная ничего не открывает. Ни один маршрут не возвращает сохранённый ключ, а тест роняет сборку, если ключ где-то превращается в строку Go: такую строку нельзя стереть из памяти. Большинство команд приходит к такой тщательности только после инцидента.

  3. Один клиент никогда не доберётся до данных другого

    Шлюз ходит в PostgreSQL под ролью, которая ничем не владеет и не может обойти row-level security, и каждая транзакция ограничена одним арендатором и его пространствами. У каждого арендатора свой пул HTTP-соединений, поэтому запрос одного клиента никогда не идёт по соединению другого. Список запретов, вкомпилированный в бинарник, отказывает частным адресам, метаданным облака и собственным хостам шлюза, а имя хоста резолвится заново в момент вызова, и подменить разрешённое имя внутренним адресом не выйдет.

  4. Рискованный вызов ждёт человека, и каждый вызов оставляет доказательство

    Человек может одобрить вызов в консоли или в Telegram до того, как он уйдёт, или разрешить набор действий на выбранный срок и с лимитом вызовов. Каждый вызов записывается в журнал арендатора до исполнения, и каждая запись связана хешем с предыдущей и подписана Ed25519. Изменённую или удалённую строку видно сразу, а цепочку можно проверить без наших ключей, так что аудитору клиента не приходится верить нам на слово.

  5. Один адрес для 9 агентских клиентов и 100 000+ вызовов в день

    Claude Code, claude.ai, ChatGPT, Cursor, Codex, Gemini CLI, VS Code и API Claude и OpenAI подключаются к одному MCP-адресу. Кроме MCP, агенты вызывают сервисы через HTTP proxy, выполняют команды по SSH и делают запросы к PostgreSQL, MySQL, SQL Server, ClickHouse, MongoDB и Redis. Каталог описывает 800+ сервисов и относит каждый вызов к read, write или destructive, поэтому клиент подключает каждого агента один раз, а не настраивает и защищает каждого по отдельности. Вместе агенты делают через шлюз больше 100 000 вызовов в день.

  6. Проверено сертифицированным этичным хакером, 30+ находок закрыты навсегда

    Я Certified Ethical Hacker (CEH), у меня также есть сертификаты CompTIA Security+ и CCNP Security, так что продукт получил проверку безопасности того уровня, который компании обычно заказывают у внешней фирмы. Я проверил всю систему на уязвимости, в том числе через проект Daybreak от OpenAI, к которому у меня есть доступ, и проверка нашла больше 30 проблем. Каждую сначала воспроизводил тест, падавший на старом коде, потом её исправляли, и тест остаётся в наборе, поэтому закрытая дыра не откроется снова. Закрыты все, и ни один ключ клиента не утёк. Хранилище ключей, egress-фильтр и журнал покрыты тестами на 95% и больше.

  7. Два человека и AI-агенты вместо целого отдела

    Код и тесты пишут AI-агенты по спецификации и файлу правил, где названо каждое правило безопасности, которое код обязан соблюдать. Тесты сервера идут на настоящем PostgreSQL. Этот способ работы выстроил я, и он позволяет двум людям выпускать и вести продукт безопасности в темпе и за деньги, недоступные штатной команде обычного размера.

03

Результат

Sallyport Cloud работает: через него идёт больше 100 000 вызовов агентов в день, к каждому шлюз добавляет меньше 20 мс, и ни один ключ не утёк. Бесплатный план рассчитан на 10 000 вызовов в месяц, платные стоят от $19 за агента в месяц. Продукт безопасности, для которого обычно держат отдел, строит и ведёт команда из двух человек, и ни один агент в нём не держит ключа.

Стек

  • Go
  • PostgreSQL
  • React
  • Next.js
  • MCP
  • OAuth 2.1
  • ChaCha20-Poly1305
  • Ed25519
  • AWS
  • Cloudflare
  • Docker
  • GitLab CI
  • Sentry
  • Claude Code
oleg.isОтправляется по запросу

Полный кейс · PDF

Sallyport Cloud

Два человека сделали работу отдела безопасности: AI-агенты делают 100 000+ вызовов в день без единого ключа

  1. 01Архитектура со схемами: один процесс, хранилище ключей и журнал
  2. 02Схема шифрования и доли корневого ключа для восстановления
  3. 03Изоляция арендаторов: роли базы, row-level security, пулы соединений
  4. 04Как проводилась проверка на уязвимости, что она нашла и как закреплено каждое исправление
  5. 05Одобрение вызовов и подписанный журнал, который аудитор проверит сам
  6. 06Как команда из двух человек строит продукт безопасности, для которого обычно держат отдел
Подготовил Олег СотниковPDF

Полный кейс Sallyport Cloud

Открытая часть истории на этом заканчивается. Остальное в PDF: архитектура до и после, план переезда, как команда работает с AI-агентами, сколько всё это стоит в эксплуатации и откуда взялась экономия.

Каждый кейс я отправляю сам, а ваш email нужен только для этого.

Другие кейсы

Все кейсы
01AulaЖКХ · КазахстанCTO по подпискеТри релиза в день вместо одного в четыре месяца: 3 человека делают работу 16, а счёт за облако меньше на 70%Aula — одно приложение для жителей многоквартирных домов и 109 управляющих компаний, в нём 247 000 аккаунтов. Как CTO по подписке я перестроил то, как продукт делают и на чём он работает: команда разработки и тестирования сократилась с 16 человек до 3, серверов стало 3 вместо 18, счёт за облако упал на 70%, а ошибок в мобильном приложении стало на 97% меньше. Задача теперь доходит до продакшена за день, а не за две-три недели, и продукт выходит три раза в день при аптайме 99,99%. Такого темпа большинство штатных команд не достигает никогда.Читать кейс02detachboxОблачные машины для AI-агентов · США и весь мирCTO по подписке и стартап-адвайзерФаундер, CTO по подписке и один инженер за три недели превратили идею detachbox в коммерческий продуктdetachbox даёт Claude Code, Codex и другим CLI-агентам Linux-машину, которая работает всегда: разработчик закрывает ноутбук, а агент продолжает работать на той подписке Claude или Codex, за которую разработчик уже платит. Мы строили продукт по схеме фаундер → CTO по подписке → инженер, без команды между ними, и от идеи фаундера до платных тарифов прошло три недели. Архитектура, инфраструктура, ревью кода и техническое направление на мне, и мы продолжаем развивать продукт. Ни токен подписки, ни API-ключ не попадают внутрь машины, поэтому detachbox сегодня один из самых безопасных способов запускать удалённых агентов на собственной подписке.Читать кейс03LeadTrainХолодные рассылки и исходящие продажиCTO по подписке и стартап-адвайзерКоманда из трёх человек построила LeadTrain, платформу холодных рассылок, которая отправляет больше 20 миллионов писем в месяцLeadTrain берёт на себя все этапы холодных продаж: находит покупателей, покупает и настраивает домены для отправки, создаёт и прогревает ящики, даёт каждому отправителю профиль и сайт, отправляет многошаговые кампании и разбирает каждый ответ. В роли CTO по подписке и стартап-адвайзера я спроектировал всю архитектуру и вместе с ещё двумя людьми построил продукт. Сегодня LeadTrain отправляет больше 20 миллионов писем в месяц, а построен он так, чтобы доставляемость держалась выше 60%.Читать кейс

Хотите, чтобы следующий кейс был про вашу компанию?

За 30 минут созвона выберем первую задачу, которую стоит отдать AI, и прикинем, сколько она сэкономит.

Обсудить мою задачуЗвонок бесплатный. На связи я сам.