Разделите автоматизацию и личное администрирование
Конвейеру API отчётности нужно выбрать одобренный артефакт и вызвать контролируемое действие релиза. Это не означает автоматически необходимости создавать пользователей, изменять биллинг или читать все секреты приложения. Начните с инвентаризации разрешений и защищённой тестовой среды; держите учётные данные вне документов, репозиториев и примеров журналов.
Доступ людей к восстановлению должен оставаться отдельным, чтобы отзыв учётных данных развёртывания не удалил единственный путь расследования. Определите авторизованного сопровождающего и независимую проверку хоста. Второй неограниченный ключ — это ещё одни учётные данные, а не более узкая роль.
Точно опишите разрешённую операцию
| Возможность | Нужно? | Граница |
|---|---|---|
| Чтение одобренного артефакта | Да | Конкретный репозиторий/версия |
| Вызов действия релиза | Да | Фиксированное приложение и среда |
| Чтение всех секретов среды выполнения | Избегать | Контролируемое удостоверение среды выполнения |
| Изменение пользователей или политики SSH | Нет | Отдельное администрирование |
| Изменение конфигурации рабочего процесса | Нет для удостоверения среды выполнения | Проверка защищённого репозитория |
| Удаление резервных копий | Нет | Отдельные разрешения восстановления |
Проверяйте входные данные действия релиза. Ограниченная команда, которая объединяет произвольный текст в привилегированную оболочку, всё равно допускает непреднамеренную работу. Изучите поведение обёртки, доступные для записи пути и доверие к артефактам вместе. Широкие привилегии sudo или доступ к сокету Docker могут свести на нет предполагаемую границу.
Рассматривайте правки рабочего процесса как доступ к учётным данным
Тот, кто может изменять доверенные шаги рабочего процесса, может использовать или раскрыть свои учётные данные. Изучите разрешения репозитория, защищённые среды развёртывания и то, какие события запускают привилегированные задания. Держите производственные учётные данные вдали от недоверенного кода pull-запросов. Дайте токену рабочего процесса только те разрешения, которые нужны его заданию.
GitHub рекомендует закрепление полного хеша коммита SHA для неизменяемого выбора действий. Изучите выбранное действие и последующие обновления; тег версии может перемещаться. Избегайте вставки недоверенных данных событий напрямую во встроенный код оболочки. Маскировка известных значений секретов не является гарантией от раскрытия через преобразования, журналы или артефакты.
Техническая справка: Безопасное использование GitHub Actions.
Используйте короткий срок действия, когда это поддерживает назначение
OpenID Connect может позволить поддерживаемому назначению обменять удостоверение рабочего процесса на краткосрочные учётные данные. Настройте проверки доверия для предполагаемого репозитория, ветки или среды и аудитории. Это ни универсальная замена SSH, ни функция, предоставляемая текущим фронтендом PrivacyNodes.
Если ваше развёртывание использует SSH, изучите параметры authorized-key установленного пакета. Одна лишь принудительная команда не запрещает перенаправление; ограничения должны охватывать предполагаемые пути доступа и при этом вызывать безопасную операцию релиза. Тестируйте в отдельной среде. Сохраняйте работающий административный доступ и доступ к восстановлению при изменении аутентификации и проверьте новое независимое подключение, прежде чем удалять старый метод.
Техническая справка: GitHub Actions OpenID Connect · Формат OpenSSH authorized_keys.
Проверьте разрешённую и запрещённую работу
Убедитесь, что удостоверение может выбрать предполагаемый артефакт, вызвать релиз и получить полезный результат. Затем проверьте его пределы: секреты другого приложения, несвязанные изменения файлов и произвольное администрирование должны быть недоступны. Включите пути к артефактам и аргументы, которые обёртка должна отклонять.
Зафиксируйте удостоверение, область, срок действия, где применимо, одобряющего сопровождающего и место хранения аудиторских доказательств. Храните ссылки на хранилище, а не значения учётных данных. Если тест работает только после предоставления широкого администрирования, пересмотрите задачу релиза, а не делайте это молча постоянной ролью.
Проведите репетицию отзыва и релиза со сломанным конвейером
Подготовьте замену с проверенной областью, проверьте тестовое развёртывание, переключите конвейер и отзовите старое удостоверение. Подтвердите, что заменённые учётные данные не работают и в другом рабочем процессе не осталось дубликата. Добавление нового ключа само по себе не удаляет предыдущий доступ.
Задокументируйте, как авторизованный сопровождающий останавливает развёртывание и восстанавливается, когда CI недоступен. Свяжите эту процедуру с записи о выпуске и инвентаризацией восстановления. Узкие учётные данные ограничивают предполагаемые полномочия; они не делают вредоносный артефакт безвредным.
Официальные ссылки
Документация была проверена для этой статьи. Примеры — это планировочные упражнения, а не команды, протестированные на сервере PrivacyNodes. Проверьте документацию для вашей установленной версии.