Там система прав Чан

задняя часть

Текст | Мао Чэнгуан, Ма Чуньцзе о розничной торговле

Как компания, предоставляющая бизнес-услуги, Youzan помогает бизнесменам добиться успеха в эпоху Интернета с помощью продуктов и услуг. На волне новой розничной торговли Youzan Retail предлагает продавцам решения для управления магазинами и интернет-магазинами разного масштаба, чтобы помочь ритейлерам быстро войти в новую эру розничной торговли.

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

После полного анализа бизнес-сценариев розничной торговли и непрерывного изучения и обсуждения решений по управлению ролями сотрудников появилась система разрешений SAM (Security Access Manager).Сэм - это веха, который, вероятно, будет изучить роли для роли работников, поддерживает права розничных продуктов, приложения и продуктов PAD, а любой розничный розничный магазин может быть гибким через системы разрешений SAM. Персонал в магазине гибко присваивает роли, ответственность перед людьми и улучшить эффективность работы магазина, Поддерживая розничный бизнес, абстрактный набор рамок управления правами, такая же поддержка других направлений бизнес-продуктов (микро-торговый центр).

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

Многие вещи в компьютерном мире являются тенью реального мира, и многие модели/концепции, наблюдаемые в реальном мире, можно найти в компьютерном мире. Всегда помнил, что невидимка на QQ была ей видна, из-за страха, что она не сможет его увидеть, а когда она выходила в офлайн и онлайн, ее все равно игнорировали; Всегда помнил, интимные любовники стали самыми знакомыми незнакомцами после взлома Ю, wechat, телефон, QQ заблокированы. Все эти случаи являются сопоставлением системы разрешений компьютера с реальным миром.Вы невидимы и видимы для богини, что фактически дает ей разрешение видеть ваше невидимое состояние (реальное состояние).Конечно, вы также позволяете другим причинять боль вы.разрешения;любовники перетаскивают друг друга в черный список группы пользователей,чтобы они не могли видеть динамику друг друга и стали самыми фамильярными незнакомцами;с этого момента проходите мимо вашего мира.

RBAC

В приведенном выше примере мы можем аннотация такого рисунка: «Кто выполняет как операция на что (которая)». Например, в случае влюбленных, после того, как вы блокируете другую сторону, вы (кто) не смогут увидеть (как) послание другой стороны (что) в кругу друзей. Это классический RBAC (роль на основе доступа доступа к разрешению). RBAC считает, что разрешение на самом деле является тем, кто, как, как проблема. В модели RBAC, которая, что, и как составляют доступом разрешение тройной, то есть «кто (владелец или предмет разрешения) выполняет как (конкретное разрешение) на что (что) (объект или ресурс, предназначенный Разрешение).) Операция ".

Модель RBAC вводит концепцию «ролей». Так называемая «роль» - это набор операций, которые могут выполняться одной или группой пользователей в системе. Это набор пользователей и набор разрешений. Назначая роли пользователей и предоставления разрешений к ролям, пользователи и разрешения косвенно связаны с помощью ролей. Основная модель RBAC показана на рисунке:

В RBAC существует отношение «многие ко многим» между пользователями и ролями, а также между ролями и разрешениями. Сеанс — это сопоставление пользователя с несколькими ролями, и разрешения пользователя в это время могут быть объединением разрешений активных ролей. RBAC делит процесс управления авторизацией ресурсов на две части: во-первых, он реализует связь между правами доступа и ролями, а затем реализует связь между ролями и пользователями, чтобы реализовать логическое разделение пользователей и прав доступа.

Система разрешений SAM

Дизайн модели системы разрешений SAM

Модель RBAC отличается от обязательного управления доступом и свободно выбранного управления доступом, предоставляя права пользователям напрямую, но присваивая права ролям. В RBAC разрешения связаны с ролями, и пользователи получают разрешения этих ролей, становясь членами соответствующих ролей Ролям могут быть предоставлены новые разрешения в соответствии с новыми требованиями и системной интеграцией, а разрешения также могут быть получены из роли по мере необходимости. Рециркулировать. RBAC — более нейтральная и гибкая технология управления доступом, чем традиционный контроль доступа. С точки зрения управления ролями сотрудников в розничном магазине роли создаются для выполнения различных задач, и сотрудникам назначаются соответствующие роли в соответствии с их обязанностями и квалификацией, и сотрудники должны легко переключаться с одной роли на другую. Поэтому ритейл выбирал на основе Модель RBAC используется для реализации системы полномочий для решения проблемы распределения ролей персонала по управлению бизнесом.

