Fein granulierte Bibliotheksfunktionen für Zugriffskontrolle

Das Library-Package bietet die folgenden Funktionen für Ressourcen, Gruppen und ACLs sowie globale Funktionen.

Globale Funktionen

Funktion Beschreibung
Initialisierung (Identität *x509). Zertifikat, Stub shim.ChaincodeStubInterface) (Fehler) (Fehler)

Wenn der Chaincode instanziiert wird, wird die Initialisierungsfunktion aufgerufen. Diese Funktion initialisiert den Weltzustand mit einigen integrierten Access Control-Listen. Diese integrierten Listen werden zum Bootstrap der Umgebung verwendet. Daher muss der Zugriff kontrolliert werden, wer Ressourcen, Gruppen und ACLs erstellen kann. Wenn die Identifikation Null ist, verwenden Sie die Identifikation des Anrufers.

Nachdem das Bootstrap abgeschlossen ist, werden die folgenden Entitys erstellt:

  • Eine Ressource namens ". Ressourcen". Eine entsprechende ACL namens ". Resources.ACL" wird mit einem einzelnen Identitätsmuster im Format "%CN%bob.smith@oracle.com" erstellt. Dabei wird der tatsächliche allgemeine Name verwendet. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
  • Eine Gruppe namens ". Gruppen". Eine entsprechende ACL namens ". Groups.ACL" wird mit einem einzelnen Identitätsmuster im Format "%CN%bob.smith@oracle.com" erstellt. Dabei wird der tatsächliche allgemeine Name verwendet. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
  • Eine ACL namens ". ACLs". Eine entsprechende ACL-Steuerungsliste mit dem Namen ". ACLs.ACL" wird mit einem einzelnen Identitätsmuster im Format "%CN%bob.smith@oracle.com" erstellt. Dabei wird der tatsächliche allgemeine Name verwendet. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
NewGroupManager(Identität *x509. Zertifikat, Stub shim.ChaincodeStubInterface) (*GroupManager, Fehler)

Ruft den Gruppenmanager ab, der für alle gruppenbezogenen Vorgänge verwendet wird.

Identität: Die Standardidentität für den zugehörigen Vorgang. Wenn es null ist, verwenden Sie die Identität des Anrufers.

NewACLManager(Identität *x509. Zertifikat, Stub shim.ChaincodeStubInterface) (*ACLManager, Fehler)

Rufen Sie den ACL-Manager ab, der für alle ACL-bezogenen Vorgänge verwendet wird.

Identität: Die Standardidentität für den zugehörigen Vorgang. Wenn es null ist, verwenden Sie die Identität des Anrufers.

NewResourceManager(Identität *x509. Zertifikat, Stub shim.ChaincodeStubInterface) (*ResourceManager, Fehler)

Rufen Sie den Ressourcenmanager ab, der für alle ressourcenbezogenen Vorgänge verwendet wird.

Identität: Die Standardidentität für den zugehörigen Vorgang. Wenn es null ist, verwenden Sie die Identität des Anrufers.

Access-Control-Liste (ACL)-Funktionen

Definition der ACL-Struktur:
type ACL struct {
  Name string
  Description string
  Accesses []string  // CREATE, READ, UPDATE, and DELETE, or whatever the end-user defined
  Patterns []string    // identities
  Allowed bool          // true means allows access.
  BindACLs []string  // The list of ACL , control who can call the APIs of this struct
}
  • Zugriffszeichenfolgen: Die Zeichenfolge "Zugriffszeichenfolgen" ist eine Liste mit durch Komma getrennten beliebigen Zugriffsnamen und vollständig bis zur Anwendung. Davon ausgenommen sind vier: CREATE, READ, UPDATE und DELETE. Diese Zugriffswerte werden zur Verwaltung der fein granulierten Zugriffskontrolle verwendet. Anwendungen können ihre eigenen Zugriffszeichenfolgen verwenden, wie "register", "invoke" oder "query", oder sogar Zugriff auf Feldnamen, wie "owner", "quantity" usw.
  • Zulässig: "Zulässig" legt fest, ob Identitäten, die einem Muster entsprechen, den zulässigen Zugriff (true) oder den unzulässigen Zugriff (false) erhalten. Sie können eine Access Control-Liste verwenden, die angibt, dass Bob Zugriff auf "CREATE" hat, und eine weitere, die angibt, dass die Oracle-Gruppe (der Bob angehört) nicht in "CREATE" enthalten ist. Ob Bob Zugriff hat oder nicht, hängt von der Reihenfolge der Access Control-Listen ab, die der betreffenden Entity zugeordnet sind.
  • BindACLs: Der Parameter BindACLs bildet die anfängliche Access Control-Liste.

