Как использовать управление доступом на основе атрибутов (ABAC) - PullRequest
2 голосов
/ 02 октября 2019

Я знаю, что мы можем реализовать управление доступом в коде цепи с помощью ABAC.
Например, существует 2 организации.
У пользователей Org1 есть атрибут: org_id=org1.
У пользователей Org2 есть атрибут: org_id=org2.

Но, если Fabric-CA-Server не имеет функции, позволяющей пользователям иметь назначенный атрибут в организации, пользователи могут замаскировать свой атрибут с помощью администратора Fabric-CA.
(Iозначает, что пользователи Org1 могут иметь атрибут: org_id=org2, если они действительно хотят это сделать.)

В конечном счете, я думаю, что ABAC в цепочечном коде не имеет смысла.
Как я могу ABAC? Есть ли подходящий вариант использования?

1 Ответ

0 голосов
/ 02 октября 2019

Когда пользователи зарегистрированы в ЦС, им могут быть назначены атрибуты по человеку / идентификатору, который их регистрирует - например, с помощью командной строки fabric-ca-client:

fabric-ca-client register --id.name clare --id.secret hellothere --id.maxenrollments -1 --id.attrs 'department=Finance:ecert,role=buyerapproval:ecert'

Атрибуты будут присутствовать в Сертификатах при регистрации clare, и тогда в этом примере роль и отдел могут быть проверены в смарт-контракте (цепной код), когда Clare отправляет транзакцию.

(этонеобходимо иметь флаг ecert на атрибуте, чтобы убедиться, что он включен в сертификат.)

Атрибуты установлены в ЦС, поэтому применяются только к сертификату, который выдается при регистрации после того, как атрибуты имеютбыл установлен - существующие сертификаты не изменены.

...