B Verwenden der fein granulierten Zugriffskontrollbibliothek, die im Muster "Murmeln" enthalten ist

Ab Version 1.2 stellte Hyperledger Fabric eine fein granulierte Zugriffskontrolle für viele Verwaltungsfunktionen bereit. Oracle Blockchain Platform stellt ein Murmeln-Beispielpackage auf der Registerkarte "Entwicklertools" der Konsole bereit und implementiert eine Bibliothek von Funktionen, mit denen Chaincode-Entwickler Zugriffskontrolllisten für Chaincode-Funktionen erstellen können. Derzeit wird nur die Go-Sprache unterstützt.

Hintergrund

Das Ziel dieser Beispielbibliothek zur Zugriffskontrolle ist Folgendes:

  • Bietet einen Mechanismus, mit dem Sie steuern können, welche Benutzer auf bestimmte Chaincode-Funktionen zugreifen können.
  • Die Liste der Benutzer und ihre Berechtigungen sollte dynamisch sein und über Chaincodes hinweg gemeinsam verwendet werden.
  • Bietet Zugriffskontrollprüfungen, damit ein Chaincode die Access Control-Liste einfach prüfen kann.
  • Zum Zeitpunkt des Chaincode-Deployments können Sie die Liste der Ressourcen und Access-Control-Listen mit Ihren ersten Mitgliedern auffüllen.
  • Eine Access Control-Liste muss angegeben werden, um Benutzer zur Ausführung von Access Control-Listenvorgängen zu autorisieren.

Beispiel herunterladen

Öffnen Sie auf der Registerkarte Entwicklungstools den Bereich Beispiele. Klicken Sie auf den Downloadlink unter Murmeln mit fein granulierten ACLs. Dieses Package enthält drei Subpackages:
  • Fine-GrainedAccessControlLibrary.zip:

    Die Fine-Grained Access Control Library. Es enthält Funktionen in Go, die von Chaincode-Entwicklern zum Erstellen von Access Control-Listen für Chaincode-Funktionen verwendet werden 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 zum Ausführen von Transaktionen für eine Blockchain Platform-Instanz verwendet werden.

Terminologie und Akronyme

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

Ein Muster, das einer oder mehreren Identitäten entspricht. Die folgenden Muster werden vorgeschlagen:

  • X.509 Subject Common Name - CN
  • X.509 Fachorganisationseinheit - Betriebseinheit
  • X.509-Themenorganisation - O
  • Gruppe gemäß Definition in dieser Bibliothek - GFK
  • 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 Organisation "example.com" übereinstimmt, lautet das Muster "%O%example.com".

Ressource Der Name aller Elemente, auf die der Chaincode den Zugriff kontrollieren möchte. Für diese 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 den vier Elementen, die sich auf die Elemente in dieser Bibliothek beziehen, handelt es sich nur um Zeichenfolgen ohne implizite Semantik. Eine Anwendung kann beschließen, Zugriffe auf "A", "B" und "CUSTOM" zu verwenden.