Построение доверия через контроль доступа

Большинство приложений считают себя защищенными только потому, что у них есть страница входа.

Вход — это лишь первый шаг. Как только пользователь вошел в систему, вы должны ответить на один вопрос: что этот пользователь может делать?

Многие путают аутентификацию с авторизацией.

• Аутентификация спрашивает: Кто вы? • Авторизация спрашивает: Что вам разрешено делать?

Пользователь может успешно войти в систему. Это не означает, что он должен видеть каждую запись или редактировать каждый профиль.

Используйте управление доступом на основе ролей (RBAC), чтобы сделать правила прозрачными.

RBAC работает путем проверки роли пользователя на соответствие списку разрешенных ролей. Если вы не используете контроль доступа, вы сталкиваетесь с такими рисками, как:

  • Избыточный доступ к дашбордам
  • Слишком много внутренних разрешений
  • Случайные утечки данных
  • Недостаточный аудит действий
  • Потеря доверия

Следуйте принципу наименьших привилегий. Предоставляйте пользователям только тот доступ, который необходим им для выполнения работы.

• Сотрудники службы поддержки не должны видеть все записи клиентов. • Инженеры не должны иметь доступ к продакшну по умолчанию. • Данные HR должны быть сегментированы. • Роли администраторов должны быть редкими и подлежащими аудиту.

Иногда ролей недостаточно. Вам нужны разрешения на основе действий. Пользователь может просматривать запись, но не иметь возможности ее удалить. Это обеспечивает гранулярный контроль.

Также следует разделять данные по уровню конфиденциальности: • Публичные данные: имя и фото. • Приватные данные: email и номер телефона. • Конфиденциальные данные: зарплата или идентификационные номера.

Обрабатывайте эти категории по-разному в своем коде. Это упростит управление безопасностью.

Доверие также требует подотчетности. Каждый раз, когда кто-то обращается к конфиденциальным данным, ваша система должна создавать журнал аудита. Важные действия должны оставлять след.

Перед выпуском приложения проверьте следующие пункты:

  • Безопасны ли процессы входа и управления сессиями?
  • Основаны ли разрешения на ролях и действиях?
  • Сегментированы ли конфиденциальные данные?
  • Являются ли настройки по умолчанию ограничивающими?
  • Логируете ли вы все случаи доступа?
  • Можете ли вы объяснить права доступа своим пользователям?

Аутентификация впускает пользователей. Авторизация делает вашу систему заслуживающей доверия. Доверие — это функция продукта.

Источник: https://dev.to/samiatakande11/building-trust-into-authentication-practical-access-control-patterns-for-modern-apps-55pc