Вопрос или проблема
Во время аудитов безопасности я несколько раз видел, что DevOps создал «особый» пользовательский аккаунт для CI/CD пайплайнов, особенно при использовании Azure DevOps. Часто этот пользователь — единственный, у кого отключена многофакторная аутентификация (MFA), что, на мой взгляд, нежелательно. Я понимаю, что MFA не может использоваться обычным образом при использовании машинной связи, но это действительно предполагалось как способ работы?
Предполагая, что он используется для развертывания, я бы подумал, что вместо этого в пайплайнах следует использовать специальный токен развертывания. Но если это так, связан ли этот токен с конкретной учетной записью разработчика или существует более безопасный способ сделать это?
Либо, если этот «особый» пользователь используется для другой цели, например, для подключения сетевого хранилища, я считаю, что используемый механизм сам по себе должен быть полностью пересмотрен для этой цели? Поскольку это создает потенциальную уязвимость, имея активную учетную запись пользователя без MFA.
MFA в основном используется потому, что для людей пароль считается чем-то, что можно «легко» восстановить (если он не был случайно выбран, если жертва подверглась фишинговой атаке, если пароль был повторно использован…). В этой ситуации наличие нескольких уровней аутентификации полезно, поскольку пароль недостаточно надежен.
Но для машин «что-то, что вы знаете», «что-то, что у вас есть» или «что-то, чем вы являетесь» в основном одно и то же. Как только у вас есть доступ к машине, у вас есть доступ ко всей этой информации (что очень хорошо объясняется в другом ответе). Поэтому не имеет смысла иметь многофакторную аутентификацию, поскольку она не обеспечивает дополнительной защиты от компрометации машины.
Кроме того, машины не будут «повторно использовать» свои пароли (каждая машина должна иметь разные учетные данные именно для предотвращения этого), и они не будут обманываться фишинговыми атаками. Это означает, что учетные данные машины подвержены совершенно другим угрозам, чем учетные данные пользователя (угрозам, которые не решает MFA).
То, что вы называете «специальным токеном развертывания», это то же самое, что и пароль; секрет, который используется для аутентификации. Называется ли это «токеном», «паролем» или «супер-защищенной штукой» — это не имеет значения. (Но, чтобы быть справедливым, это в основном называется «токен», когда речь идет о паролях машин.)
Имейте в виду, что вы все равно должны убедиться, что доступ к этому секрету правильно реализован на самой машине (правильный контроль доступа, управление правами…).
Еще одно преимущество наличия специальной учетной записи машины (вместо использования токена, привязанного к пользователю, как вы предложили) заключается в том, что вы можете обеспечить более строгую авторизацию для этой учетной записи (то есть пайплайн CI/CD может иметь меньше/другие привилегии, чем разработчик). Кроме того, вы можете создать несколько учетных записей для машин для конкретных действий, если хотите (подключение сетевого хранилища может быть еще одним сценарием, который использует другую учетную запись). Хотя это связано с дополнительной нагрузкой по управлению всем этим (т.е. если существует только один скрипт, который выполняет все действия на одной и той же машине, то создание 100 учетных записей для каждого действия может быть не самым правильным решением…).
Таким образом, чтобы ответить на ваш вопрос, нет, это не плохая практика иметь «особые» учетные записи, используемые машинами без MFA, потому что угрозы, которые решает (или пытается решить) MFA для учетных данных пользователей, не те же, что влияют на учетные данные машин.
Ответ или решение
Необходимость использования специального пользователя без MFA в CI/CD пайплайнах Azure DevOps
Вопрос создания «специального» аккаунта для CI/CD пайплайнов в Azure DevOps, который отключён от многофакторной аутентификации (MFA), касается одной из ключевых тем в области безопасности и управления учетными записями. Давайте рассмотрим этот вопрос более подробно.
Проблематика MFA в машинной аутентификации
Основная задача многофакторной аутентификации — защитить доступ на уровне пользователя, чтобы предотвратить несанкционированный доступ в результате кражи пароля или попадания под фишинг-атаку. Для человека битая защита необходима, поскольку предпочтения в выборе паролей часто не являются безопасными, а они подвержены рискам несанкционированного доступа.
Однако, когда речь идет о машинах и автоматизированных процессах, вопросы безопасности выглядят иначе. Один из основных аргументов заключается в том, что механизмы аутентификации для машин (например, секретные токены или пароли) не подвержены тем же угрозам, что и пользовательские данные. Поскольку машины не взаимодействуют с фишингом, и "что-то, что вы знаете" и "что-то, что вы имеете" фактически сводятся к одной сущности – секрету для аутентификации.
Альтернативы и рекомендации
Использование специального токена для автоматизированных процессов может рассматриваться как более безопасная альтернатива созданию общего пользователя без MFA. Эти токены могут быть созданы с ограниченными правами доступа, что позволяет улучшить безопасность при выполнении конкретных операций в рамках CI/CD. При этом важно следить за тем, чтобы доступ к токенам и их использование были должным образом защищены, например, через доступ по ролям или управление правами.
Дедикаторы аккаунтов
Создание отдельного «машинного» аккаунта для CI/CD пайплайнов может предоставить дополнительные преимущества:
-
Ограничение прав доступа: Вы можете настроить привилегии для каждой учетной записи, обеспечивая ещё большую безопасность, чем при использовании единого общего аккаунта.
-
Журналирование и мониторинг: Учетные записи для машинной аутентификации позволяют вести более детальный учет действий, что упрощает аудит и мониторинг доступа.
-
Масштабируемость: При необходимости, для различных задач можно создать отдельные учетные записи, что поможет изолировать риски и управление.
Заключение
С учетом приведенных аргументов, наличие специального аккаунта для CI/CD пайплайнов без MFA не является плохой практикой, так как угрозы, с которыми сталкиваются машинные учетные записи, отличаются от угроз для пользовательских учетных записей. Вместо этого, следует рассмотреть возможность использования токенов/секретов для машинной аутентификации с правильной настройкой прав доступа и безопасного управления.
В итоге, ключевым аспектом остается необходимость управления рисками, соответствующих политик доступа и правильного аудита в рамках вашего рабочего процесса DevOps.