02
Основные блокирующие дефекты находятся в правах и сети
Рабочая область, SSH и macOS должны отзывать доступ независимо
В реестре приёмки для каждого инженера должны быть отдельные строки:
- учётная запись в рабочей области и назначенная роль;
- личный SSH-ключ с владельцем, датой выдачи и причиной доступа;
- локальная учётная запись macOS и членство в группах;
- разрешения на каталоги исходного кода, кэш зависимостей и артефакты;
- наличие или отсутствие права на
sudo;
- дата последнего входа и ответственный за отзыв.
Затем выполняется не теоретическая, а контрольная процедура: блокируется рабочая область, удаляется SSH-ключ, отключается локальный пользователь и проверяется невозможность повторного входа каждым из старых способов. Результат должен сохраняться как доказательство, а не только отмечаться в заявке.
Как Codex App ограничить в командах при подключении к корпоративному Mac? Сначала фиксируется режим подтверждения и политика выполнения Codex, затем отдельно ограничиваются SSH-пользователь, локальные каталоги и сетевые направления. Нельзя считать один переключатель Codex заменой политике SSH или разрешениям macOS. Возможности управляемого выполнения и администрирования нужно проверять по официальной справке OpenAI по Codex, потому что название режима не доказывает фактический запрет команды.
Контрольная попытка должна включать чтение закрытого файла, запись за пределами рабочего каталога, запуск запрещённой административной операции и обращение к непредусмотренному домену. Для каждого действия фиксируются команда, ответ политики, запись в журнале и отсутствие обходного пути через другой процесс.
Сеть — это не только разрешённый SSH-порт
Даже если вход ограничен, Agent может работать с внешними пакетными источниками, внутренним Git-сервисом, системой задач, реестром контейнеров или API тестовой среды. Для каждого направления необходимо определить:
- зачем оно нужно сборке;
- какой домен или адрес разрешён;
- разрешён ли только исходящий доступ;
- какие данные могут покинуть узел;
- где хранится журнал соединения;
- кто утверждает временное расширение правила.
Отдельно проверяется DNS, прокси и доступ к внутренним пакетам. Запрет на прямой адрес не имеет смысла, если то же назначение доступно через другой домен или неконтролируемый прокси. Приёмка должна включать контролируемую попытку обратиться к запрещённому endpoint и подтвердить отказ на фактическом Mac.
Подпись приложения должна оставаться за пределами общего Agent-узла
Как изолировать сертификаты iOS на удалённом Mac с Codex? Не размещать производственный сертификат, ключ подписи и постоянные учётные данные публикации на обычном узле, где Agent читает исходный код и выполняет произвольные задачи. Codex может собирать неподписанный или тестовый артефакт, а доверенный процесс после ревью принимает его на отдельном Mac и выполняет подпись.
Официальные материалы Apple по настройкам сборки Xcode помогают определить, какие параметры относятся к сборке, но сами по себе не задают корпоративную границу между разработкой и публикацией. Сертификаты, профили и ключи должны рассматриваться как отдельная зона доверия.
Нужно проверить не только Keychain. Секреты могут находиться в:
- переменных окружения процесса;
- файлах конфигурации проекта;
- кэше зависимостей;
- логах сборки;
- временных каталогах;
- артефактах CI;
- истории оболочки;
- резервных копиях рабочего каталога.
Даже если сертификат удалён после задачи, его отпечаток или содержимое могли попасть в лог. Для производственного узла полезнее короткоживущая выдача секрета через доверенный workflow, чем постоянный файл, доступный локальному пользователю.
Может ли OpenAI Codex завершить сборку Xcode через удалённый Mac? Да, технически это возможно, если на узле установлены совместимые инструменты, исходный код, зависимости и разрешённая схема сборки. Но успешная компиляция не означает право на подпись, публикацию или доступ к App Store Connect. Поддержку инструментов и командной строки следует сверять с документацией Apple по установке Command Line Tools, а производственную подпись проверять как отдельный этап.