Согласно идее модели RBAC, бизнес-модель системы разрешений SAM состоит из двух частей: управление сотрудниками и управление разрешениями. Управление сотрудниками в основном относится к управлению сотрудниками и назначению им ролей. Управление разрешениями в основном относится к управлению меню, страницы, кнопки, API и другие ресурсы.Точка базовой бизнес-функции используется в качестве точки полномочий для реализации запроса роли управления к субъекту ресурса и представляет собой модель авторизации «пользователь-роль-полномочие-ресурс».

Вот несколько распространенных языков в модели системы разрешений SAM:

  • Сотрудник: носитель роли, исполнитель полномочий

  • Роли. Роли — это дополнительные сопоставления наборов разрешений. Бизнес-система может динамически управлять ролями, и каждая компания может предоставить список ролей по умолчанию для удобства пользователей, чтобы они соответствовали различным разрешениям сотрудников.

  • Точка разрешений: глобально уникальные полномочия для представления определенной функции, соответствующей состоянию точки.

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

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

  • API: каналы и действия для запроса системных ресурсов со свойствами набора функций.

  • Меню: запись, которая организует системные ресурсы и отображает их для запроса, с атрибутом набора функций

  • Страница: Быть специальным меню, имеет свойство URL

  • Кнопка: более детальная запись ресурса на странице, рассматриваемая как специальное меню.

Реализация модели системы привилегий SAM

В традиционной модели RBAC таблица отношений обычно используется для сохранения соответствующих отношений между ролями и наборами разрешений, чтобы связать разрешения с ролями. Можно предвидеть, что с непрерывным развитием розничного бизнеса будет накапливаться бесчисленное количество функциональных точек, что делает данные таблицы ассоциаций чрезвычайно сложными для обслуживания и использования. Система разрешений SAM решает эту проблему с помощью стратегии базового преобразования и повышает эффективность хранения и эффективность определения разрешений. Десятичное число примитивного типа Long, которое также можно рассматривать как двоичное, состоящее из 64 битов 0 или 1. При разработке системной модели SAM каждая функциональная точка определяется как точка разрешения, которая гарантированно является уникальной в глобальном масштабе точкой разрешения по двум атрибутам: idx и pos. IDX Указывает номер пробела Long, pos указывает позицию в двоичном числе, соответствующую Long, а 64-битная длина может представлять 64 различных функциональных точки. Когда 64 бита заполнены, функциональные точки больше не могут быть размещены.В это время атрибут idx будет автоматически увеличен, и пространство типа Long будет повторно применено. Такое длинное 64-битное число в сочетании с 0 или 1 может представлять описание состояния полномочий для 64 различных функциональных точек.

Например: набор разрешений {1} означает наличие разрешения, соответствующего idx=0, pos=0, а набор разрешений {-1,1} означает наличие idx=0,pos∈[0,1,2,..,63 ] Разрешение функциональной точки, соответствующее idx=1,pos=0.

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

Формула преобразования набора разрешений: {(idx0,pos0),(idx0,pos1)…(idxN,posM)} => {Long0,Long1…LongN}

Система разрешений SAM также реализует «Кто выполняет операцию «Как над чем» через идею шестнадцатеричного числа. Когда роль запрашивает определенный ресурс (меню/API), она передает формулу расчета проверки разрешения — шестнадцатеричное побитовое «И» Идея (см. ниже) узнать, есть ли у роли разрешение на доступ к ресурсу. Используя базовую систему для реализации операций, эффективность определения полномочий станет более эффективной. Например, когда менеджер склада щелкает меню товарных запасов, формула расчета, лежащая в основе проверки разрешений, на самом деле представляет собой побитовое И вычисление набора разрешений роли и набора разрешений ресурса.Любая пара Long с серийным номером idx не считается.0, то есть два набора имеют общий набор функций, а роль считается имеющей разрешение на доступ к ресурсам.

Формула расчета проверки разрешений: {Long0,Long1…LongN} и {Long0,Long1…LongM}

Реализация модели системы SAM власти следует принципу наименьших властей, принцип разделения обязанностей и принципа абстракции данных в модели RBAC. Через принцип наименьших полномочий роли могут быть сконфигурированы к минимальному набору необходимых функций Чтобы завершить свои задачи; с разделением обязанностей принцип может быть воплощен путем вызова взаимно независимых и взаимоисключающих ролей для совместных полных чувствительных задач, таких как требование менеджера склада и товарного менеджера совместно участвовать в товаре. Абстракция данных может быть воплощена путем абстракции разрешений, таких как управление рабочими товарами, управление запасами, управление запасами и другие абстрактные разрешения, а не типичные разрешения на чтение, запись и выполнение, предоставленные операционной системой.

Архитектура системы разрешений SAM