ACL-Funktionen:

Funktion Beschreibung
Erstellen (ACL, Identität *x509). Zertifikat) (Fehler)

Erstellt eine neue ACL. Doppelte benannte ACLs sind nicht zulässig.

Um eine neue ACL zu erstellen, benötigt die Identity CREATE-Zugriff auf die Bootstrap-Ressource mit dem Namen ". ACLs". Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

Get(aclName-Zeichenfolge, Identität *x509). Zertifikat) (ACL, Fehler)

Rufen Sie eine benannte ACL ab.

Die Identität muss READ-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

Delete(aclName-Zeichenfolge, Identität *x509. Zertifikat) (Fehler)

Angegebene ACL löschen.

Die Identität muss DELETE-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

Update(ACL ACL, Identität *x509. Zertifikat) (Fehler)

ACL aktualisieren

Die Identität muss UPDATE-Zugriff auf die benannte Ressource haben, und die benannte ACL muss vorhanden sein. Wenn die Identität Null ist, wird die in NewACLManager() angegebene Standardidentität verwendet.

AddPattern(aclName-Zeichenfolge, Musterzeichenfolge, Identität *x509. Zertifikat) (Fehler)

Fügt der benannten ACL ein neues Identitätsmuster hinzu. Die Identität muss UPDATE-Zugriff auf die benannte ACL haben.

Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

RemovePattern(aclName-Zeichenfolge, Musterzeichenfolge, Identität *X509Certificate) (Fehler)

Entfernt das Identitätsmuster aus der ACL. Die Identität muss UPDATE-Zugriff auf die benannte ACL haben.

Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

AddAccess(aclname-Zeichenfolge, Zugriffszeichenfolge, Identität *X509Certificate) (Fehler)

Fügt der benannten ACL einen neuen Zugriff hinzu. Die Identität muss UPDATE-Zugriff auf die benannte ACL haben.

Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

RemoveAccess(aclName-Zeichenfolge, Zugriffszeichenfolge, Identität *X509Certificate) (Fehler)

Entfernt den Zugriff von der ACL. Die Identität muss UPDATE-Zugriff auf die benannte ACL haben.

Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

UpdateDescription(aclName-Zeichenfolge, Zeichenfolge newDescription, Identität *X509Certificate) (Fehler)

Aktualisieren Sie die Beschreibung.

Die Identität muss UPDATE-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

AddBeforeACL(aclName-Zeichenfolge, beforeName-Zeichenfolge, newBindACL-Zeichenfolge, Identität *X509Certificate) (Fehler)

Fügt eine Bind-ACL vor der vorhandenen benannten ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Anfang der Bind-ACL-Liste hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

AddAfterACL(aclName-Zeichenfolge, afterName-Zeichenfolge, newBindACL-Zeichenfolge, Identität *X509Certificate) (Fehler)

Fügt eine Bind-ACL nach der vorhandenen benannten ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Ende der Bind-ACL-Liste hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

RemoveBindACL(aclName-Zeichenfolge, Zeichenfolge removeName, Identität *X509Certificate) (Fehler)

Entfernt die ACL removeName aus der Bind-ACL-Liste.

Die Identität muss UPDATE-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

GetAll(Identität *x509. Zertifikat) ([]ACL, Fehler)

Alle ACLs abrufen.

Die Identität muss READ-Zugriff auf die benannte ACL haben. Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

Gruppenfunktionen

Definition der Group-Struktur:
type Group struct {
    Name string
    Description string
    Members []string     // identity patterns, except GRP.
    BindACLs []string    // The list of ACLs, controls who can access this group.
}

Definition von GroupManager-Funktionen:

Funktion Beschreibung
Erstellen (Gruppengruppe, Identität *x509). Zertifikat) (Fehler)

Erstellen Sie eine neue Gruppe.

Die Identität muss CREATE-Zugriff auf die Bootstrap-Gruppe haben ". Gruppe". Wenn die Identität Null ist, wird die in NewGroupManager() angegebene Standardidentität verwendet.

Get(groupName-Zeichenfolge, Identität *x509). Zertifikat) (Gruppe, Fehler)

Ruft eine angegebene Gruppe ab.

Die Identität muss READ-Zugriff auf diese Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager() angegebene Standardidentität verwendet.

Delete(groupName-Zeichenfolge, Identität *x509. Zertifikat) (Fehler)

Angegebene Gruppe löschen

Die Identität muss DELETE-Zugriff auf diese Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

AddMembers(groupName-Zeichenfolge, Element []Zeichenfolge, Identität *x509. Zertifikat) (Fehler)

