Руководство · Безопасность · AI
Безопасность данных в AI: базовый чеклист
Не отправляйте секреты и персональные данные без политики; минимизируйте контекст; проверьте настройки, .gitignore и доступы перед пилотом в Cursor или ChatGPT.

Безопасность данных в нейросетях и AI-инструментах: с чего начать
Когда я говорю «безопасность данных в нейросетях», я не про сертификацию и не про ISO на стене. Я про здравый минимум: что вы сами положили в модель, что может уехать в git, лог или историю чата, и кто ещё сидит в аккаунте. Искусственный интеллект и безопасность данных встречаются в самой скучной рутине. Переписка с клиентами. Токены ботов. Черновой код. Выгрузка из CRM «на пять минут».
Я видел, как человек искренне считал, что «это же мой личный ChatGPT, никто не узнает». И через неделю пересылал тот же чат коллеге в Telegram, потому что «там уже готовый ответ». Контур расширяется сам, если его не резать руками.
Что считается «данными» в вашей рутине
Для самозанятого или микробизнеса «данные» - не абстрактная «информация». Это конкретные файлы и куски текста, которые вы таскаете между чатом, репо и таблицей:
| Категория | Примеры из практики | Куда может утечь |
|---|---|---|
| Секреты | API-ключи, .env, SSH, токены Telegram-бота | промпт, git, лог агента, MCP |
| ПДн клиентов | ФИО, телефон, адрес, переписка WhatsApp | ChatGPT history, training (на личном тарифе) |
| Финансы | реквизиты, выписки, номера карт | тот же контур + форвард в чат |
| Прод без маски | дамп БД, живые заявки | Agent пишет в файл, terminal читает .env |
| Метаданные процесса | внутренние URL, структура CRM | контекст @-файлов, rules |
Безопасность данных в ai у меня начинается с неприятного списка на одну страницу: что в проекте нельзя показывать ни модели, ни коллеге на скрине Agent. Если список живёт только в голове, вечером его победит «надо срочно».
Политика компании vs личный пилот
Если вы в найме - сначала политика работодателя и NDA. Личный Cursor на pet-проекте не отменяет запрет на клиентские базы. Я это повторяю, потому что «домашний эксперимент» часто стартует с живого clients.csv.
Если вы на себе - всё равно одной страницей зафиксируйте: в промпт можно структуру формы, нельзя телефоны из таблицы. Без такой страницы каждый вечер решение принимается заново. И почти всегда побеждает «на быструю руку».
Дисклеймер: не юридическая консультация
Я описываю техническую гигиену и типичные риски Cursor, ChatGPT и агентов по документации вендоров: Cursor privacy и OpenAI data usage. Это не замена юриста по 152-ФЗ, GDPR или договору с клиентом. Если юрист сказал «ПДн в облако нельзя» - слушайте юриста. Чеклист ниже про другое: не скормить лишнее случайно, пока вы ещё «просто пробуете».
Что нельзя отправлять в ChatGPT и другим AI-сервисам

