B In der Marbles-Beispielbibliothek enthaltene fein granulierte Zugriffskontrollbibliothek verwenden

Hyperledger Fabric bietet eine feingranulierte Zugriffskontrolle für viele Verwaltungsfunktionen. Oracle Blockchain Platform stellt ein Murmeln-Beispielpackage auf der Registerkarte "Developer Tools" der Konsole bereit. Dabei wird eine Funktionsbibliothek implementiert, mit der Chaincode-Entwickler Access Control-Listen für Chaincode-Funktionen erstellen können. Es unterstützt derzeit nur die Go-Sprache.

Hintergrund

Das Ziel dieser Beispielbibliothek für die Zugriffskontrolle besteht darin, die folgenden Funktionen bereitzustellen:

  • Bietet einen Mechanismus, mit dem Sie steuern können, welche Benutzer auf bestimmte Chaincode-Funktionen zugreifen können. Die Liste der Benutzer und deren Berechtigungen ist dynamisch und wird über Chaincodes hinweg gemeinsam verwendet.
  • Bietet Zugriffskontrollprüfungen, sodass ein Chaincode die Access Control-Liste einfach prüfen kann.
  • Zum Zeitpunkt der Chaincode-Bereitstellung können Sie die Liste der Ressourcen und Access Control-Listen mit den ursprünglichen Elementen auffüllen. Es muss eine Access Control-Liste angegeben werden, damit Benutzer Zugriffssteuerungslistenvorgänge ausführen können.

Beispiel herunterladen

Öffnen Sie auf der Registerkarte Entwicklertools den Bereich Beispiele. Klicken Sie unter Marbles with Fine-Grained ACLs auf den Downloadlink. Dieses Paket enthält drei Unterpakete:
  • Fine-GrainedAccessControlLibrary.zip:

    Die fein granulierte Zugriffskontrollbibliothek. Es enthält Funktionen in Go, mit denen Chaincode-Entwickler Zugriffssteuerungslisten für Chaincode-Funktionen erstellen können.

  • fgACL_MarbleSampleCC.zip:

    Das Murmeln-Beispiel mit implementierten Access Control-Listen. Es enthält eine Vielzahl von Funktionen, mit denen Sie untersuchen können, wie Sie mit fein granulierten Access Control-Listen, -Gruppen und -Ressourcen arbeiten, um Funktionen auf bestimmte Benutzer/Identitäten zu beschränken.

  • fgACL-NodeJSCode.zip:

    Node.js-Skripte, die das Node.js-SDK zur Ausführung des Beispiels verwenden. registerEnrollUser.js kann verwendet werden, um neue Benutzer bei der Blockchain Platform zu registrieren. invokeQueryCC.js kann verwendet werden, um Transaktionen für eine Blockchain Platform-Instanz auszuführen.

Terminologie und Akronyme

Begriff Beschreibung
Identität Ein X509-Zertifikat, das die Identität des Aufrufers oder der spezifischen Identität darstellt, die der Chaincode prüfen möchte.
Identitätsmuster

Ein Muster, das einer oder mehreren Identitäten entspricht. Folgende Muster werden empfohlen:

  • X.509 Allgemeiner Name des Betreffs – CN
  • X.509 Fachorganisationseinheit – Betriebseinheit
  • X.509 Fachorganisation - O
  • Gruppe wie in dieser Bibliothek definiert – GRP
  • Attribut - ATTR

Das Format für ein Muster ist im Wesentlichen nur eine Zeichenfolge mit einem Präfix. Beispiel: Um ein Muster zu definieren, das mit einer beliebigen Identität in der Organisation "example.com" übereinstimmt, lautet das Muster "%O%example.com".

Ressource Der Name aller Elemente, auf die der Chaincode den Zugriff kontrollieren möchte. In dieser Bibliothek ist es nur eine benannte beliebige Zeichenfolge, die in einem flachen Namespace enthalten ist. Die Semantik des Namens ist vollständig bis zum Chaincode.
Gruppieren Eine Gruppe von Identitätsmustern.
ACL Access Control-Liste: eine benannte Entity mit einer Liste von Identitätsmustern, einer Liste von Zugriffstypen wie "READ", "CREATE", "INVOKE", "FORWARD" oder allem, was der Chaincode verwenden möchte. Diese Bibliothek verwendet die Zugriffstypen CREATE, READ, UPDATE und DELETE (Standard-CRUD-Vorgänge), um ihre Informationen zu verwalten. Abgesehen von diesen vier Elementen, die sich auf die Elemente in dieser Bibliothek beziehen, sind sie nur Strings ohne implizite Semantik. Eine Anwendung kann entscheiden, die Zugriffe auf "A", "B" und "CUSTOM" zu verwenden.