Гарантую, що ваш ШІ агент бачив ваші API ключі та паролі

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Бо вони лежать у .env

А ваш AI coding agent має доступ до репозиторію.

Розробників роками переконували:

«Never commit your .env.»

А тепер всі дружно дали AI-агентам доступ до всієї робочої директорії — разом із:

— OPENAI_API_KEY

— AWS_SECRET_ACCESS_KEY

— database credentials

— GitHub tokens

— production secrets

Технічно .env не потрапив у Git.

Але секрет усе одно лежить plaintext-файлом поруч із кодом.

Саме тому я зробив SecureVault — open-source secret manager для локальних developer workflows.

Замість:

project/.env → API_KEY=super-secret-value

секрет зберігається в native credential storage вашої ОС:

macOS → Keychain

Windows → Credential Vault

Linux → Secret Service

А потрібному процесу SecureVault передає його тільки під час запуску:

securevault run node server.js --profile dev
securevault run docker compose up --profile production
securevault run terraform apply --profile aws

Ніяких plaintext secrets у репозиторії.

Ніякого .env, який випадково прочитає AI agent.

Дисклеймер

Утиліта призначена для локальної розробки, не для продакшену.

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Звучить цікаво, дякую

Кладите секреты в гит и делайте деплоймент с ними
Локальные креды для разработки и тестов
Пост закрыт

Вчора тільки прочитав про схожу утіліту aws vault github.com/99designs/aws-vault вона тимчасові короткострокові токени генерує. Але це рішення тільки для aws.

Також відносно нещодавно з’явилось комплексне рішення від Docker. Сандбокс (sbx) для агентів.

Там також є рішення для зберігання секретів ззовні контейнеру з агентом. Токени інжектяться у http проксі. І це не єдине рішення такого роду. Зараз з цим якраз розбираюсь.

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

а в пермішинах виставити deny Read(.env*) хіба недостатньо?.. але я сам в це не вірю, так)

Хороша ідея, але ніщо не заважає агенту зробити Bash(cat .env)
Можна заборонити і це , але він знайде спосіб прочитати файл якщо треба.

www.passwordstore.org

Але навіть з цим: що заважає агенту виконати printenv?

Ця можливість є у будь-якого user space додатку, а моя утиліта призначена не допустити читання агентом plaintext .env що лежить в корені репо під час локальної розробки. Взяти той самий docker compose — щось краще plaintext .env я поки не зустрічав. Принаймні в себе на проєкті — біля 60 мікросервісів. І всюди сталий патерн — для локального прогону потрібно створити якийсь untracked файлик за зразок .env чи appsettings.json де зазвичай лежать сенситивні дані. Сам файлик до речі часто попадає в гіт через неуважність розробників. Я вже не кажу про те що корпоративний Copilot його спокійно читає. Це звісно, не проблема, бо він корпоративний. Але це не зовсім правильно.

Ви можете логічно заперечити, чому б не використати якийсь Azure KeyVault чи AWS Secrets Manager.
Звісно, це набагато краща альтернатива, але вона потребує переписування коду самого додатку і не зовсім зручна для локальної розробки.

Я до того, що мабуть треба йти шляхом devcontainers + auth proxy, коли в контейнері взагалі немає ніяких секретів, та будь який код (агент, 3рд парті пакет) не може ніяк його дізнатись, навіть зробивши інтроспецію процесів. А ключи вже додаються в HTTP headers на рівні проксі-сервера.

Дисклеймер: Утиліта призначена для локальної розробки з ШІ, не для продакшену

Ні, бо користуюся «шішками» або локальними, або коли онлайн то лише через браузер, питаю шо треба знати для вирішення задачі і коли пропонує перелік — переглядаю з уточнюючими запитаннями «а навіщо саме це тобі знадобилося».

локальними

Якщо не секрет, то якими?

боюся спитати — а в до-ллм-ну епоху ти ніколи не пробував підключитись до «потрібного процесу», щоб його продебажити? не пам’ятаєш раптом, чи видно там всередині всі оті параметри і креди, які ти іззовні передав? ;)
а зараз в ролі дебаггера якраз ллм-ка часто і виступає.
але це так, ліричний відступ.

головне — ти пропонуєш передавати мої секрети якомусь npm package, в секюрності якого я зовсім не впевнений (і не маю бажання вичитувати вихідний код на пошук прихованих бекдорів). ще й дати йому доступ до ОС credentials store.
при тому що якщо б я вирішив чомусь заморочитись, я б краще Infisical в докері підняв, у них хоч SOC 2 є, що передбачає якийсь аудит.
тому вангую що «не взлетить».

Схіралі на «ти», шановний?

а яка нафік різниця. я в інеті з усіма на ти
ні, ну іноді я намагаюсь «викати», бо окремі особистості агряться.
але переважно забиваю. ;)

Джаваскріптери тільки на Ви, що за питання

З підключенням, перший день в інтернеті?

Ви на роботі з незнайомими колегами на ти чи на ви?

Підозрюю, що аби отримати у відповідь

шановний

та

Схіралі

в одному реченні. Не кожного дня можна побачити таку витончену комбінацію ))

lol барон з франківського вокзалу обурився :D

Это когда аргументов нет, то такое пишут...

Найголовніше не уподібнюватись інородцям, навіть з українськими прізвищами, які намагаються зневажати і плюндрувати нашу традиційну українську культуру.

Проблема свинособацтва, так само як і наприклад, проблема свинства через розкидання сміття, вмовляннями і переконуваннями не вирішуються. Лише через невідворотність справедливого, наприклад адміністративного, покарання.

ти пропонуєш передавати мої секрети якомусь npm package, в секюрності якого я зовсім не впевнений

+100500