Аутентификация и авторизация — два разных процесса, которые часто путают, хотя они решают разные задачи безопасности. Аутентификация отвечает на вопрос «кто это?», авторизация — «что этому пользователю разрешено делать?». Разграничение этих процессов критически важно для проектирования безопасных систем: ошибки в аутентификации позволяют посторонним войти, ошибки в авторизации — получить доступ к чужим данным уже после входа.
Что такое аутентификация
Аутентификация — это верификация того, что пользователь (или система) является тем, за кого себя выдаёт. Процесс проверяет предъявленные учётные данные по хранимым сведениям и разрешает или отклоняет вход.
Методы аутентификации:
- На основе знания — пароли, PIN-коды, секретные вопросы. Самый распространённый тип; наиболее уязвим к фишингу, брутфорсу и утечкам
- На основе владения — физический токен, смарт-карта, аппаратный ключ безопасности (FIDO2/WebAuthn), одноразовый код из приложения-аутентификатора (TOTP)
- Биометрическая — отпечаток пальца, распознавание лица, сканирование радужной оболочки. Удобна, но не является секретом — биометрика не сбрасывается при компрометации
- На основе сертификата — цифровой сертификат X.509, используется в корпоративной среде, mTLS и PKI-инфраструктурах
Многофакторная аутентификация (MFA) комбинирует минимум два разных типа из перечисленных. Согласно данным CISA, MFA блокирует подавляющее большинство атак с использованием скомпрометированных паролей, поскольку атакующему недостаточно одного фактора для получения доступа.
Что такое авторизация
Авторизация — это определение того, какие действия и ресурсы разрешены пользователю после успешной аутентификации. Авторизация работает только после того, как личность пользователя подтверждена.
Основные модели авторизации:
- RBAC (Role-Based Access Control) — доступ определяется ролью пользователя в системе. Администратор имеет одни права, редактор — другие, читатель — третьи. Наиболее распространённая модель в корпоративных системах
- ABAC (Attribute-Based Access Control) — более гибкая модель: доступ определяется набором атрибутов пользователя, ресурса и контекста запроса (например, время, геолокация, метка классификации данных)
- DAC (Discretionary Access Control) — владелец ресурса сам управляет правами доступа к нему. Характерно для файловых систем Unix/Linux
- MAC (Mandatory Access Control) — права доступа задаются политиками системы, не владельцем. Применяется в системах с требованиями государственной безопасности
Ключевое различие между аутентификацией и авторизацией
Оба процесса работают последовательно, но решают разные задачи:
- Аутентификация — подтверждает идентичность. Происходит один раз при входе в систему. Вопрос: «Это действительно Иван Петров?»
- Авторизация — определяет права. Происходит при каждом запросе к защищённому ресурсу. Вопрос: «Иван Петров может читать этот документ?»
Пример: в корпоративной системе аутентификация через MFA позволяет Ивану войти, но авторизация определяет, что он может читать общие проекты, но не финансовые отчёты. Если аутентификация пройдена, но авторизация некорректна — пользователь может получить доступ к чужим данным (горизонтальное повышение привилегий — один из ключевых рисков по OWASP Top 10).
Принцип минимальных привилегий и распространённые ошибки
Принцип минимальных привилегий (Least Privilege) — каждый пользователь, процесс или система должны иметь только те права, которые необходимы для выполнения конкретной задачи, и не более. Это ограничивает радиус поражения при компрометации учётной записи.
Типичные ошибки авторизации:
- Broken Access Control — пользователь может получить доступ к ресурсам другого пользователя, изменив ID в URL или теле запроса (Insecure Direct Object Reference)
- Privilege escalation — пользователь с базовыми правами может повысить их до административных из-за ошибки в логике авторизации
- Missing function-level access control — защищены только страницы интерфейса, но не сами API-endpoints; прямое обращение к endpoint обходит проверку
Стандарты и протоколы
Реализация аутентификации и авторизации в веб-системах опирается на стандартизированные протоколы:
- OAuth 2.0 — фреймворк авторизации для делегированного доступа (например, «Войти через Google»). Детальная спецификация опубликована на oauth.net
- OpenID Connect (OIDC) — уровень аутентификации поверх OAuth 2.0; добавляет верификацию идентичности к делегированной авторизации
- SAML 2.0 — XML-протокол федерированной аутентификации и SSO в корпоративных среде
- FIDO2 / WebAuthn — стандарт беспарольной аутентификации на основе криптографических ключей; официальная документация на W3C WebAuthn
Проектируя систему контроля доступа, убедитесь, что авторизация реализована на серверной стороне — клиентская валидация (скрытие кнопок, проверки в JavaScript) не является механизмом безопасности. Каждый API-запрос к защищённому ресурсу должен независимо проверять токен и права пользователя, не полагаясь на предыдущие проверки в рамках той же сессии.