Fonctions de bibliothèque de contrôle d'accès détaillé

Le package de bibliothèque fournit les fonctions suivantes pour les ressources, les groupes et les listes de contrôle d'accès, ainsi que les fonctions globales.

Fonctions globales

Fonction Description
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

Lorsque le code chaîne est déployé, la fonction Initialization est appelée. Cette fonction initialise l'état du monde avec des listes de contrôle d'accès intégrées. Ces listes intégrées permettent d'initialiser l'environnement. Il doit y avoir un contrôle d'accès sur qui peut créer des ressources, des groupes et des listes de contrôle d'accès. Si l'identité est nulle, la fonction utilise l'identité de l'appelant.

Une fois le processus d'initialisation terminé, les entités suivantes sont créées :

  • Ressource nommée .Resources. Une liste de contrôle d'accès correspondante nommée .Resources.ACL sera créée avec un modèle d'identité unique au format "%CN%bob.smith@oracle.com", à l'aide du nom commun réel, et l'accès sera CREATE, READ, UPDATE et DELETE.
  • Groupe nommé .Groups. Une liste de contrôle d'accès correspondante nommée .Groups.ACL sera créée avec un modèle d'identité unique au format "%CN%bob.smith@oracle.com", à l'aide du nom commun réel, et l'accès sera CREATE, READ, UPDATE et DELETE.
  • Une liste de contrôle d'accès nommée .ACLs. Une liste de contrôle d'ACL correspondante nommée .ACLs.ACL sera créée avec un modèle d'identité unique au format "%CN%bob.smith@oracle.com", à l'aide du nom commun réel, et l'accès sera CREATE, READ, UPDATE et DELETE.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

Obtient le gestionnaire de groupe utilisé pour toutes les opérations liées aux groupes.

Identité : identité par défaut pour l'opération associée. Si elle est nulle, la fonction utilise l'identité de l'appelant.

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

Obtient le gestionnaire d'ACL utilisé pour toutes les opérations liées à l'ACL.

Identité : identité par défaut pour l'opération associée. Si elle est nulle, la fonction utilise l'identité de l'appelant.

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

Obtient le gestionnaire de ressources utilisé pour toutes les opérations liées aux ressources.

Identité : identité par défaut pour l'opération associée. Si elle est nulle, la fonction utilise l'identité de l'appelant.

Fonctions de liste de contrôle d'accès (ACL)

Définition de la structure 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
}
  • Accès : la chaîne Accès est une liste de noms d'accès arbitraires séparés par des virgules et dépend entièrement de l'application, à l'exception de quatre : CREATE, READ, UPDATE et DELETE. Ces valeurs d'accès sont utilisées pour gérer le contrôle d'accès de niveau fin. Les applications peuvent utiliser leurs propres chaînes d'accès telles que "register", "invoke" ou "query", ou même des éléments tels que l'accès aux noms de champ tels que "owner", "quantity", etc.
  • Autorisé : autorisé détermine si les identités qui correspondent à un modèle sont autorisées à accéder (vrai) ou interdites (faux). Vous pouvez disposer d'une liste de contrôle d'accès indiquant que Bob a accès à "CREATE" et d'une autre indiquant que le groupe Oracle (dont Bob est membre) est interdit à partir de "CREATE". L'accès de Bob dépend de l'ordre des listes de contrôle d'accès associées à l'entité en question.
  • BindACLs : le paramètre BindACLs forme la liste de contrôle d'accès initiale.

Fonctions ACL :

Fonction Description
Create(acl ACL, identity *x509.Certificate) (error)

Crée une liste de contrôle d'accès. Les listes de contrôle d'accès nommées en double ne sont pas autorisées.

Pour créer une ACL, l'identité doit avoir un accès CREATE à la ressource bootstrap nommée ". ACL". Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Obtient une liste de contrôle d'accès nommée.

L'identité doit disposer d'un accès en lecture à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Supprime une liste de contrôle d'accès spécifiée.

L'identité doit disposer d'un accès DELETE à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Met à jour une ACL.

L'identité doit avoir un accès UPDATE à la ressource nommée et l'ACL nommée doit exister. Si l'identité est nulle, l'identité par défaut indiquée dans NewACLManager() est utilisée.

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