Fügen Sie der Gruppe ein oder mehrere Mitglieder hinzu.

Die Identität muss UPDATE-Zugriff auf diese Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

RemoveMembers(groupName-Zeichenfolge, Element []Zeichenfolge, Identität *x509. Zertifikat) (Fehler)

Entfernen Sie mindestens ein Mitglied aus einer Gruppe.

Die Identität muss UPDATE-Zugriff auf diese Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

UpdateDescription(groupName-Zeichenfolge, newDes-Zeichenfolge, Identität *x509). Zertifikat) (Fehler)

Aktualisieren Sie die Beschreibung.

Die Identität muss UPDATE-Zugriff auf diese Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

AddBeforeACL(groupName String, beforeName String, aclName String, Identity *x509). Zertifikat) (Fehler)

Fügt der Gruppe vor der vorhandenen benannten ACL eine Bind-ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Anfang der Liste der Bind-ACL für die Ressource hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

AddAfterACL(groupName String, afterName String, aclName String, Identity *x509). Zertifikat) (Fehler)

Fügt der Gruppe nach der vorhandenen benannten ACL eine Bind-ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Ende der Liste der Bind-ACL für die Gruppe hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

RemoveBindACL(groupName-Zeichenfolge, aclName-Zeichenfolge, Identität *x509). Zertifikat) (Fehler)

Entfernt die benannte ACL aus der Bind-ACL-Liste der benannten Gruppe.

Die Identität muss UPDATE-Zugriff auf die benannte Gruppe haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

GetAll(Identität *x509. Zertifikat) ([]Gruppe, Fehler)

Alle Gruppen aufrufen.

Die Identität muss READ-Zugriff auf diese Gruppen haben. Wenn die Identität Null ist, wird die in NewGroupManager () angegebene Standardidentität verwendet.

Ressourcenfunktionen

Definition der Resource-Struktur:
type Resource struct {
     Name string
     Description string
     BindACLs []string      // The name list of ACL, controls who can access this resource
}

Ressourcenfunktionen:

Abzug Beschreibung
Erstellen (Ressourcenressource, Identität *x509). Zertifikat) (Fehler)

Neue Ressource erstellen. Doppelte benannte Ressourcen sind nicht zulässig.

Die Identität muss CREATE-Zugriff auf die Bootstrap-Ressource mit dem Namen " haben. Ressourcen" Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

Get(resName-Zeichenfolge, Identität *x509). Zertifikat) (Ressource, Fehler)

Ruft eine angegebene Ressource ab.

Die Identität muss READ-Zugriff auf die Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

Delete(resName-Zeichenfolge, Identität *x509. Zertifikat) (Fehler)

Benannte Ressource löschen.

Die Identität muss DELETE-Zugriff auf die benannte Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

UpdateDescription(resourceName-Zeichenfolge, newDes-Zeichenfolge, Identität *x509). Zertifikat) (Fehler)

Aktualisieren Sie die Beschreibung.

Die Identität muss UPDATE-Zugriff auf diese Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

AddBeforeACL(resourceName String, beforeName String, aclName String, Identity *x509). Zertifikat) (Fehler)

Fügt der Ressource eine Bind-ACL vor der vorhandenen benannten ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Anfang der Liste der Bind-ACL für die Ressource hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

AddAfterACL(resourceName String, afterName String, aclName String, Identity *x509). Zertifikat) (Fehler)

Fügt der Ressource nach der vorhandenen benannten ACL eine Bind-ACL hinzu. Wenn die benannte ACL leer ist oder nicht gefunden wird, wird die ACL am Ende der Liste der Bind-ACL für die Ressource hinzugefügt.

Die Identität muss UPDATE-Zugriff auf die benannte Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

RemoveBindACL(resourceName-Zeichenfolge, aclName-Zeichenfolge, Identität *x509). Zertifikat) (Fehler)

Entfernt die benannte ACL aus der Bind-ACL-Liste der benannten Ressource.

Die Identität muss UPDATE-Zugriff auf die benannte Ressource haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

CheckAccess(resName-Zeichenfolge, Zugriffszeichenfolge, Identität *x509. Zertifikat) (bool, Fehler)

Prüfen Sie, ob der aktuelle Benutzer den angegebenen Zugriff auf die benannte Ressource hat.

Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.

GetAll(Identität *x509. Zertifikat) ([]Ressource, Fehler)

Alle Ressourcen abrufen.

Die Identität muss READ-Zugriff auf diese Ressourcen haben. Wenn die Identität Null ist, wird die in NewResourceManager() angegebene Standardidentität verwendet.