Розничная торговля использует ПК, приложения и планшеты для удовлетворения потребностей различных продавцов в терминалах, поэтому система разрешений SAM должна соответствовать различным бизнес-сценариям разрешений клиентов в розничной торговле, а также поддерживать бизнес разрешений на продукты в микроторговых центрах. Система полномочий SAM использует микросервисы для предоставления услуг внешнему миру и реализована с использованием распределенной многоуровневой архитектуры. Она в основном включает две части: клиент и сервер. Клиент легко встраивается в бизнес-систему и обеспечивает ролевой доступ к различным бизнес-системам Контроль ресурсов, сервер взаимодействует с клиентом, предоставляя сервис Dubbo, а сервис Nova взаимодействует с клиентом. Сервер в основном управляет данными о сотрудниках, меню, ролях, API и функциональных точках. Как базовый сервис SAM ежедневно получает огромное количество запросов. Кэш Redis используется для решения проблем с производительностью, а Druid используется в качестве пула соединений с базой данных для управления подключением и выпуском базы данных. В то же время, состояние работы системы можно наблюдать путем стыковки с платформой мониторинга Skynet для повышения стабильности системы.

Роль системы розничной торговли Youzan на базе SAM в основном используется для управления доступом ресурсов к проверке API и рендерингу меню.После того, как любой розничный магазин войдет в систему розничной торговли Youzan, нажмите на элемент меню или страницы (кнопку, ссылку. ..) на странице. , выполнит отрисовку меню и проверку интерфейса API. Из-за огромного количества вызовов двух частей и разного количества запросов от разных клиентов для предотвращения взаимных помех такие возможности, как отрисовка меню и проверка API реализованы в разных клиентах.

Рендеринг меню

Сэм Клиент по режиму доступа, меню для рендеринга на стороне клиента. Сэм теперь предоставил PHP / NODE JS два клиента для доступа и веб-слоя Render. Процесс рендеринга меню можно разделить на три точки:

1. Узел позиционирования

Согласно разделению системных функций, меню обычно осуществляется для того, чтобы показать форму дерева. ПК розничная информация, например, все элементы, показанные на странице, считаются меню, элементы меню включают в себя: меню, страницу, кнопки. При доступе к фоновому фону, пользовательское меню обычно останутся на странице, страница имеет глобально уникальные атрибуты: URL, UP: Вы можете найти root через родительское меню, вниз по следующей странице может содержать несколько подменю - кнопку. SAM Следовательно, нужно только запросить URL-адрес тока, фон может быть расположен в дереве меню до уникального меню страницы, узел меню при получении пути и имеет кнопку.

2. Расчет разрешения

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

3. Передача атрибутов

Меню по умолчанию не имеет свойства URL. Атрибут URL меню генерируется путем передачи URL-адреса подменю. SAM выберет URL-адрес первого подменю с разрешением в качестве атрибута родительского узла и передаст его в меню первого уровня.

Проверка разрешения API

В дополнение к меню в системах розничной торговли API — это еще один тип запрашиваемого ресурса. Проверка API — еще одна гарантия контроля разрешений в дополнение к рендерингу меню. Когда запрос API перенаправляется в конкретную бизнес-систему через Carmen (шлюз API), клиент проверки SAM API, встроенный в бизнес-систему, сначала определяет, есть ли у роли разрешение на доступ к этому API, с помощью приведенной выше формулы расчета проверки разрешений. проверка разрешений пройдена, выполняется следующая бизнес-логика.

Конкретный процесс показан на следующем рисунке.

Реализация псевдокода проверки разрешений API:

#权限不通过错误码提示信息
AUTHPERM_ERROR(231000401,"您没有权限执行该操作!")
# 织入点
@Before("@annotation(com.youzan.sam.common.Auth)")
# 切面处理方法
def handle(JoinPoint pjp):
    # 可以启动时或者运行时控制该开关是否对API进行权限校验
    if(!enable):
         return
    # 权限校验结果包装对象
    def pass=checkPermission()
    # 权限校验执行成功
    if (pass.isSuccess()):
       # 权限校验通过
       if(pass.getData().get("isSuccess")):
         return
       # 权限校验不通过
       else:
         throw new BusinessException(AUTHPERM_ERROR.getCode,AUTHPERM_ERROR.getMessage());
    # 权限校验执行失败
    else:
       throw BusinessException(pass.getCode(), pass.getMessage())