Безопасность chatgpt у меня держится на одной проверке. Если вы не готовы, что текст обработает провайдер и он может оказаться в history или training, не отправляйте. OpenAI прямо пишет: не делитесь чувствительным, к чему не готовы (privacy overview). Я читал это и всё равно ловил людей, которые вставляли токен «на секунду». Секунда здесь ничего не значит. Запрос уже ушёл.
Пароли, API-ключи, токены
Нельзя отправлять в chatgpt значения TELEGRAM_BOT_TOKEN, DATABASE_URL, ключи платёжек, пароли админки. Даже с мыслью «потом удалю чат». На Free/Plus/Pro чаты по умолчанию могут участвовать в улучшении модели, пока вы не выключите «Improve the model for everyone» в настройках.
Я сам прошу на разборе: покажите, что в промпте имена переменных, а не значения. Если в чате уже светится токен - сначала ротация, потом разговор про handler.
Персональные данные клиентов
Персональные данные chatgpt - отдельный частый запрос. Полная выгрузка CRM. Скрин переписки с именем и телефоном. Таблица заявок «чтобы ИИ написал ответы». Это типичный антипаттерн. Для черновика ответа хватает шаблона без идентификаторов: клиент спрашивает про доставку, вот три варианта формулировки. Без ФИО. Без номера.
Мне жалко время на «красивые ответы», если цена - живая база. Черновик без имён работает почти так же. С именами работает нервы юриста.
Внутренние финансы и прод-код с секретами
Выписки, договоры с реквизитами, живой config.prod.ts с ключами - в тот же запретный список, что и ПДн. Сырой прод-код с секретами опаснее учебного snippet. Потом вы или агент скопируете фрагмент в issue или лог и забудете, что там ключ.
Таблица «что не отправлять» (сжатая):
| Нельзя | Можно с оговоркой |
|---|---|
пароли, ключи, .env | имена переменных без значений |
| ПДн, медданные, паспорт | обезличенный пример структуры |
| дамп prod-БД | синтетические 3-5 строк |
| скрин WhatsApp с клиентом | описание проблемы словами |
| trajectory агента с секретами | ничего - не публикуйте сырые логи |
Для разовых чувствительных тем на личном ChatGPT берите Temporary Chat: не в history, не для training, с ограниченным хранением для safety (data controls). Это не индульгенция на ПДн. Это меньше следов, если тема уже щекотливая.
Нейросети и конфиденциальность: минимизируйте контекст
Нейросети и конфиденциальность на практике - не одна галочка. Это сколько лишнего вы положили в контекст. Модель не обязана читать весь диск. Agent в Cursor читает workspace, если вы не сузили scope и ignore. Я видел сессии, где человек спрашивал про одну кнопку, а в контексте лежала выгрузка за полгода. Кнопку починили. База тоже побывала у модели.
Обезличивание примеров
Вместо «вот 200 строк заявок из Google Sheets» дайте три строки с CLIENT_A, PHONE_XXX и пометкой «ошибка в колонке статус». Вместо реального домена клиента - example.com. На разборе я часто прошу: убери всё, по чему человека можно найти в поиске. Имя плюс город плюс сумма заказа - уже достаточно, чтобы это перестало быть «учебным примером».
Не тащить весь репозиторий в промпт
@ на корень репо. «Проанализируй проект целиком». Открытая папка Downloads с выгрузками. Это лишний контекст. Нужны entrypoint и 1-3 файла по задаче. Подробнее про границы - в контексте проекта для Cursor. Я предпочитаю скучный узкий @ узкому вопросу, чем «пусть агент сам разберётся». Сам разберётся и в .env.bak.
Вырезать лишние файлы из контекста
Перед сессией проверяю: в папке проекта нет clients.csv, backup.sql, старых .env.bak. Если лежат - вынести из workspace или закрыть ignore. Agent не злоумышленник. Он автономно читает то, что видит в дереве, если rules не запрещают. Это скучно. Это работает.
Чеклист минимизации:
- 01
Один вопрос - один узкий scope путей.
- 02
Обезличить идентификаторы в примерах.
- 03
Не прикладывать бинарные выгрузки и скрины с ПДн.
- 04
Rules: «не читать
.env*,exports/,backups/». - 05
После сессии - не форвардить полный лог в общий чат.
Пятый пункт я добавил после того, как люди чистили промпт и тут же кидали «весь тред агента» в общий чат поддержки. Тред содержит больше, чем видимое сообщение.
Cursor и безопасность: контекст проекта и режим агента

