⚡️ v42.27.1
API Gateway проверил токен. Значит, доступ разрешён? 🔐
Представьте: пользователь обращается к API за информацией о договоре.
Запрос проходит через API Gateway. Токен действительный, маршрут разрешён, лимиты не превышены.
Всё хорошо?
Не совсем. Пользователь может попытаться получить чужой договор, просто изменив его идентификатор.
И здесь возникает важный вопрос: кто должен проверять права доступа?
Я разделяю ответственность на несколько уровней.
1. API Gateway проверяет вход 🚪
Аутентификация, базовые политики доступа, ограничения по методам, маршрутизация и лимиты запросов.
Шлюз проверяет подлинность предъявленных учётных данных и применяет общие политики доступа.
1. Бизнес-сервис проверяет контекст 🔍
Имеет ли конкретный пользователь право читать именно этот договор?
Доступна ли ему запрошенная операция?
Действительный токен ещё не означает право доступа к любому объекту системы.
1. Политики должны быть согласованы ⚙️
Шлюз может использовать внешнюю систему авторизации, но наличие такой интеграции ещё не гарантирует корректную проверку прав на бизнес-объект.
Важно определить, где принимается решение о доступе и кто отвечает за его выполнение.
1. Проверяем не только успешные запросы 🧪
В тестах обязательно должны быть попытки обращения к чужим объектам и запрещённым операциям.
Например: — пользователь А запрашивает свой договор — доступ разрешён; — пользователь А запрашивает договор пользователя Б — доступ запрещён; — пользователь без необходимых прав пытается изменить договор — операция отклоняется.
Это не просто теоретическая угроза.
В OWASP API Security Top 10 (2023) нарушение авторизации на уровне объектов — Broken Object Level Authorization (BOLA) — занимает первое место.
📚 Источник: https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/
💡 Мой принцип: API Gateway централизует общие правила, но не освобождает сервис от проверки бизнес-прав.
Иначе можно построить отлично защищённый вход в систему, внутри которой пользователи получают доступ к чужим данным.
А где в вашей архитектуре проходит эта граница? Что проверяете на шлюзе, а что оставляете бизнес-сервисам?
· 2 ч
У меня гетвей имеет интеграцию с сервисом разрешений он передает сущность, id, метод, пользователя и получает простой ответ 200 или что другое.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён