Funzioni della libreria del controllo dell'accesso con filtro

Il pacchetto della libreria offre le funzioni indicate di seguito per risorse, gruppi e ACL, nonché per funzioni globali.

Funzioni globali

Funzione Descrizione
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

Quando viene distribuito il codice concatenato, viene chiamata la funzione Initialization. Questa funzione inizializza lo stato del mondo con alcune liste di controllo dell'accesso integrate. Questi elenchi built-in vengono utilizzati per eseguire il bootstrap dell'ambiente. Deve essere presente il controllo dell'accesso su chi può creare risorse, gruppi e ACL. Se l'identità è nulla, la funzione utilizza l'identità del chiamante.

Al termine del processo di bootstrap, vengono create le seguenti entità:

  • Una risorsa denominata .Resources. Verrà creata una ACL corrispondente denominata .Resources.ACL con un singolo pattern di identità nel formato "%CN%bob.smith@oracle.com", utilizzando il nome comune effettivo e l'accesso sarà CREATE, READ, UPDATE e DELETE.
  • Gruppo denominato .Groups. Verrà creata una ACL corrispondente denominata .Groups.ACL con un singolo pattern di identità nel formato "%CN%bob.smith@oracle.com", utilizzando il nome comune effettivo e l'accesso sarà CREATE, READ, UPDATE e DELETE.
  • Un'ACL denominata .ACLs. Verrà creata una lista di controllo ACL corrispondente denominata .ACLs.ACL con un singolo pattern di identità nel formato "%CN%bob.smith@oracle.com", utilizzando il nome comune effettivo e l'accesso sarà CREATE, READ, UPDATE e DELETE.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

Recupera il manager del gruppo utilizzato per tutte le operazioni correlate al gruppo.

Identità: l'identità predefinita per l'operazione correlata. Se è nullo, la funzione utilizza l'identità del chiamante.

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

Ottiene il manager ACL utilizzato per tutte le operazioni correlate all'ACL.

Identità: l'identità predefinita per l'operazione correlata. Se è nullo, la funzione utilizza l'identità del chiamante.

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

Recupera il Resource Manager utilizzato per tutte le operazioni correlate alle risorse.

Identità: l'identità predefinita per l'operazione correlata. Se è nullo, la funzione utilizza l'identità del chiamante.

Funzioni della lista di controllo dell'accesso (ACL)

Definizione della struttura ACL:
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
}
  • Accessi: la stringa Accesses è una lista di nomi di accesso arbitrari separati da virgole e dipende completamente dall'applicazione, ad eccezione di quattro: CREATE, READ, UPDATE e DELETE. Questi valori di accesso vengono utilizzati per gestire il controllo dell'accesso con filtro. Le applicazioni possono utilizzare le proprie stringhe di accesso, ad esempio "register", "invoke" o "query", o anche elementi quali l'accesso ai nomi dei campi, ad esempio "owner", "quantity" e così via.
  • Consentito: l'opzione Consentito determina se alle identità che corrispondono a un pattern è consentito l'accesso (true) o l'accesso non consentito (false). È possibile disporre di una lista di controllo dell'accesso che indichi che Bob ha accesso a "CREATE", mentre un'altra che indichi che il gruppo Oracle (di cui Bob è membro) non è consentito a "CREATE". Il fatto che Bob abbia accesso o meno dipende dall'ordine delle liste di controllo dell'accesso associate all'entità in questione.
  • BindACLs: il parametro BindACLs costituisce la lista di controllo dell'accesso iniziale.

Funzioni ACL:

Funzione Descrizione
Create(acl ACL, identity *x509.Certificate) (error)

Crea un'ACL. ACL denominate duplicate non consentite.

Per creare un'ACL, l'identità deve disporre dell'accesso CREATE alla risorsa bootstrap denominata ". ACL". Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

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

Ottiene un'ACL denominata.

L'identità deve avere accesso in Lettura all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

Delete(aclName string, identity *x509.Certificate) (error)

Elimina un'ACL specificata.

L'identità deve disporre dell'accesso ELIMINA all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

Update(acl ACL, identity *x509.Certificate) (error)

Aggiorna un'ACL.

L'identità deve disporre dell'accesso UPDATE alla risorsa denominata e l'ACL denominata deve esistere. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewACLManager().

AddPattern(aclName string, pattern string, identity *x509.Certificate) (error)

Aggiunge un nuovo pattern di identità all'ACL denominata. L'identità deve disporre dell'accesso UPDATE all'ACL denominata.

Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager() .

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

Rimuove il pattern di identità dall'ACL. L'identità deve disporre dell'accesso UPDATE all'ACL denominata.

Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

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

Aggiunge un nuovo accesso all'ACL denominata. L'identità deve disporre dell'accesso UPDATE all'ACL denominata.

Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

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

Rimuove l'accesso dall'ACL. L'identità deve disporre dell'accesso UPDATE all'ACL denominata.

Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

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

Aggiorna la descrizione.

L'identità deve disporre dell'accesso UPDATE all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

AddBeforeACL(aclName string, beforeName string, newBindACL string, identity *X509Certificate) (error)

Aggiunge un'ACL di autenticazione prima dell'ACL denominata esistente. Se l'ACL denominata è vuota o non viene trovata, l'ACL viene aggiunta all'inizio della lista ACL di autenticazione.

L'identità deve disporre dell'accesso UPDATE all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

AddAfterACL(aclName string, afterName string, newBindACL string, identity *X509Certificate) (error)

