
Как внедрить многоактивную авторизацию с помощью контроля доступа на основе ролей
24 июня 2025 г.Многоточечное разрешениеявляется моделью для управления разрешениями пользователей по нескольким учетным записям, организациям или группам. Благодаря мультиценнению каждый арендатор (например, учетная запись или организация) работает в изолированной среде, требуя уникальных элементов управления доступа, адаптированных для конкретных ролей пользователей в этой среде.
Одним из наиболее эффективных способов реализации многоактивного авторизации является сочетание его сКонтроль доступа на основе ролей (RBAC)Полем RBAC упрощает управление доступом, назначая пользователей предопределенных ролей, которые определяют их разрешения в среде.
Только RBAC сталкивается с тремя основными проблемами в качестве масштаба приложений и требует более мелкозернистых разрешений:
- Будучи ограниченным ролями (а не атрибутами и отношениями), RBAC может не хватать гранулярности.
- Его статическим ролям не хватает способности масштабировать арендаторов.
- По мере роста приложений число ролей может стать неуправляемым, что приводит к тому, что называется «роль взрывом».
АМодель Multianant RBACрешает эти проблемы, структурируя доступ пользователейна арендатор, позволяя динамическим назначениям ролей и разрешения в изолированных средах. Вместо того, чтобы назначать пользователю единственную глобальную роль, его разрешения зависят от того, в каком арендаторе они играют и в какой роли они играют в этом арендаторе.
Вот быстрый пример того, когда это может быть полезно:
Подумайте о платформе управления проектами SaaS, где пользователи могут быть членами нескольких организаций, каждая из которых имеет различные уровни доступа:
Пользователь может бытьадминистраторв одной организации с полным контролем, в то время как толькоредакторВ другом, ограниченное изменением задач, но не управляющим пользователями.
Многократный RBAC гарантирует, что разрешения охватывают нужную среду без ненужной сложности.
В этом руководстве мы рассмотримважность мультитенантного авторизациии покажите, как это может быть эффективно реализовано с помощьюРазрешение.ioПолем
Мы обсудим, как структурировать политику, назначать роли на арендатора и применятьмелкозернистые разрешенияПолем
Давайте погрузимся.
Почему важна многоточечная авторизация?
Многоточечная авторизация полезна для приложений, где пользователи принадлежат к нескольким независимым средам, каждый из которых имеет свои собственные правила доступа-общее событие в большинстве современных облачных приложений.
Обработка разрешений в изолированных средах
Благодаря мультиценнению каждый пользователь может получить адаптированный подход к своему контролю доступа на основе своего арендатора. Поскольку пользователь может иметь разные роли и обязанности в разных арендаторах, использование мульти-члена позволяет этим ролям управлять и применяться независимо.
Это означает, что мы можем использовать многопользовательскую авторизацию для поддержания четких границ между окружающей средой, обеспечивая при этом, чтобы пользователи имели соответствующие разрешения в каждом из них.
Например, рассмотримплатформа для хранения облакагде каждый клиент (арендатор) хранит конфиденциальные данные. Крайне важно обеспечить строгий контроль доступа, чтобы пользователь из одного клиента не мог просматривать или изменять данные из другого.
Но почему мы не можем просто решить это с помощью RBAC?
Почему традиционного RBAC недостаточно для разрешения с мультитенантом
Многое можно сказать об ограничениях RBAC. При работе с приложениями в производстве RBAC может оказаться слишком жестким и стать слишком сложным, чтобы масштабироваться. Давайте сосредоточимся на аспектах, которые могут решить аспекты:
Статические роли не масштабируются по арендаторам:
В традиционной реализации RBAC,Роли обычно применяются во всем миречерез приложение. Это означает пользователь, назначенныйРедакторРоль может иметь доступ к редактированию всех ресурсов, даже среди арендаторов, где у них не должно быть разрешений.
Эта проблема может представить себя просто как:
Приложение по управлению проектами, где пользовательРедакторв одной команде, но должен толькоЗрительдоступ в другом.
MultoNant RBAC позволяет использовать роли на арендатора, поэтому пользователь может быть редактором в одной организации и зрителем в другой без ненужной роли дублирования. Говоря о роле дублирования -
Роль -проблема взрыва
Базовая модель RBAC может начать просто:Администратор, редактор, просмотрПолем По мере появления больше пользователей и типов ресурсов,Роль взрывможет произойти. Если мы приведем наш предыдущий пример, когда один пользователь должен быть редактором в одной команде, но зритель в другой, вы можете легко получить что -то вроде этого:
Editor_TeamA
Editor_TeamB
Viewer_TeamA
Viewer_TeamB
- ... и так далее для каждой дополнительной команды / потенциального арендатора.
Это делает систему трудной для управления и трудно обновлять без нарушения правил доступа.
Multianant RBAC устраняет необходимость в специфических для арендаторе ролейдинамически назначая роли в каждом арендаторе вместо жесткой кодировки.
Многоточечное разрешение требует гранулярности
RBAC часто слишком ограничен при обработке разрешений на гранулярном уровне. Обычно ему не хватает встроенных механизмов для определения политик уровня ресурсов или условного доступа.
Подумайте об этой политике:
«Редакторы могут только изменять свои собственные фотографии»
Насколько это просто? Дело в том, что RBAC не может поддержать такую политику без внедрения дополнительной логики. Особенно в масштабе.
Прежде чем мы погрузимся в реализацию и лучшие практики, давайте упомянем несколько часто используемых моделей с несколькими положениями:
Общие мультитенантные модели
Многоточечное разрешение применяется к широкому спектру приложений. Вот некоторые из наиболее распространенных способов структурированы арендаторы:
- Счета- используется впотребительские приложения SaaS, где каждый пользователь принадлежит к независимой учетной записи (например, Google Drive, Dropbox).
- Организации- Обычно вбизнес -приложения, где компания (организация) имеет несколько пользователей с различными ролями (например, Slack, понятие).
- Группа- Полезно дляСовместная среда, где пользователи сгруппированы на основе потребностей общего доступа (например, команды GitHub, проектные рабочие пространства).
- Франшизы- в системах, где предприятия работают подмодель франшизыКаждая франшиза функционирует независимо, но следует за центральной структурой (например, системы управления ресторанами).
Каждая из этих моделей получает выгоду от многопользовательского разрешения для обеспечения надлежащей изоляции и разрешений на основе ролей на арендатора.
Понимая преимущества многопользовательского разрешения, давайте приступим к обсуждению реализации.
Лучшие практики для реализации мультитенантного авторизации
Эффективные стратегии управления ролями, разрешениями и масштабированием изолированных сред в мультитенантных приложениях.
Спланируйте стратегию мультитенантного авторизации
Прежде чем погрузиться в реализацию чего-либо, важно планировать, как будет работать ваша мультитенантная модель. Цель состоит в том, чтобы у каждого арендатораОтдельные, управляемые элементы управления доступомдля его пользователей. Вот некоторые ключевые элементы, которые вы должны определить, если вы используете модель RBAC:
- Пользователи: Лица, получающие доступ к системе. Каждый может принадлежать нескольким арендаторам.
- Арендаторы: Отдельные среды, в которых пользователи работают (например, учетная запись, организация или рабочее пространство).
- Роли: Предопределенные уровни разрешений, назначенные пользователям в арендаторе.
- Ресурсы: Объекты (например, фотографии, документы), с которыми пользователи взаимодействуют, контролируются разрешениями.
- Разрешения: Правила, которые определяют действия, которые роли могут выполнять на конкретных ресурсах.
Решая эти вопросы рано, вы можете построитьгибкий и масштабируемыйСистема авторизации адаптирована к потребностям вашего приложения.
Понимание мультитенантных областей
С тех пор аОдиночный пользователь может существовать у нескольких арендаторов, система должна обеспечить:
- Ролевые назначения на арендатор- Разрешения пользователя должны быть охвачены их конкретным арендатором.
- Ресурсы связаны с арендаторами- Ресурсы должны принадлежать конкретному арендатору.
- Разрешения оцениваются динамически- Когда пользователь делает запрос, система проверяет как свою роль в арендаторе, так и в собственности ресурса.
Оптимизация авторизации с несколькими тенденциями: отделка схемы из данных
Распространенной проблемой в мультитенантных системах является управление тем, какРоли и политикахранятся и обновляются. В традиционных системах роли и разрешения часто тесно связаны с данными приложения. Это может создавать осложнения, когда разрешения должны измениться, так как вам, возможно, придется обновить оба обаРолевое назначениеиДанные приложениясам
Для оптимизации для масштабируемости:
- Отделить схему политики из данных приложенияПолем Хранить роли, задания и политики в специальной системе авторизации (например,Разрешение.io) и держать данные приложения отдельными от логики авторизации.
- Эта развязка позволяет обновлять роли или разрешениядинамическине касаясь основных данных или кодовой базы приложения.
Используйте один источник истины - PDP (точка решения политического решения)
Одной из критических понятий в оптимизации многоактивной авторизации является использованиеединственный источник истиныпринимать политические решения.
Вместо хранения информации о роле и правилах доступа в каждой базе данных службы или пользователя,Политическое решение решения (НДП)действует как центральная точка, где принимаются все решения доступа.
Преимущества использования НДП:
- Последовательность: PDP гарантирует, что все услуги по всему приложению ссылаются на один и тот же набор правил при принятии решений о разрешении.
- Динамическая оценка политики: Изменения в политике или ролевых назначениях должны быть обновлены только в одном месте - PDP. Эта централизация устраняет необходимость обновления нескольких мест в вашей кодовой базе или базах данных.
- Меньший риск ошибки: Полагаясь на единую централизованную точку решения, вы снижаете риск противоречивых разрешений среди арендаторов и заявлений.
Расширение RBAC с помощью контроля доступа на основе отношений (Rebac)
ПокаRBACобеспечивает прочную основу для мультитенантного разрешения, существуют сценарии, гдеКонтроль доступа на основе отношений (Rebac)может предложить еще более мелкозернистый контроль доступа.
RBAC определяет разрешения на основе ролей, назначенных пользователям, ноРезакделает еще один шаг, определяя разрешения на основеотношениямежду ресурсами и пользователями. Это особенно полезно в ситуациях, когда разрешения зависят от того, как ресурсы связаны или связаны друг с другом.
Например, представьте себеСистема управления документамигде пользователь имеет доступ кfolder
и эта папка содержит несколько документов. С RBAC вам нужно будет определить роли, такие какFolder Editor
илиDocument Viewer
Полем Однако сРезак, вы можете упростить это, сказав:
«Пользователю разрешается редактировать документ, если он является редактором папки, к которой принадлежит документ».
Это позволяет более динамическим и чувствительным к контекстам назначениям разрешения без дублирования ролей для каждого ресурса.
Преимущества Rebac:
- Контекстуальные разрешения: Позволяет контролировать доступ на основединамические отношения(например, пользователь является редактором в проекте и, следовательно, имеет доступ ко всем связанным задачам).
- Снижение роли взрыва: Вам не нужно создавать роли для каждой комбинации пользователя и типа ресурсов, так как отношения могут определять доступ к динамически.
Расширяя RBAC с REBAC, вы можете справитьсясложные сценарии управления доступомгде отношения между пользователями и ресурсами определяют разрешения.
Внедрение многоактивного авторизации с помощьюРазрешение.io
Разрешение.ioпредлагает простой способ реализации многопользовательского авторизации, позволяя вам определить роли, политики и правила доступа в разных средах.
if (user.role == admin && user.tenant == resource.tenant) {
return true;
}
Традиционный, статическийif
Заглавный подход для многоцелевого.
const permitted = await permit.check(user, "read", {
resource: "document",
tenant: "default"
});
if (permitted) {
return true;
}
Чистаяpermit.check()
Функция, которая проверяет многоцелевой RBAC.
Вот широкий обзор того, как разрешение Multainant RBAC может быть настроено в разрешении .IO:
- Определите роли, ресурсы и действия: чтобы начать, сначала определите свои ресурсы (например, документы, фотографии, задачи) и действия, которые можно выполнить на них (например, создавать, читать, обновить, удалить).
- Добавитьновый ресурс(например.,
blog
) представлять тип объекта, к которому вы хотите контролировать доступ. - Укажите ресурсключ, который будет использоваться в ваших вызовах API.
- ОпределитьдействияПользователи должны иметь возможность выполнять ресурс (например, создавать, читать, обновить, удалять).
- Скриншот показывает пример, где
blog
является ресурсом, и действия определены для него.
- Добавитьновый ресурс(например.,
Определите политику контроля доступа:
Вы указате, какие действия может выполнять каждую роль на каждом ресурсе. Например, на снимке экрана роли вродеадминистраторВпубличный, иПисательопределены, и политика настроена на указание того, какие действия разрешены для каждой роли.
Определите арендаторов в каталоге:
Каждый арендатор может иметь свой собственный набор ролей, разрешений и политики.
Создать арендаторов:
- Перейти кКаталогэкран и нажмитеНастройкиПолем
- Определите арендаторов, которые вам нужны (например,Арендатор 1ВАрендатор 2, и т. д.).
Создать пользователей и назначать роли:
После определения арендаторов вы можете создавать пользователей и назначать им роли, конкретные для каждого арендатора. Это гарантирует, что один и тот же пользователь может иметь разные роли в каждом арендаторе, в зависимости от того, какие разрешения им нужны.
Чтобы создать нового пользователя:
НажиматьДобавить пользователявКаталогэкран.
Назначить пользователю уникальныйключи другие данные пользователя (например, электронная почта, имя).
ВРазрешения на арендатораРаздел, вы можете назначить пользовательские роли, специфичные для арендатора, к которому они принадлежат.
Например, пользователь может бытьАдминистраторвАрендатор 1иПисательвАрендатор 2, как показано на скриншоте:
Здесь мы можем видеть всех наших пользователей и какие роли у них есть в каждом арендаторе, которым они принадлежат:
Некоторые из преимуществ использования разрешения.
- Централизованное управление политикой: Определите и управляйте всеми правилами и политиками авторизации с централизованной платформы. Это упрощает изменения в политике и обеспечивает последовательное правоприменение среди ваших арендаторов.
- Ролевая задача, конкретная арендатор: Легко назначить и управлять ролями на арендатора, позволяя пользователям иметь разные роли в разных средах (например,Администраторв одном арендаторе,Зрительв другом).
- Мелкозернистые разрешения: Реализуйте подробные разрешения для каждого ресурса и применение сложных мелкозернистых разрешений (например, на основе атрибутов или отношений) без необходимости дополнительной пользовательской логики.
- Поддержка Rebac: Разрешение.ioрасширяет традиционную модель RBAC с помощью REBAC, позволяя вам определять разрешения, основанные не только на ролях пользователей, но и наотношениямежду пользователями и ресурсами. Это особенно полезно, когда вам нужноконтекстуальные разрешения, например, разрешение доступа к ресурсам в зависимости от их организационной структуры или иерархий.
Суммирование: многоактивное разрешение на RBAC
В этом блоге мы исследоваливажность мультитенантного авторизацииИ как это объединить сКонтроль доступа на основе ролей (RBAC)Включает более эффективное и масштабируемое управление разрешениями пользователей в изолированных средах.
Мы обсудили проблемы традиционного RBAC в мультитенантных приложениях и то, как мультитенантный RBAC решает такие проблемы, как статические роли, ролевой взрыв и мелкозернистый контроль доступа.
Благодаря многопользовательскому авторизации, каждый арендатор может иметь свой собственный изолированный контроль доступа, обеспечивая, чтобы пользователи имели доступ только к тому, что они авторизованы в своих конкретных средах.
Разрешение.ioпозволяет вам внедрять многопользовательское разрешение более оптимизированным образом, благодаря централизованному управлению политикой, назначению ролей, специфичным для арендатора, мелкозернистым разрешениям и поддержке контроля доступа на основе отношений (Rebac).
Что дальше?
- ИсследоватьДокументация разрешения .IOЧтобы начать внедрение авторизации нескольких аттланжеров в вашем приложении.
- Присоединяйтесь кРазрешение сообществаЧтобы обсудить лучшие практики и получить поддержку.
Оригинал