Ajoute un nouveau modèle d'identité à l'ACL nommée. L'identité doit disposer de l'accès UPDATE à l'ACL nommée.

Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Supprime le modèle d'identité de l'ACL. L'identité doit disposer de l'accès UPDATE à l'ACL nommée.

Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Ajoute un nouvel accès à l'ACL nommée. L'identité doit disposer de l'accès UPDATE à l'ACL nommée.

Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Supprime l'accès de l'ACL. L'identité doit disposer de l'accès UPDATE à l'ACL nommée.

Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Met à jour la description.

L'identité doit disposer d'un accès UPDATE à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Ajoute une ACL attachée avant l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée au début de la liste d'ACL de liaison.

L'identité doit disposer d'un accès UPDATE à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Ajoute une ACL attachée après l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée à la fin de la liste d'ACL de liaison.

L'identité doit disposer d'un accès UPDATE à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Supprime l'ACL removeName de la liste d'ACL de liaison.

L'identité doit disposer d'un accès UPDATE à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

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

Obtenez toutes les ACL.

L'identité doit disposer d'un accès en lecture à l'ACL nommée. Si l'identité est nulle, l'identité par défaut indiquée dans newACLManager() est utilisée.

Fonctions de groupe

Définition de la structure 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.
}

Définition des fonctions GroupManager :

Fonction Description
Create(group Group, identity *x509.Certificate) (error)

Crée un groupe.

L'identité doit disposer d'un accès CREATE au groupe d'amorçage .Group. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Obtient un groupe spécifié.

L'identité doit disposer de l'accès READ à ce groupe. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Supprime un groupe spécifié.

L'identité doit avoir un accès DELETE à ce groupe. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Ajoute un ou plusieurs membres au groupe.

L'identité doit avoir un accès UPDATE à ce groupe. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Supprime un ou plusieurs membres d'un groupe.

L'identité doit avoir un accès UPDATE à ce groupe. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Met à jour la description.

L'identité doit avoir un accès UPDATE à ce groupe. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Ajoute une ACL attachée au groupe avant l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée au début de la liste d'ACL de liaison pour la ressource.

L'identité doit disposer d'un accès UPDATE au groupe nommé. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Ajoute une ACL attachée au groupe après l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée à la fin de la liste des ACL attachées pour le groupe.

L'identité doit disposer d'un accès UPDATE au groupe nommé. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Supprime l'ACL nommée de la liste d'ACL attachée du groupe nommé.

L'identité doit disposer d'un accès UPDATE au groupe nommé. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

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

Obtient tous les groupes.

L'identité doit avoir un accès en lecture à ces groupes. Si l'identité est nulle, l'identité par défaut indiquée dans NewGroupManager() est utilisée.

Fonctions de ressource

Définition de la structure Resource :
type Resource struct {
     Name string
     Description string
     BindACLs []string      // The name list of ACL, controls who can access this resource
}

Fonctions de ressource :

Fuite Description
Create(resource Resource, identity *x509.Certificate) (error)

Crée une ressource. Les ressources nommées en double ne sont pas autorisées.

L'identité doit disposer d'un accès CREATE à la ressource d'initialisation .Resources. Si l'identité est NULL, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Obtient une ressource spécifiée.

L'identité doit disposer d'un accès en lecture à la ressource. Si l'identité est NULL, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Supprime une ressource nommée.

L'identité doit avoir un accès DELETE à la ressource nommée. Si l'identité est NULL, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Met à jour la description.

L'identité doit avoir un accès UPDATE à cette ressource. Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Ajoute une ACL de liaison à la ressource avant l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée au début de la liste d'ACL de liaison de la ressource.

L'identité doit disposer d'un accès UPDATE à la ressource nommée. Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Ajoute une ACL de liaison à la ressource après l'ACL nommée existante. Si l'ACL nommée est vide ou introuvable, l'ACL est ajoutée à la fin de la liste d'ACL de liaison pour la ressource.

L'identité doit disposer d'un accès UPDATE à la ressource nommée. Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Supprime l'ACL nommée de la liste d'ACL attachée de la ressource nommée.

L'identité doit disposer d'un accès UPDATE à la ressource nommée. Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Vérifie si l'utilisateur en cours dispose de l'accès spécifié à la ressource nommée.

Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.

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

Obtient toutes les ressources.

L'identité doit disposer d'un accès en lecture à ces ressources. Si l'identité est nulle, l'identité par défaut indiquée dans NewResourceManager() est utilisée.