B Fein granulierte Zugriffskontrollbibliothek im Marbles-Beispiel 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 Entwicklungstools den Bereich Beispiele. Klicken Sie unter Marbles mit fein granulierten 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 Access Control-Listen für Chaincode-Funktionen erstellen können.

  • fgACL_MarbleSampleCC.zip:

    Das Marbles-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 Beispiel mit dem Node.js-SDK ausführen. 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 mit einer oder mehreren Identitäten übereinstimmt. Die folgenden Muster werden vorgeschlagen:

  • X.509 Subject Common Name – CN
  • X.509 Fachorganisationseinheit – OU
  • X.509-Subjektorganisation – 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 der Organisation "example.com" übereinstimmt, lautet das Muster "%O%example.com".

Ressource Der Name aller Elemente, auf die der Chaincode den Zugriff steuern 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 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 sich entscheiden, Zugriffe von "A", "B" und "CUSTOM" zu verwenden.