• authz
  • authn
  • concept

Что такое AuthZ (Авторизация)?

Изучите определение AuthZ, AuthN и AuthZ, как работает AuthZ и лучшие практики авторизации.

Guamian
Guamian
Product & Design

Что такое AuthZ и чем он отличается от AuthN?

AuthZ — это сокращение от авторизация. Авторизация — это отдельный механизм от аутентификации. Пока аутентификация идентифицирует, кто ты, авторизация определяет, можешь ли ты получить доступ к определённым ресурсам и какие действия ты можешь выполнять с ними.

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

Как работает AuthZ?

Авторизация отделена от аутентификации, но часто связана с ней. Например, стандартные протоколы, такие как OAuth 2.0, OIDC и SAML, включают механизмы авторизации на основе токенов.

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

Назначение разрешений напрямую пользователям может быть неэффективным, особенно когда требуются более детализированные условия. Например, доступ может зависеть от определённых обстоятельств, таких как местоположение пользователя, делая необходимые политики управления доступом для лучшего управления разрешениями.

Вот пошаговый высокоуровневый процесс, как работает авторизация:

  1. Инициация аутентификации: Пользователь входит в систему, выбирая идентификатор и метод, например, используя электронную почту и пароль.
  2. Запрос авторизации: После входа пользователь запрашивает доступ к ресурсу, включая такие детали, как его ID пользователя и роли.
  3. Проверка управления доступом: Система проверяет запрос на соответствие установленным политикам авторизации, таким как правила на основе ролей или атрибутов.
  4. Решение об авторизации: Система определяет, предоставить или отказать в доступе на основе политик и разрешений.

Чтобы подробно понять поток запроса авторизации OAuth 2.0, ознакомьтесь с запросом авторизации

Какие существуют типы авторизации?

Управление доступом на основе ролей и как это работает

Управление доступом на основе ролей (RBAC) использует роли для управления доступом. Каждому пользователю назначаются одна или несколько предопределённых ролей, и каждая роль включает набор разрешений. Ключом к RBAC является понимание взаимосвязи между субъектами (или пользователями), ролями и разрешениями.

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

  1. Субъекты: Это могут быть пользователи или нечеловеческие сущности, такие как пользователь или приложение машина-к-машине.
  2. Роли: Представляют рабочие функции или обязанности. например, админ член
  3. Разрешения: Определяют, какие действия разрешены на конкретных ресурсах, например, читать: заказ.

RBAC-diagram.png

Управление доступом на основе атрибутов и как это работает

Управление доступом на основе атрибутов (ABAC) широко используется в авторизации и поддерживает более сложные сценарии, используя специфические атрибуты сущности, помимо ролей.

Например, компания управляет глобальной платформой для обмена документами, где сотрудники необходимости иметь контролируемый доступ к конфиденциальным файлам на основе их должностной роли, местоположения и уровня классификации документа.

Атрибуты могут быть спроектированы следующим образом:

  1. Атрибуты пользователя: Роль (например, «Менеджер», «Инженер»), местоположение (например, «США», «Европа»).
  2. Атрибуты ресурса: Тип документа (например, «Финансовый отчёт», «Файл дизайна»), уровень классификации (например, «Конфиденциальный»).
  3. Атрибуты окружения: Время доступа (например, «В рабочее время»), тип устройства (например, «Корпоративный ноутбук»).

Существуют также другие модели управления доступом, такие как управление доступом на основе политик (PBAC). Каждая модель имеет свои сильные и слабые стороны, а выбор модели зависит от вашего использования и требований.

Примеры использование и случаи AuthZ

B2C программное обеспечение

B2C программное обеспечение часто требует специфических ролей в зависимости от бизнес-потребностей. Например, приложение для управления книжным магазином может включать роли с разными обязанностями, такими как управление ресурсами и услугами.

B2B многопользовательское приложение

B2B приложения часто используют архитектуру многопользовательской системы, где каждый арендатор представляет организацию. Внутри организации требуются такие роли, как админ и член. Здесь Авторизация (AuthZ) играет ключевую роль в управлении пользователями на уровне организации, часто используя управление доступом на основе ролей (RBAC).

Авторизация машина-к-машине

Машина-к-машине коммуникация происходит непосредственно между службами без человеческого взаимодействия. Например, вызов API служб. Часто включает токены (например, токены доступа OAuth 2.0), чтобы обеспечить безопасный, динамический и детализированный доступ.

Какие лучшие практики для AuthZ?

Вот некоторые лучшие практики для авторизации (authZ) для обеспечения безопасного и эффективного контроля доступа:

  • Принцип наименьших привилегий

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

  • Используйте авторизацию на основе токенов

    Контроль доступа на основе токенов предлагает больше гибкости и детализированного контроля, следуя открытым стандартам. Используйте безопасные токены (например, OAuth 2.0, JWTs) для предоставления доступа, чувствительного к времени и с учётом масштаба.

  • Регулярно аудит и мониторинг

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

  • Примените разделение обязанностей

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

  • Поддержка многопользовательского режима (если применимо)

    Для многопользовательских систем изоляция арендаторов важна. Объединяя её с управлением доступом на основе ролей, вы можете достичь разделения ресурсами данных, гарантируя, что подходящие роли могут получить доступ к ресурсам только в пределах их арендатора. Это предотвращает случайный или злобный доступ к ресурсам других арендаторов.

  • Динамическое аннулирование доступа

    При проектировании вашей системы AuthZ убедитесь, что разрешения могут быть обновлены или аннулированы немедленно, если условия изменятся (например, обновления ролей или увольнение). Это может быть достигнуто через динамические проверки API, вебхуки или другие методы. Цель заключается в предотвращении несанкционированного доступа в реальном времени.

В чём разница между AuthZ (Авторизация) и Auth (Аутентификация)?

Разница между аутентификацией и авторизацией заключается в их целях и процессе в рамках управления идентификацией и доступом.

AuthN (Аутентификация) отвечает на вопрос: «Кто ты и какую идентичность ты имеешь?» Это процесс проверки идентификации пользователя, службы или устройства. Аутентификация гарантирует, что сущность, пытающаяся получить доступ к системе или ресурсу, является подлинной. Общие методы включают пароли, биометрию и двухфакторную аутентификацию (2FA). Например, когда ты входишь в аккаунт, используя свою электронную почту и пароль, система подтверждает твою личность через аутентификацию.

AuthZ (Авторизация) отвечает на вопрос: «Что тебе разрешено делать?» Это процесс предоставления или отказа в доступе к ресурсам на основе разрешений или ролей пользователя. Авторизация происходит после аутентификации и определяет, какие действия аутентифицированный пользователь может выполнять. Например, после входа администратор может иметь доступ для изменения настроек, тогда как обычный пользователь может только просматривать их.

Вкратце, AuthN (аутентификация) подтверждает личность, в то время как AuthZ (авторизация) определяет доступ. Сначала происходит аутентификация, за которой следует авторизация, чтобы обеспечить безопасное и надлежащее использование ресурсов.

Создание AuthZ (Авторизация) с Logto

Logto Cloud предлагает ключевые услуги авторизации на основе протоколов открытых стандартов, таких как OIDC, OAuth 2.0 и SAML. Включает функции, такие как Управление доступом на основе ролей, Организации (Многопользовательность) и Пользовательские требования токенов для удовлетворения твоих потребностей в авторизации с различных точек зрения.