Проверьте затронутые workflow в Insights до изменения политики; затем либо запретите pull_request_target, либо явно разрешите только необходимые workflow. Правило по умолчанию относится к публичным репозиториям без применимой политики событий. Для частных и внутренних репозиториев оно не действует.
Материал для руководителей IT, отвечающих за политики GitHub Actions в публичных репозиториях.
Для инженеров платформы, поддерживающих iOS/macOS CI и Mac Runner.
Для специалистов по безопасности, которым нужно обосновать и ограничить исключения.
Последнее обновление: 28 октября 2026 года. Даты и область действия сверены с официальным объявлением GitHub, документацией по политикам и защите workflow.
01 До оценки: определите область действия правила
Сначала установите, какие репозитории действительно подпадают под правило. GitHub объявил, что workflow execution protections доступны и что для публичных репозиториев без применимой политики событий предусмотрена оценка воздействия. Автоматическое применение к затронутым репозиториям запланировано на 2 декабря 2026 года. Частные и внутренние репозитории это правило по умолчанию не охватывает. Эти условия и дата указаны в объявлении о доступности workflow execution protections.
Какие репозитории затронет правило по умолчанию? Публичные репозитории, у которых нет применимой политики событий, ограничивающей выполнение workflow. Не переносите это заключение на всю организацию: проверьте видимость каждого репозитория и действующую для него политику. Публичность сама по себе ещё не доказывает, что конкретный репозиторий обязательно изменит поведение.
Соберите список репозиториев, где есть workflow с pull_request_target. Для каждого укажите владельца, назначение workflow, расположение файла, используемый тип Runner и ответственную команду. Файл workflow обычно находится в каталоге .github/workflows; сверяйте путь с фактической конфигурацией репозитория, а не с внутренним каталогом проектов.
| Категория репозитория | Действие до даты исполнения | Что зафиксировать |
|---|---|---|
| Публичный, применимой политики событий нет | Проверить результат оценки и подготовить решение: запретить событие или ограниченно разрешить необходимый workflow | Репозиторий, путь к файлу, владелец, результат оценки |
| Публичный, применимая политика уже есть | Проверить текущую конфигурацию и убедиться, что она соответствует ожидаемому поведению | Источник политики, область действия, связанные workflow |
| Частный или внутренний | Не считать его затронутым именно этим правилом по умолчанию; отдельно проверить действующие корпоративные ограничения | Видимость, политика организации и требования внутреннего контроля |
Чтобы не спутать правила для разных уровней управления, сопоставьте настройки репозитория с документацией GitHub по управлению выполнением workflow. Если управление централизовано, зафиксируйте, какая политика применяется и на какую область она распространяется. Не делайте вывод о фактическом ограничении только по названию настройки или по тому, что один похожий репозиторий уже работает.
02 Перед изменением: соберите данные оценки в Insights
Режим оценки нужен, чтобы увидеть потенциальное влияние правила, а не чтобы считать нежелательные запуски уже заблокированными. Проверяйте события и workflow, которые система относит к недопустимым при выбранной политике. Само наличие успешного запуска не подтверждает, что после включения правила такой запуск останется разрешённым. Назначение оценки и дату будущего исполнения сверьте с объявлением GitHub.
Как найти в Insights Mac CI, который может быть заблокирован? Используйте GitHub Actions Insights как источник наблюдений, затем свяжите каждый результат с репозиторием, событием и конкретным файлом workflow. Не ограничивайтесь общим числом запусков: для решения об исключении нужны сведения о том, что именно запускается и зачем.
В документации GitHub по просмотру метрик Actions проверьте доступные представления и данные, после чего выполните такую сверку:
- [ ] Определите репозитории и workflow, которые появляются в результатах оценки.
- [ ] Сопоставьте каждый запуск с событием, путём к файлу workflow и ответственным владельцем.
- [ ] Установите, относится ли работа к сборке, тестированию, комментированию PR или другому действию.
- [ ] Зафиксируйте, какие результаты оценки требуют изменения политики, а какие — дополнительной проверки владельцем.
- [ ] Сохраните дату проверки и снимок конфигурации, чтобы сопоставить их с последующим тестированием.
Информация в Insights — не долгосрочная гарантия отсутствия влияния. Набор workflow меняется, новые PR создают другие сценарии запуска, а данные оценки могут отражать только изученный период. Если запись не удаётся связать с файлом или ответственным, считайте её неразобранной: назначьте владельца и выясните источник до решения о разрешении.
Не записывайте «в Insights ничего опасного нет» по результатам одного просмотра. Фиксируйте, какие репозитории, workflow и периоды вы проверили, а также какие неизвестные остались.
03 При разборе workflow: отделите PR-проверки от действий с доверием
pull_request_target требует анализа не по названию события, а по фактическим действиям workflow. Особое внимание нужно уделить тому, загружает ли он код из fork и затем выполняет ли этот код, а также доступны ли ему права базового репозитория или секреты. GitHub отдельно предупреждает об этих рисках в документации по безопасному использованию pull_request_target.
Для каждого workflow проследите путь данных от события до команды на Runner:
- Откуда берётся проверяемый код: из базовой ветки, ветки PR или внешнего fork?
- Выполняются ли скрипты, сборочные фазы, тесты либо другие команды, контролируемые автором PR?
- Может ли процесс обращаться к токену, секрету подписи, приватным артефактам или ресурсам организации?
- Какие права реально нужны: чтение, запись или отдельное действие?
- Сохраняются ли на Mac Runner файлы, ключи либо состояние между заданиями?
Правило события не изолирует Mac физически и не очищает его хранилище. Риск определяется доверием к коду, разрешениями и средой выполнения. Поэтому не считайте выбор Mac Runner доказательством безопасности. В руководстве GitHub по безопасному использованию self-hosted Runner отдельно рассматриваются риски выполнения потенциально недоверенных заданий на таких узлах.
Для необходимых разрешений проверьте ключ permissions в workflow и оставьте только доступ, обоснованный задачей. Синтаксис и значения сверяйте с описанием настройки прав в workflow. Если workflow одновременно проверяет PR-код и использует привилегированные данные, разделите эти обязанности: проверку недоверенного кода проектируйте без доступа к секретам; привилегированные действия выполняйте только при контролируемом источнике кода и проверенных условиях запуска.
04 До выдачи исключения: ограничьте разрешение реальной потребностью
Сначала спросите владельца workflow, можно ли отказаться от pull_request_target или разделить сценарий на менее привилегированные этапы. Если задача сводится к проверке изменений PR, не сохраняйте событие по инерции. Изучите доступные варианты триггеров и определите, какой из них подходит без передачи ненужных прав или секретов.
Как ограничить исключение, если событие всё ещё необходимо? Укажите конкретную потребность и разрешайте только тот workflow, которому она нужна. GitHub описывает возможности политик выполнения, включая выбор файлов workflow. Сверьте точную область настройки и применяемые ограничения с документацией для вашей политики, не полагаясь на предположение, что исключение автоматически охватывает только один файл.
| Решение | Когда оно уместно | Что проверить перед утверждением |
|---|---|---|
Запретить pull_request_target |
Workflow не нуждается в контексте базового репозитория или может перейти на другой триггер | Как изменится PR-проверка и не появится ли обходной запуск |
| Разрешить конкретный workflow | Есть подтверждённая потребность в событии и проверена граница доверия | Путь к файлу, минимальные права, источник кода, владелец и дата пересмотра |
| Отложить разрешение до исправления | Неясно, исполняется ли код fork или кто отвечает за workflow | Список неизвестных, ответственный за устранение, критерий повторной оценки |
В записи об исключении укажите обоснование, утверждающего, затронутый репозиторий и путь к workflow. Добавьте используемые права и секреты, оценённый риск выполнения PR-кода и условие, при котором разрешение нужно пересмотреть. Не расширяйте разрешение на другие файлы только потому, что они принадлежат той же команде.
Если политика управляется программно, проверяйте фактическую конфигурацию после изменения, а не только запланированное значение. Для инвентаризации и автоматизированного контроля можно свериться с документацией Actions policies REST API. API помогает читать или управлять политиками, но не заменяет решение владельца безопасности о допустимом доверии к коду.
05 Перед применением: испытайте Mac CI и границы секретов
Проверка должна охватывать не только итоговый статус задания. В контролируемом репозитории испытайте разрешённый сценарий и сценарий, который новая политика должна отклонить. Сопоставьте фактическое выполнение с записью оценки, настройкой политики, журналами workflow и результатом на Mac Runner. Применяйте тесты так, чтобы не подвергать доступные секреты или производственную среду риску.
Что именно проверять в Mac CI? Убедитесь, что ожидаемые PR-проверки продолжают запускаться, нежелательные триггеры не проходят, а задания не получают больше доступа, чем нужно. Для каждого проверочного прогона сохраните его событие, выбранный workflow, результат политики и сведения о том, какой код выполнялся.
- [ ] Проверьте, что разрешённый workflow запускается только в предусмотренном сценарии.
- [ ] Подтвердите, что запрещённое событие получает ожидаемый отказ, а не запускается с неожиданным набором прав.
- [ ] Убедитесь, что тестовый этап не извлекает и не исполняет недоверенный код в привилегированном контексте.
- [ ] Проверьте доступность сертификатов, ключей подписи и токенов отдельно от обычной PR-проверки.
- [ ] Осмотрите рабочие каталоги и артефакты Mac Runner на предмет сохранённых данных между заданиями.
- [ ] Назначьте ответственного за разбор ошибок, вызванных изменением политики, и за возврат к безопасной конфигурации.
Если для сборки iOS workflow использует подпись, отделите проверку исходного кода от шага, которому действительно нужны подписывающие материалы. Не передавайте секреты в задания, которые могут выполнить код из недоверенного PR. Для self-hosted Mac Runner проверьте также его права на репозитории и ресурсы, доступные с узла. Политика pull_request_target не заменяет аудит секретов, очистку среды и контроль доступа к Runner.
06 В дату применения: оформите решение и план пересмотра
К 2 декабря 2026 года GitHub планирует автоматически применить правило к затронутым публичным репозиториям без применимой политики событий; условия и срок приведены в официальном объявлении. Перед этой датой оформите одно из решений для каждого разобранного workflow: запретить событие, выдать ограниченное исключение либо остановить изменение до устранения выявленной проблемы.
Сохраните доказательства, достаточные для повторной проверки:
- перечень репозиториев с их видимостью и действующей политикой;
- файлы workflow, назначение и владельцев;
- результаты Insights и дату оценки;
- итог аудита кода, прав, секретов и Runner;
- конфигурацию правила до и после изменения;
- записи испытаний разрешённого и отклонённого сценариев;
- утверждённые исключения, их область и условие пересмотра.
После включения политики наблюдайте за ошибками запусков и обращениями владельцев CI. Если PR-проверка перестала запускаться, сначала установите событие, репозиторий и workflow, которые получили отказ; не расширяйте правило или исключение на всю организацию ради восстановления одного задания. При изменении официальной даты, области действия или поведения политики повторите оценку по документации GitHub и обновите внутреннее решение.
Если после проверки вам нужен отдельный macOS-контур для контролируемых сборок, оцените его по требованиям к доступу, секретам, сроку использования и ответственности за обслуживание. На странице CALMVPS можно изучить удалённый Mac, а условия и цены CALMVPS — сопоставить с вашей моделью затрат. Удалённый Mac не устраняет риски небезопасного workflow и не заменяет политику GitHub: он имеет смысл, когда нужен выделенный среде Mac для задач CI, а не как способ обойти проверку доверия. Для постоянной тяжёлой нагрузки или сценариев, которым необходим физический доступ к устройству, сравните аренду с собственным оборудованием и заранее оцените операционные требования.