Cursor и безопасность для рабочего кода у меня складываются из трёх слоёв. Что видит модель. Что Agent пишет в файлы. Что уходит на backend Cursor даже с Privacy Mode. Путать эти слои опасно: галочка в настройках закрывает обучение, не закрывает inference.
Privacy Mode и передача данных
Privacy Mode включаю через Ctrl+Shift+J (privacy help). Режим значит: код и промпты не идут в обучение Cursor и провайдеров, zero data retention с оговорками у провайдеров (data use). Это не «данные не покидают компьютер». Контекст всё равно отправляется OpenAI, Anthropic, Google для inference.
Даже со своим API key запрос идёт через backend Cursor. ZDR Privacy Mode на own keys не распространяется - действует политика провайдера ключа. Я это отдельно проговариваю, потому что «свой ключ» звучит как локальный замок. Это другой договор, не локальный диск.
Временный кэш файлов на серверах Cursor при Privacy Mode - шифрование, не permanent storage по доке. При abuse-детекторах данные могут временно храниться для расследования. Одна строка, которая снимает миф «100% zero retention навсегда». Мне этот миф не нравится: он расслабляет сильнее, чем выключенный training.
Agent vs Ask
Ask меняет только ответ в чате. Agent меняет workspace, запускает terminal, подключает MCP (agent security). Agent пишет в файлы без approve, кроме config. Terminal и MCP - с approve по умолчанию, но это best-effort, не hard boundary. Границы автономии - в Cursor Agent mode. После правок агента прогоняйте diff и тесты по как проверять код от ИИ.
Я Ask оставляю, когда нужно подумать над куском. Agent включаю, когда готов смотреть, какие файлы он трогает. Если не готов смотреть - не давайте ему корень репо.
Rules, MCP и контекст
Rules в репо задают запреты, но не заменяют ignore. MCP-токены в конфигах - отдельный риск: лишняя интеграция = лишний канал. Я отключаю MCP, без которых не могу объяснить, зачем они в этой задаче. «На всякий случай подключил» для меня красный флаг. На всякий случай канал уже открыт.
Секреты в GitHub и локально: `.gitignore`, `.env` и gitignore env
Секреты в github чаще попадают не потому, что репо публичное. Чаще потому, что .env когда-то закоммитили, а потом добавили строку в ignore и успокоились. .gitignore игнорирует только неотслеживаемые файлы (gitignore). Уже tracked .env остаётся в истории, пока не сделаете git rm --cached и не ротируете ключ.
Я видел «приватное репо, там безопасно» и в том же репо старый коммит с токеном бота. Приватность репо не отменяет историю. И не отменяет скрин из лога.
Шаблон .gitignore
До первого git add кладу в корень:
# Секреты и ключи - не коммитить
.env
.env.*
.env.local
secrets/
credentials.json
*.pem
*.key
config.local.*
# Сборки и зависимости
node_modules/
dist/
coverage/
.DS_StoreПаттерны .env и .env.* закрывают env в корне и подпапках - типичный gitignore env запрос из поиска. Рядом кладу .env.example с пустыми полями: TELEGRAM_BOT_TOKEN= без значения. Пустой пример учит команду лучше, чем лекция.
Дублирование в .cursorignore
Те же пути плюс явный комментарий про terminal и MCP:
# Agent/Tab/@ не видят эти пути - но terminal/MCP могут обойти
.env
.env.*
secrets/
credentials.json
*.pem
*.key
exports/
backups/
*.sqlДокументация Cursor: .cursorignore блокирует Agent, Tab, @; terminal и MCP не гарантируют блокировку; complete protection isn't guaranteed (ignore files). .env* частично в default ignore, но явный список я всё равно держу. Default меняется. Список в репо читается глазами.
Если ключ уже в git
- 01
Немедленно ротировать секрет - отзыв важнее красоты истории.
- 02
Удалить из рабочей копии,
git rm --cached .env(или путь к файлу). - 03
GitHub Secret Scanning на публичных репо сканирует историю (secret scanning); при алерте - ротация, не только вычищение строки.
- 04
Не полагаться на «приватный репо» - утечка из лога, скрина, форварда чата отдельна.
Pre-commit привычка: перед push git status не показывает .env в staged. OWASP напоминает: секреты в plaintext в коде и логах - типичная утечка (secrets cheat sheet). Красивая история git с отозванным ключом меня волнует меньше, чем живой ключ в BotFather.
Публичные логи агента и MCP: почему пароли всплывают сами
В новостной ленте всплывает сигнал: из публичных логов агента извлекли пароли - не из видимого чата, а из trajectory и скрытых блоков reasoning. Я не цитирую чужие цифры и не копирую их статью. Угол для вас простой. Если секрет попал в промпт или в workspace, он может оказаться в экспорте сессии, issue, скрине «помогите отладить». Люди чистят чат и забывают про полный лог. Лог помнит дольше UI.
Логи и trajectory
Пользователь вставил ключ «на секунду», удалил сообщение в UI - в полном логе агента след может остаться. Публикация trajectory в GitHub issue, Telegram, форум - тот же риск, что commit с .env, только канал другой. Я не выкладываю сырые логи Agent наружу. Для поддержки - обезличенный фрагмент без env и без ПДн. «Вот ошибка в колонке статус, вот три синтетические строки» хватает чаще, чем кажется.
MCP и terminal обходят «аккуратный промпт»
Агенту можно сказать «не трогай .env». Команда cat .env в terminal с approve - другой путь. MCP с доступом к внешним API может отправить контекст дальше. .cursorignore здесь не security boundary. Помните формулировку из доки Cursor. Я approve на terminal не ставлю автоматом, пока не понимаю команду. Лень здесь стоит ключа.
Что делать профилактически
- Не auto-approve terminal/MCP, пока не понимаете команду.
- Отключить лишние MCP-серверы между проектами.
- Не хранить production-секреты в репо, доступном Agent.
- Version control и ветки - откат, но не замена ротации ключа (agent security).
Связка с Git и Cursor: ветка спасает код. Ветка не спасает уже отправленный промпт. Оба контура нужны. Я это повторяю на разборах, потому что люди чинят git и думают, что ChatGPT тоже «откатился».
Базовый чеклист безопасности данных в AI-инструментах

