Fine-Grained Access Control Library – Funktionen

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

Globale Funktionen

Funktion Beschreibung
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

Wenn der Chaincode bereitgestellt wird, wird die Funktion Initialization aufgerufen. Diese Funktion initialisiert den Weltzustand mit einigen integrierten Access Control-Listen. Diese integrierten Listen werden zum Bootstrap der Umgebung verwendet. Es muss eine Zugriffskontrolle geben, wer Ressourcen, Gruppen und ACLs erstellen kann. Wenn die Identität Null ist, verwendet die Funktion die Identität des Aufrufers.

Nachdem der Bootstrap-Prozess abgeschlossen ist, werden die folgenden Entitys erstellt:

  • Eine Ressource mit dem Namen .Resources. Eine entsprechende ACL mit dem Namen .Resources.ACL wird mit einem einzelnen Identitätsmuster in der Form "%CN%bob.smith@oracle.com" erstellt, wobei der tatsächliche gemeinsame Name verwendet wird. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
  • Eine Gruppe namens .Groups. Eine entsprechende ACL mit dem Namen .Groups.ACL wird mit einem einzelnen Identitätsmuster in der Form "%CN%bob.smith@oracle.com" erstellt, wobei der tatsächliche gemeinsame Name verwendet wird. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
  • Eine ACL mit dem Namen .ACLs. Eine entsprechende ACL-Steuerungsliste mit dem Namen .ACLs.ACL wird mit einem einzelnen Identitätsmuster in der Form "%CN%bob.smith@oracle.com" erstellt. Dabei wird der tatsächliche gemeinsame Name verwendet. Der Zugriff ist CREATE-, READ-, UPDATE- und DELETE-Zugriff.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

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, verwendet die Funktion die Identität des Aufrufers.

NewACLManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*ACLManager, error)

Ruft 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, verwendet die Funktion die Identität des Aufrufers.

NewResourceManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*ResourceManager, error)

Ruft 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, verwendet die Funktion die Identität des Aufrufers.

Access Control-Listen-(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 willkürlichen Zugriffsnamen, die vollständig der Anwendung überlassen sind, mit Ausnahme von vier Zeichen: 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 über eine Access Control-Liste verfügen, die angibt, dass Bob Zugriff auf "CREATE" hat. Eine weitere Liste, 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
Create(acl ACL, identity *x509.Certificate) (error)

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

Um eine ACL zu erstellen, muss die Identity CREATE-Zugriff auf die Bootstrap-Ressource namens " haben. ACLs". Wenn die Identität Null ist, wird die in newACLManager() angegebene Standardidentität verwendet.

Get(aclName string, identity *x509.Certificate) (ACL, error)

Ruft 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 string, identity *x509.Certificate) (error)

Löscht eine angegebene ACL.

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, identity *x509.Certificate) (error)

ACL wird aktualisiert.

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 string, pattern string, identity *x509.Certificate) (error)

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

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

RemovePattern(aclName string, pattern string, identity *X509Certificate) (error)

Entfernt das Identitätsmuster aus der ACL. Die Identität muss über UPDATE-Zugriff auf die benannte ACL verfügen.

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

AddAccess(aclname string, access string, identity *X509Certificate) (error)

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

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

RemoveAccess(aclName string, access string, identity *X509Certificate) (error)

Entfernt den Zugriff von der ACL. Die Identität muss über UPDATE-Zugriff auf die benannte ACL verfügen.

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

UpdateDescription(aclName string, newDescription string, identity *X509Certificate) (error)

Aktualisiert 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 string, beforeName string, newBindACL string, identity *X509Certificate) (error)

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 string, afterName string, newBindACL string, identity *X509Certificate) (error)

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 string, removeName string, identity *X509Certificate) (error)

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(identity *x509.Certificate) ([]ACL, error)

Holen Sie sich alle ACLs.

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
Create(group Group, identity *x509.Certificate) (error)

Erstellt eine Gruppe.

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

Get(groupName string, identity *x509.Certificate) (Group, error)

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 string, identity *x509.Certificate) (error)

Löscht eine angegebene Gruppe.

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 string, member []string, identity *x509.Certificate) (error)

Fügt der Gruppe mindestens ein Mitglied 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 string, member []string, identity *x509.Certificate) (error)

Entfernt 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 string, newDes string, identity *x509.Certificate) (error)

Aktualisiert 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.Certificate) (error)

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.Certificate) (error)

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-ACLs 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 string, aclName string, identity *x509.Certificate) (error)

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(identity *x509.Certificate) ([]Group, error)

Ruft alle Gruppen ab.

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:

Fuktion Beschreibung
Create(resource Resource, identity *x509.Certificate) (error)

Erstellt eine Ressource. Doppelte benannte Ressourcen sind nicht zulässig.

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

Get(resName string, identity *x509.Certificate) (Resource, error)

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 string, identity *x509.Certificate) (error)

Löscht eine benannte Ressource.

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 string, newDes string, identity *x509.Certificate) (error)

Aktualisiert 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.Certificate) (error)

Fügt der Ressource 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 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.Certificate) (error)

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 string, aclName string, identity *x509.Certificate) (error)

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 string, access string, identity *x509.Certificate) (bool, error)

Prüft, 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(identity *x509.Certificate) ([]Resource, error)

Alle Ressourcen werden abgerufen.

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