Можно ли выделить две отдельные организации в одной бизнес-сети? - PullRequest
0 голосов
/ 26 мая 2018

В настоящее время у меня есть две организации в одной бизнес-сети (org1 и org2), и у меня разные роли для участников, настроенных в файле модели, так как

participant Mailer identified by workerid {
  o String workerid
}
participant Processor identified by wid {
  o String wid
}

есть способ добавить правилов файле разрешений, так что только администраторы из org1 могут создавать почтовые программы, и только администраторы из org2 могут создавать процессоры.что-то вроде

rule enableOrg1ToCreateMailers {
  description: "Enable admin from org 1 to create Mailers"
  participant(t): "org.hyperledger.composer.system.NetworkAdmin"
  operation: CREATE
  resource: "demonetwork1.Mailer"
  condition: (t.organization.getidentifier() == "org1")
  action: ALLOW
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

ваше правило, вероятно, будет выглядеть примерно так (так как 'Organization' не является атрибутом этого класса 'system' admin):

rule enableOrg1ToCreateMailers {
  description: "Enable admin from org 1 to create Mailers"
  participant(t): "org.hyperledger.composer.system.NetworkAdmin"
  operation: ALL  // (CREATE, READ, UPDATE, DELETE)
  resource: "demonetwork1.Mailer"
  condition: (t.getIdentifier() == "org1admin")
  action: ALLOW
}

Возможно, вы предпочтете определить экземпляр участника как-то так:org.acme.mynetwork.orgadmin (с полем «организация», которое вы добавляете в модель), а затем используйте его, например.

participant(t): "org.acme.mynetwork.orgadmin"

и ваше исходное условие выше.

Более эффективно предоставлять Организацию(как вы сделали) как атрибут класса участника бизнес-сети, участвующего в создании ресурсов бизнес-сети, поэтому ACL проверяется немедленно ... вместо того, чтобы извлекать его из другого источника, как это было раньше.Я добавил только «ВСЕ» - если одним и тем же администраторам бизнес-сети разрешено выполнять другие операции CRUD с такими ресурсами и т. Д. (Т. Е. Больше, чем операция «СОЗДАТЬ» и т. Д.).

Наконец, пример (хотя и несколько более сложное условие, тем не менее, может дать вам те же принципы) в другом месте показан здесь как полезный ориентир: Включает функцию в условии ACL

0 голосов
/ 28 мая 2018

Если вы посмотрите документацию по языку ACL, вы найдете этот отрывок, описывающий условие condition:

- это логическое выражение JavaScript для связанных переменных.Здесь можно использовать любое выражение JavaScript, допустимое в выражении if(...).Выражения JavaScript, используемые для условия правила ACL, могут ссылаться на служебные функции JavaScript в файле сценария.Это позволяет пользователю легко реализовать сложную логику управления доступом и повторно использовать одни и те же логические функции управления доступом в нескольких правилах ACL.

Так что, мне кажется, правильный путь - экспериментировать с этой функцией.и узнайте, как вы можете внедрить логику на основе JavaScript в файл ACL.

...