Короткий ответ
Аутентификация — это подтверждение личности субъекта («кто вы»), а авторизация — это проверка, какие действия этому субъекту разрешены («что вам можно делать»); система может правильно аутентифицировать пользователя и при этом справедливо отказать ему в конкретном действии из-за авторизации.
Как это работает подробнее
при обращении к системе сначала проверяется, что субъект действительно тот, за кого себя выдаёт (пароль, токен, сертификат, MFA) — это аутентификация. После этого отдельный механизм (RBAC, ACL, IAM policy) проверяет, разрешено ли аутентифицированному субъекту конкретное действие над конкретным ресурсом — это авторизация.
Пример кода
security-example-449.sh
kubectl get pods -n prod
Error from server (Forbidden): pods is forbidden: User "bob@example.com"
cannot list resource "pods" in API group "" in the namespace "prod"Что использовать на практике
- Практика. в Kubernetes аутентификация происходит через токен service account или сертификат клиента, а авторизация — через RBAC (Role/RoleBinding); в облаке аутентификация — вход через IAM-учётные данные, авторизация — IAM policy, прикреплённая к пользователю или роли. Ошибка 401 означает проблему аутентификации, 403 — авторизации.
- Проверка. Ожидаемое поведение: ответ 403 Forbidden означает, что пользователь bob успешно прошёл аутентификацию (система знает, кто он), но RBAC не даёт ему прав на list pods в namespace prod — решение не в смене пароля, а в выдаче соответствующей Role/RoleBinding.
Подводные камни
- Ошибка. путать коды ошибок 401 и 403 при диагностике, теряя время на поиск несуществующей проблемы; считать, что успешный логин автоматически даёт доступ ко всем ресурсам; не разделять эти два слоя при проектировании системы безопасности, что усложняет точечное ограничение прав.