Сущности авторизационной модели¶
Сервис идентификации (IdentityService)¶
Сервис идентификации осуществляет идентификацию пользователя и выдает токен, который содержит атрибуты пользователя.
Пользователь (User)¶
Физическое лицо, зарегистрированное в сервисе идентификации. Удостоверяющие сервисы сегмента "Ключ" выдают пользователю JWT токен, который отправляется в заголовок запроса authorization=Bearer %token%
Api-Key¶
Ключ, который выдается контрагенту для M2M интеграции. Привязан к группе доступа, запрос с использованием Api-Key контролируется разрешениями этой группы. Отправляется в заголовок запроса X-Api-Key=%api-key%
Сервис ресурсов (ResourceService)¶
Сервис управляющий бизнес-сущностями некой доменной области и требующий разделения прав доступа пользователей к ресурсам. Сервис ресурсов контролирует подлинность пользовательского токена, имеет набор доверенных сервисов идентификации. Методы сервиса реализуют политики доступа к ресурсам, опираясь на атрибуты пользователя (Claim), полученные или в теле токена, или в результате запроса в сервис управления доступом, например, на разрешения.
Разрешения (Permission)¶
Атрибуты пользователя, которыми управляет сервис управления доступом, и на основании которых сервис ресурсов дает доступ к ресурсам. Представляет собой специальные атрибуты (Claim) с key=PERMISSION, где value - это строка вида telemetry_control:user:save:own - telemetry_control - определение ресурсного домена - device - тип ресурса над которой происходит действие - save - разрешенное действие над ресурсом - own - определение resource scope - подмножества ресурсов, над которыми разрешено действие.
Группы доступа (Group)¶
Группа пользователей, наделенных общим набором разрешений. Пользователи принадлежат группе, если они привязаны к группе в сервисе управления доступом или если их атрибуты соответствуют требованиям для группы.
Шаблоны группы пользователей (GroupTemplate)¶
Шаблон для создания группы нужного типа. Содержит набор необходимых разрешений и требований, набор может быть дополнен при создании конкретной группы.
Сервис управления доступом (AccessService)¶
Сервис управляющий сущностями авторизационной модели
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD
%% Nodes
IdentityService
adminUI
subgraph access_management.GroupService
grpcGroupCRUD
grpcGroupUserAttach
GetGroupClaimList
end
subgraph resourceService
resourceMethod
policyImplementation
end
clientUI-->|1.login,<br>credentials|IdentityService
IdentityService-->|2.clientKeyToken|clientUI
clientUI-->|3.getResource,<br>clientKeyToken|resourceMethod
resourceMethod-->|4.userId,<br>userAttrs|GetGroupClaimList
GetGroupClaimList-->|5.getUserInfo|IdentityService
IdentityService-->|6.userInfo|GetGroupClaimList
GetGroupClaimList-->|7.grantedPermissions,<br>userGroups|resourceMethod
resourceMethod-->|8.grantedPermissions,<br>userGroups|policyImplementation
policyImplementation-->|9.userPrivilege|resourceMethod
resourceMethod-->|10.resource|clientUI
adminUI-->|editPermission|grpcGroupCRUD
adminUI-->|editAttach|grpcGroupUserAttach