# Безопасность и приватность

← [Раздел](README.md) · [Главная](../README.md)

## Цель

Избежать **утечки секретов** и понять, **какие данные** уходят в модель и провайдера при работе в Cursor и ECC.

## Предварительно

- Базовое понимание `.env`, API keys, git
- [01 — Введение в AI](../01-vvedenie-v-ai/README.md)

## Время

**45–75 минут** (чтение + аудит учебного репо)

---

## Что считается секретом

| Категория | Примеры | Никогда в промпт |
|-----------|---------|------------------|
| Учётные данные | Пароли, токены, private keys | ✓ |
| API keys | `sk-...`, AWS access key | ✓ |
| PII | Паспорта, карты, адреса клиентов | ✓ |
| Внутренние URL | Admin-панели, VPN endpoints* | Осторожно |
| Проприетарный код | Если NDA запрещает облако | Политика компании |

\* В **учебных** примерах курса используйте `example.com`, `YOUR_API_KEY`, `10.0.0.0/8` как заглушки.

---

## Куда «уезжают» данные

При запросе к облачной модели в Cursor:

1. Текст промпта и прикреплённый контекст отправляются **провайдеру модели** (по политике Cursor).
2. Результаты tools (файлы, вывод команд) тоже могут попасть в контекст модели.
3. **Локальные** модели (если настроены) — другая модель угроз.

Прочитайте актуальные **Privacy / Security** docs Cursor и политику вашего работодателя.

---

## Чеклист безопасной сессии

- [ ] `.env` в `.gitignore` и не в `@`-упоминаниях
- [ ] В промпте нет копипасты из vault/1Password
- [ ] Агент не логирует секреты в комментарии кода
- [ ] `git diff` перед commit — нет случайных ключей
- [ ] Для прод-багов — **обезличенные** логи

---

## .cursorignore и .gitignore

Как `.gitignore` скрывает файлы от git, **` .cursorignore`** (если используется) ограничивает индексацию для AI:

```
.env
.env.*
*.pem
secrets/
credentials.json
```

Добавьте шаблоны **до** первого Agent-запроса на репозитории.

---

## ECC и AgentShield

В экосистеме ECC есть направления **security**:

- rules и skills про безопасность (`security-reviewer`);
- **AgentShield** — сканирование конфигов и сессий на риски (см. документацию ECC).

На уровне курса 02: treat ECC как **усилитель** дисциплины, не замену здравому смыслу.

---

## Типичные инциденты новичков

| Инцидент | Последствие | Профилактика |
|----------|-------------|--------------|
| «Вот мой `.env`, почини подключение» | Утечка ключа | `@` только структура без значений |
| Commit `.env` | Git history навсегда | pre-commit hook, gitleaks |
| Скриншот с токеном в чат | Утечка в логах | Редактировать, ротировать ключ |
| Агент добавил `password=123` в пример | Попадание в репо | Rule: placeholder only |

Если ключ засветился — **ротируйте** немедленно, не «надеемся никто не увидел».

---

## Приватность пользователей

При разработке фич с персональными данными:

- не вставляйте реальные дампы БД в промпт;
- используйте synthetic data;
- соблюдайте GDPR/152-ФЗ на уровне процессов компании.

AI не снимает юридические обязательства.

---

## Корпоративные режимы

В компаниях могут быть:

- запрет облачных LLM на прод-коде;
- только Enterprise Cursor с DPA;
- self-hosted или VPC endpoints.

Уточните у security **до** экспериментов на рабочем репо.

---

## Безопасные примеры в промптах

**Плохо:**

```
Подключись к postgres://admin:Sup3rS3cr3t@db.internal:5432/prod
```

**Хорошо:**

```
Подключение через DATABASE_URL из env (значение не показывать).
Проверь, что код читает os.Getenv("DATABASE_URL") и валидирует DSN.
```

---

## Практика: мини-аудит

На учебном репозитории:

1. `grep -r "sk-" .` (или аналог) — ложные срабатывания тоже полезны.
2. Проверьте `.gitignore` на `.env`.
3. Добавьте одно rule: «никогда не хардкодить секреты; использовать env и placeholders в примерах».

---

## Связь с разделом 04

Оформите политику секретов как [project rule](../04-rules/user-vs-project-rules.md).

---

## Самопроверка

1. Назовите три типа данных, которые нельзя отправлять в промпт.
2. Почему rotation важнее «удалить сообщение из чата»?
3. Чем `.cursorignore` может помочь?
4. Что сделать, если агент закоммитил fake password в тест?

## Дальше

→ [03 — Промпты](../03-prompts/README.md)