Aggiunge un'ACL di associazione dopo l'ACL denominata esistente. Se l'ACL denominata è vuota o non viene trovata, l'ACL viene aggiunta alla fine della lista ACL di autenticazione.

L'identità deve disporre dell'accesso UPDATE all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

RemoveBindACL(aclName string, removeName string, identity *X509Certificate) (error)

Rimuove l'ACL removeName dall'elenco di ACL di autenticazione.

L'identità deve disporre dell'accesso UPDATE all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

GetAll(identity *x509.Certificate) ([]ACL, error)

Ottenere tutte le ACL.

L'identità deve avere accesso in Lettura all'ACL denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in newACLManager().

Funzioni del gruppo

Definizione della struttura Group:
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.
}

Definizione delle funzioni GroupManager:

Funzione Descrizione
Create(group Group, identity *x509.Certificate) (error)

Crea un gruppo.

L'identità deve disporre dell'accesso CREATE al gruppo bootstrap .Group. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

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

Ottiene un gruppo specificato.

L'identità deve disporre dell'accesso in lettura a questo gruppo. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

Delete(groupName string, identity *x509.Certificate) (error)

Elimina un gruppo specificato.

L'identità deve disporre dell'accesso DELETE a questo gruppo. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

AddMembers(groupName string, member []string, identity *x509.Certificate) (error)

Aggiunge uno o più membri al gruppo.

L'identità deve disporre dell'accesso UPDATE a questo gruppo. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

RemoveMembers(groupName string, member []string, identity *x509.Certificate) (error)

Rimuove uno o più membri da un gruppo.

L'identità deve disporre dell'accesso UPDATE a questo gruppo. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

UpdateDescription(groupName string, newDes string, identity *x509.Certificate) (error)

Aggiorna la descrizione.

L'identità deve disporre dell'accesso UPDATE a questo gruppo. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

AddBeforeACL(groupName string, beforeName string, aclName string, identity *x509.Certificate) (error)

Aggiunge un'ACL di bind al gruppo prima dell'ACL esistente denominata. Se l'ACL denominata è vuota o non trovata, l'ACL viene aggiunta all'inizio della lista di ACL di autenticazione per la risorsa.

L'identità deve disporre dell'accesso UPDATE al gruppo denominato. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

AddAfterACL(groupName string, afterName string, aclName string, identity *x509.Certificate) (error)

Aggiunge un'ACL di associazione al gruppo dopo l'ACL denominata esistente. Se l'ACL specificata è vuota o non viene trovata, l'ACL viene aggiunta alla fine della lista di ACL di bind per il gruppo.

L'identità deve disporre dell'accesso UPDATE al gruppo denominato. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

RemoveBindACL(groupName string, aclName string, identity *x509.Certificate) (error)

Rimuove l'ACL denominata dalla lista ACL di autenticazione del gruppo denominato.

L'identità deve disporre dell'accesso UPDATE al gruppo denominato. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

GetAll(identity *x509.Certificate) ([]Group, error)

Recupera tutti i gruppi.

L'identità deve avere accesso in lettura a questi gruppi. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewGroupManager().

Funzioni risorsa

Definizione della struttura Resource:
type Resource struct {
     Name string
     Description string
     BindACLs []string      // The name list of ACL, controls who can access this resource
}

Funzioni risorsa:

Fuzione Descrizione
Create(resource Resource, identity *x509.Certificate) (error)

Crea una risorsa. Le risorse denominate duplicate non sono consentite.

L'identità deve disporre dell'accesso CREATE alla risorsa bootstrap .Resources. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

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

Recupera una risorsa specificata.

L'identità deve disporre dell'accesso in lettura alla risorsa. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

Delete(resName string, identity *x509.Certificate) (error)

Elimina una risorsa denominata.

L'identità deve disporre dell'accesso ELIMINATO alla risorsa denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

UpdateDescription(resourceName string, newDes string, identity *x509.Certificate) (error)

Aggiorna la descrizione.

L'identità deve disporre dell'accesso UPDATE a questa risorsa. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

AddBeforeACL(resourceName string, beforeName string, aclName string, identity *x509.Certificate) (error)

Aggiunge un'ACL di associazione alla risorsa prima dell'ACL denominata esistente. Se l'ACL denominata è vuota o non viene trovata, l'ACL viene aggiunta all'inizio della lista di ACL di autenticazione per la risorsa.

L'identità deve disporre dell'accesso UPDATE alla risorsa denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

AddAfterACL(resourceName string, afterName string, aclName string, identity *x509.Certificate) (error)

Aggiunge un'ACL di associazione alla risorsa dopo l'ACL denominata esistente. Se l'ACL denominata è vuota o non viene trovata, l'ACL viene aggiunta alla fine della lista di ACL di autenticazione per la risorsa.

L'identità deve disporre dell'accesso UPDATE alla risorsa denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

RemoveBindACL(resourceName string, aclName string, identity *x509.Certificate) (error)

Rimuove l'ACL denominata dalla lista ACL di autenticazione della risorsa denominata.

L'identità deve disporre dell'accesso UPDATE alla risorsa denominata. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

CheckAccess(resName string, access string, identity *x509.Certificate) (bool, error)

Verifica se l'utente corrente dispone dell'accesso specificato alla risorsa denominata.

Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().

GetAll(identity *x509.Certificate) ([]Resource, error)

Recupera tutte le risorse.

L'identità deve disporre dell'accesso in lettura a queste risorse. Se l'identità è nulla, viene utilizzata l'identità predefinita specificata in NewResourceManager().