Песочница и безопасность Codex CLI
Codex CLI имеет встроенные механизмы песочницы и политики безопасности, которые защищают систему и данные, помогая вам писать код. В этом разделе подробно описаны эти механизмы безопасности и способы их настройки.
Механизм песочницы
Codex выполняет команды и работает с файлами в изолированной среде песочницы. Такая архитектура обеспечивает:
- Изменения в файлах вашего проекта можно контролировать
- Потенциально опасные команды требуют вашего подтверждения
- Конфиденциальные данные не будут случайно раскрыты
Песочница — это первая линия защиты в политике безопасности Codex, гарантирующая, что операции ИИ не выйдут за пределы ваших ожидаемых границ.
Стратегия выполнения
Codex использует политику выполнения для управления поведением различных типов операций:
Типы политик
| Политика | Поведение | Применимые сценарии |
|---|---|---|
ask | Спрашивать при каждом выполнении | Повседневная разработка (по умолчанию) |
approve | Автоматически одобрять выполнение | Полностью доверенная среда |
deny | Отклонять все операции, которые могут иметь побочные эффекты | Режим только для чтения |
Операции, требующие подтверждения
Следующие типы операций вызывают запросы на подтверждение:
- Выполнение команд Shell (особенно
rm、killи т.д.) - Изменение или удаление файлов
- Создание нового файла
- Доступ к конфиденциальным каталогам (например,
~/.ssh/、/etc/) - Сетевые запросы (в определённых случаях)
Настройка политики выполнения
Установка политики выполнения в конфигурации
default_policy = "ask"
Из соображений безопасности не рекомендуется устанавливать политику по умолчанию в значение
approve, если вы не полностью понимаете потенциальные риски.
Диалог подтверждения
Когда Codex требуется выполнить чувствительные операции, отображается диалог подтверждения:
══════════════════════════════════════════════════════ 确认执行 ══════════════════════════════════════════════════════ Codex 计划执行以下操作: 命令: rm -rf node_modules/ 目录: /path/to/project 这将永久删除目录及其所有内容 [Y] 确认执行 [N] 取消 [A] 始终允许此类操作 ══════════════════════════════════════════════════════
Описание параметров
| Параметры | Описание |
|---|---|
Y | Выполнить только один раз |
N | Отменить операцию |
A | Добавить правила, затем автоматически одобрять |
Будьте осторожны при выборе «Всегда разрешать» и убедитесь, что операция действительно безопасна.
Контроль доступа к файлам
Защищённые каталоги
Некоторые системные каталоги защищены по умолчанию, и Codex запросит дополнительное подтверждение при доступе к ним:
| Каталог | Описание |
|---|---|
~/.ssh/ | SSH-ключи и конфигурация |
~/.aws/ | Учётные данные AWS |
/etc/ | Конфигурация системы |
~/.git-credentials | Хранилище учётных данных Git |
Пользовательские правила защиты
Вы можете добавить пользовательские правила защиты в конфигурации:
Правила доступа к файлу конфигурации
# Разрешённые каталоги
allowed_paths = [
"~/projects/*",
"/workspace/*"
]
# Защищённые каталоги (требуется дополнительное подтверждение)
protected_paths = [
"~/.ssh/*",
"~/secrets/*"
]
Контроль доступа к сети
Codex может ограничивать область доступа сетевых запросов:
Настройка сетевого доступа
# Разрешённые домены
allowed_domains = [
"github.com",
"api.openai.com"
]
# Разрешать ли доступ к локальной сети
allow_localhost = false
# Разрешать ли частную сеть
allow_private_network = false
Ограничение доступа к сети предотвращает случайное подключение Codex к недоверенным сервисам.
Ограничения рабочей директории
Вы можете ограничить Codex так, чтобы он работал только в определённых директориях:
Ограничить рабочую директорию
# Codex может работать только в этих директориях
working_directories = [
"~/projects/*",
"/workspace/*"
]
# Поведение вне директории: warn (предупреждение) или deny (отказ)
out_of_bounds = "deny"
Белый/чёрный список команд
Режим белого списка (рекомендуется)
Разрешать выполнение только явно перечисленных команд:
Белый список команд
# Режим белого списка
whitelist_enabled = true
allowed_commands = [
"git",
"npm",
"node",
"python",
"cargo"
]
Режим чёрного списка
Запрет выполнения определённых команд:
Чёрный список команд
# Режим чёрного списка
blacklist_enabled = true
blocked_commands = [
"rm -rf /",
"dd",
"mkfs"
]
Режим белого списка более безопасен, и его рекомендуется использовать в производственных средах или при работе с конфиденциальными проектами.
Обработка конфиденциальных данных
Автоматическая блокировка
Codex автоматически обнаруживает и блокирует конфиденциальную информацию:
- Ключи API и пароли
- Токены и информация для аутентификации
- Персонально идентифицируемая информация (PII)
Защита переменных окружения
Некоторые переменные окружения автоматически скрываются:
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY OPENAI_API_KEY DATABASE_URL
Укажите конфиденциальные данные вручную
Вы можете вручную отметить в конфигурации содержимое, требующее защиты:
Пользовательские шаблоны конфиденциальных данных
# Шаблоны регулярных выражений для блокировки
patterns = [
"password\\s*=\\s*[^\\s]+",
"api_key\\s*=\\s*[^\\s]+",
"secret\\s*=\\s*[^\\s]+"
]
Журналы аудита
Codex может записывать журналы аудита всех операций:
Включить ведение журнала аудита
enabled = true
log_file = "~/.codex/log/audit.log"
Содержимое журнала
Журналы аудита фиксируют следующую информацию:
- Отметка времени
- Тип операции
- Задействованные файлы или команды
- Результат операции (успех/ошибка)
- Статус подтверждения пользователем
Просмотр журнала аудита
tail -f ~/.codex/log/audit.log
Журналы аудита очень важны для аудита безопасности и устранения неполадок, особенно в командных средах.
Лучшие практики безопасности
Среда разработки
- Использовать политику выполнения по умолчанию (ask)
- Включить ведение журнала аудита
- Настроить белый список команд
Производственная среда
- Ограничить рабочую директорию
- Использовать режим белого списка
- Отключить ненужный сетевой доступ
- Включить полное ведение журнала аудита
Чувствительные проекты
- Использовать самые строгие правила защиты
- Внимательно проверяйте каждый запрос на подтверждение
- Регулярно проверяйте журналы аудита
ЧАВО
Вопрос: Где настраивается политика выполнения?
Политика выполнения в основном настраивается через~/.codex/config.tomlНастраивается через файл конфигурации. Некоторые параметры также можно настроить через переменные среды.
Вопрос: Что делать, если я случайно нажал "Всегда разрешать"?
Удалите соответствующие правила в файле конфигурации или удалите весь файл конфигурации и перезапустите Codex — правила будут сброшены.
Вопрос: Может ли Codex получить доступ к моему токену GitHub?
Codex запрашивает необходимые разрешения GitHub для выполнения операций. Вы можете отозвать эти разрешения в любой момент в настройках GitHub.
Вопрос: Как полностью отключить изменение файлов?
Установите политику выполнения вdeny, что запретит Codex выполнять любые операции, которые могут изменить файловую систему.