# 权限校验方法
def checkPermission():
    # 判断是否需要走权限校验,对于某些内部调用可以直接跳过
    {...}
    # 获取卡门(API网关)隐式参数,运用了dubbo的隐式传参的能力
    def kdt_id=RpcContext.getContext().getAttachment(Constants.KDT_ID_KEY)
    def admin_id=RpcContext.getContext().getAttachment(Constants.ADMIN_ID_KEY)
    def service = RpcContext.getContext().getAttachment(Constants.SERVICE_KEY)
    def method = RpcContext.getContext().getAttachment(Constants.METHOD_KEY)
    def version = RpcContext.getContext().getAttachment(Constants.VERSION_KEY)
    # 上述参数的校验
    {...}
    # 通过StaffPermServiceProxy获取角色的权限集
    def staffPerm=StaffPermServiceProxy.getStaffPerms(adminId, kdtId)
    # 通过APIPermServiceProxy获取API的权限集
    def apiPerm=APIPermServiceProxy.getServicePerms(service, version, method)
    # 运用权限校验计算公式判定该角色是否可以访问此API
    {...}
    # 返回结果
    return passскопировать код

Процесс проверки разрешений API можно обобщить следующим образом:

  1. Бизнес-сторона аннотирует аннотацию @Auth в соответствующем API, который требует проверки авторизации. Платформа Spring будет сканировать компонент на наличие методов, аннотированных аннотацией @Auth, при инициализации создания бизнес-компонента. Для тех, которые отмечены аннотацией @Auth, будет создан прокси-класс, а затем вплетается аспект разрешений в прокси-класс;

  2. Когда бизнес вызывает метод, помеченный аннотацией @Auth, он выполняет логику аспекта проверки разрешений. Во-первых, проверьте переключатель проверки разрешений, чтобы определить, требуется ли проверка разрешений. Этот переключатель можно динамически установить во время выполнения;

  3. При необходимости снова позвоните в метод проверки разрешений authService. AuthService получит информацию о разрешении роли сотрудников с сервера SAM в соответствии с идентификатором хранилища и идентификатора пользователя, и получить сервис, метод и версию с сервера SAM в соответствии с неявными параметрами. из Carmen (Gateway API). Соответствующие разрешения API (по сравнению с непосредственно отметили точки разрешений на соответствующем API, этот метод более гибкий, и он может быть легко обновлен с обновлением версии Business API. В то же время объединены С Carmen (Gateway API), API может быть взволнован., Разные купцы могут соответствовать разным API Проверка разрешений.

  4. После получения набора разрешений роли и набора разрешений API выполните проверку разрешений на основе приведенной выше логики проверки ролей и разрешений. Если проверка пройдена, запрос API официально инициируется. Если проверка не пройдена, разрешение не запрашивается.

Абстрактная модель системы привилегий SAM

После анализа требований к продукту требования передаются в разработку для завершения. Система полномочий SAM поддерживает как розничный бизнес, так и микроторговые центры. Каждый модуль розничной торговли поддерживается различными продуктами, чтобы лучше удовлетворить потребности продавцов услуг и облегчить анализ продуктов. Система полномочий SAM может быть абстрагирована в следующую модель, и продавцы и продукты могут подключаться к системе полномочий SAM с разных точек зрения. Например, продавец, как показано на рисунке ниже, хочет иметь операционную роль, которая должна иметь возможность создавать новые продукты и просматривать заказы, а также требует, чтобы кассир имел возможность только просматривать заказы. Продукт анализируется с точки зрения его собственного дизайна, а соответствующие модули - это управление товарами и управление заказами.Под соответствующим модулем есть соответствующие товары и меню заказов.Наконец, разрешения ролей отражаются в элементах страницы и элементах страницы. . На API, например, кнопка создания нового продукта и кнопка просмотра заказа будут отображать разные стили рендеринга, триггеры кнопок соответствуют разным API, которые взаимодействуют с бэкендом, а разные роли имеют разные возможности выполнения API.

      

перспективы на будущее

пользовательская роль

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

несколько ролей

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

Поддержка розничного мидл-офиса

Retail Mid-Taiwan — флагманский продукт Youzan Retail, целью которого является предоставление продавцам многоканального решения, охватывающего онлайн, многоканальные и офлайн-мультимагазины. выкуп. . Его бизнес-форма очень сложна, включает в себя комбинацию ролей и разрешений, и у каждого продавца могут быть некоторые персонализированные потребности.Как обеспечить гибкие возможности адаптации, является проблемой для системы SAM.

пользовательское меню

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

Трансформация

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

Эпилог

В настоящее время система имеет права собственности похвалы розничной технической команды, открывая права доступа и возможности услуг работников. В настоящее время командная бизнес быстро разработал, HC продолжил открыться, все с нетерпением ждут больше людей с высокими идеалами для присоединения. (Нажмите, чтобы прочитать оригинал или общественное озабоченность № Ответить «Похвала розничную техническую команду« Получить »для похвалы розничной технической команды« Информация)