Ниже базовый чеклист, который я прохожу сам перед пилотом Cursor или ChatGPT в клиентском контуре. Семь пунктов. По порядку. До первого промпта с реальными данными, не «когда-нибудь на выходных».
- 01
Политика «что можно / нельзя». Одна страница или блок в Notion: секреты, ПДн, финансы - запрет; структура без идентификаторов - можно. Команда из двух человек тоже нуждается в общем списке. Иначе получите «коллега уже кидал базу в ChatGPT», и вы узнаете об этом из чужого скрина.
- 01
Чек секретов и MCP. Список всех API-ключей, bot tokens, MCP configs. Где лежат, кто имеет доступ, когда последняя ротация. Если «когда» не помните - считайте, что пора.
- 01
.gitignore+.env.example. Шаблоны выше. Если.envуже tracked -git rm --cachedи ротация. Push protection на GitHub - страховка, не замена дисциплины. Страховка ловит часть. Не ловит вставку в чат.
- 01
Минимум контекста. Узкий @, обезличенные примеры, нет выгрузок в папке проекта. См. контекст проекта.
- 01
Настройки сервиса. ChatGPT: выкл. «Improve the model» на личном плане; Temporary Chat для чувствительного. Cursor: Privacy Mode Ctrl+Shift+J.
- 01
.cursorignoreс оговоркой. Файлы закрыты для @, но terminal/MCP могут обойти - approvals и запретcatсекретов в rules.
- 01
Ревизия доступов и три сценария. Кто имеет репо, cloud agents, общий ChatGPT. Прогон: (а) новый сотрудник - что видит; (б) уволился подрядчик - что отозвать; (в) утёк ключ - ротация за 15 минут, план записан. Пункт (в) без записанного плана превращается в панику в два часа ночи.
Таблица «где включается настройка»:
| Инструмент | Действие | Где |
|---|---|---|
| Cursor | Privacy Mode | Ctrl+Shift+J, Settings |
| ChatGPT | training off | Settings → Data controls |
| ChatGPT | Temporary Chat | переключатель в новом чате |
| Git | ignore секретов | .gitignore в корне |
| Cursor | ignore контекста | .cursorignore |
| GitHub | secret scanning | репо public / GHAS |
Я эту таблицу держу рядом с чеклистом, потому что люди ищут галочку «безопасность» в одном месте. Галочки размазаны по продуктам.
Безопасное использование искусственного интеллекта в работе
Безопасное использование искусственного интеллекта в работе для SMB - не запрет на AI. Это предсказуемый контур: вы знаете, что уходит в облако, что остаётся обезличенным, кто отвечает за ключи. На бесплатном тарифе Cursor и личном ChatGPT этого хватает для черновиков, скриптов автоматизации, прототипов - если чеклист выше не «для галочки».
Когда бесплатного не хватает, платите за продукт, не за «магическую защиту». Business/Enterprise ChatGPT и Teams Cursor дают другие defaults по training и админке. Правило «не класть ПДн без правовой базы» они не отменяют. Корпоративный план упрощает админку. Он не делает юриста лишним.
Обучение команды у меня не лекция про нейросети. Пять минут на созвоне: вот .env.example, вот запрет на выгрузки в промпт, вот куда писать, если ключ светился. На наставничестве разбираю именно такой контур под ваш стек - бот, CRM, лендинг. Стек разный. Дыры одни и те же: секрет в чате, широкий @, общий аккаунт.
По теме в блоге: контекст проекта, Agent mode, Git и Cursor, как проверять код от ИИ.
Типичные ошибки и как их исправить
Здесь не общие советы «будьте осторожны». Пять ошибок с разборов и конкретный фикс. Я их вижу чаще, чем хотелось бы, и почти всегда в связке: сначала секрет в чате, потом широкий Agent, потом «ну репо же приватное».
Секреты в промпте «на быструю руку»
Симптом: вставили TELEGRAM_BOT_TOKEN в ChatGPT или Cursor «чтобы сгенерировал handler». Фикс: немедленная ротация токена в BotFather; новый ключ только в .env, не в чат; политика «значения секретов только в env, в промпт - имена переменных». Удаление сообщения не отменяет inference. Сообщение можно стереть у себя. У провайдера запрос уже был.
Весь репозиторий в контекст Agent
Симптом: @ на корень, Agent прочитал exports/clients.csv и .env.bak. Фикс: сузить workspace; .cursorignore на exports/, backups/; rules «не читать вне src/»; один entrypoint в промпте. См. контекст проекта. Узкий вопрос не нуждается во всей истории репо.
.env без gitignore или после «добавил ignore потом»
Симптом: .env в git log, Secret Scanning алерт. Фикс:
git rm --cached .env
git commit -m "stop tracking env"Ротация всех ключей из файла; .gitignore с .env и .env.*; проверка git status. Ignore постфактум не лечит историю. История лечится отзывом ключа. Коммит без ключа - гигиена для следующих людей.
Общий аккаунт ChatGPT или Cursor без 2FA
Симптом: несколько человек, история чатов с клиентскими данными, уволился стажёр - доступ остался. Фикс: отдельные аккаунты или корпоративный план с SSO; 2FA; не вести клиентскую переписку в личном Plus без training off. Общий пароль в заметке команды - это не «удобно». Это один человек навсегда в вашей истории чатов.
Игнор утечки в логах агента
Симптом: «ключ светился в логе, но в чате я удалил» - не ротировали; выложили trajectory в issue. Фикс: ротация немедленно; не публиковать сырые логи; отключить лишние MCP; не форвардить полный export сессии. Секреты могут быть в reasoning, не только в видимом тексте. UI врёт спокойствием. Лог не врёт.
| Ошибка | Первый шаг фикса |
|---|---|
| секрет в промпте | ротация |
| весь репо в Agent | сузить + ignore |
.env в git | rm --cached + ротация |
| общий аккаунт | разделить + 2FA |
| лог с паролем | ротация + не публиковать log |
Три возражения, которые слышу на разборах:
| Возражение | Короткий ответ |
|---|---|
| «Privacy Mode всё решил» | training off, не локальный ПК; провайдеры всё равно обрабатывают |
| «Приватный репо, не страшно» | логи, MCP, скрины - вне github |
| «Юрист запретил ПДн - значит AI нельзя» | юрист решает право; чеклист - не слить лишнее технически |
Последнее возражение путает два этажа. Юрист говорит, можно ли класть ПДн в облако. Чеклист говорит, как не положить туда ключ бота, пока вы ещё спорите с юристом. Оба этажа нужны. Один без другого даёт либо паралич («тогда вообще без AI»), либо дыру («юрист потом, а токен я уже вставил»).
Частые вопросы
Безопасны ли данные в нейросетях и ChatGPT?
Зависит от тарифа и настроек. На Free, Plus и Pro чаты по умолчанию могут участвовать в улучшении модели, пока не выключите «Improve the model for everyone» в Data controls. Temporary Chat - отдельный режим: не в history, не для training, с ограниченным хранением для safety. Это не юридическая консультация: для ПДн клиентов нужна правовая база, для черновиков - обезличивание.
Что нельзя отправлять в ChatGPT?
Пароли, API-ключи, содержимое .env, SSH-ключи, токены ботов, персональные данные клиентов, внутренние финансы, сырой прод-код с секретами, дампы БД и скрины переписки с идентификаторами. Даже если потом удалить сообщение, запрос уже обработан провайдером.
Можно ли отправлять персональные данные в ChatGPT?
Только если вы готовы к обработке провайдером и есть правовое основание. Для SMB-чеклиста я рекомендую обезличить: шаблон ответа без ФИО и телефона, синтетические строки вместо выгрузки CRM. Юрист решает «можно ли по закону»; статья про техническую минимизацию.
Как настроить gitignore env и не слить секреты в GitHub?
Добавьте в .gitignore паттерны /.env, /.env., secrets/, credentials.json, /.pem. Дублируйте те же пути в .cursorignore. Если .env уже был в commit, gitignore не поможет: git rm --cached .env, ротация ключей, при алерте GitHub Secret Scanning - снова ротация, не только удаление строки из истории.
Безопасен ли Cursor AI для рабочего кода?
Privacy Mode (Ctrl+Shift+J) отключает обучение на вашем коде и даёт zero data retention у провайдеров с оговорками, но промпты и контекст всё равно уходят на inference. Со своим API key запрос идёт через backend Cursor; ZDR Privacy Mode на own keys не распространяется. Agent пишет в workspace без approve, кроме config; terminal и MCP - с approve, но .cursorignore не блокирует terminal полностью.
Что делать, если ключ или пароль попал в лог агента?
Немедленно ротировать секрет - отзыв важнее вычищения текста. Не публиковать сырые trajectory и экспорт сессии: пароли могут быть в скрытых блоках reasoning, не только в видимом чате. Отключить лишние MCP, не auto-approve команды cat/grep по .env. Удаление сообщения в UI не отменяет уже отправленный контекст.
Связанные страницы

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





