B Fein granulierte Zugriffskontrollbibliothek im Marbles-Beispiel verwenden

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

Hintergrund

Ziel dieser Beispielbibliothek zur Zugriffskontrolle ist es, Folgendes bereitzustellen:

  • Bietet einen Mechanismus, mit dem Sie steuern können, welche Benutzer auf bestimmte Chaincode-Funktionen zugreifen können.
  • Die Liste der Benutzer und ihrer Berechtigungen sollte dynamisch sein und über Chaincodes hinweg gemeinsam verwendet werden.
  • 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 Ihren anfänglichen Elementen auffüllen.
  • Eine Access-Control-Liste muss 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.