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

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 pour les fonctions globales.

Fonctions globales

Fonction Description
Initialisation (identité *x509). Certificat, talon shim.ChaincodeStubInterface) (erreur) (erreur)

Lorsque le code de chaîne est instancié, la fonction d'initialisation est appelée. Cette fonction initialisera l'état du monde avec certaines listes de contrôle d'accès intégrées. Ces listes intégrées sont utilisées pour amorcer l'environnement. Il doit donc 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'identification est nulle, utilisez l'identification de l'appelant.

Une fois l'amorçage terminé, les entités suivantes sont créées :

  • Une ressource nommée ". Ressources ". Une liste de contrôle d'accès correspondante nommée ". Resources.ACL" sera créé avec un seul modèle d'identité dans le formulaire "%CN%bob.smith@oracle.com", à l'aide du nom commun réel, et l'accès sera CREATE, READ, UPDATE et DELETE.
  • Un groupe nommé ". Groupes ". Une liste de contrôle d'accès correspondante nommée ". Groups.ACL" sera créé avec un seul modèle d'identité dans le formulaire "%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 ". listes de contrôle d'accès; Une liste de contrôle ACL correspondante nommée ". ACLs.ACL" sera créé avec un seul modèle d'identité dans le formulaire "%CN%bob.smith@oracle.com", à l'aide du nom commun réel, et l'accès sera CREATE, READ, UPDATE et DELETE.
NewGroupManager(identité *x509. Certificat, talon shim.ChaincodeStubInterface) (*GroupManager, erreur)

Obtenir le gestionnaire de groupe utilisé pour toutes les opérations liées au groupe.

Identité : Identité par défaut de l'opération associée. S'il est vide, utilisez l'identité de l'appelant.

NewACLManager(identité *x509. Certificat, talon shim.ChaincodeStubInterface) (*ACLManager, erreur)

Obtenez le gestionnaire de liste de contrôle d'accès utilisé pour toutes les opérations liées à une liste de contrôle d'accès.

Identité : Identité par défaut de l'opération associée. S'il est vide, utilisez l'identité de l'appelant.

NewResourceManager(identité *x509. Certificat, talon shim.ChaincodeStubInterface) (*ResourceManager, erreur)

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

Identité : Identité par défaut de l'opération associée. S'il est vide, utilisez 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 entièrement jusqu'à 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é : Permet de déterminer si les identités qui correspondent à un modèle sont autorisées à accéder (vrai) ou à accéder (faux). Vous pourriez avoir une liste de contrôle d'accès qui indique que Bob a accès à "CREATE", et une autre qui indique le groupe Oracle (dont Bob est membre) est interdite à "CREATE". Le fait que Bob ait accès ou non dépend de l'ordre des listes de contrôle d'accès associées à l'entité en question.
  • BindACLs : Le paramètre BindACLs formera la liste de contrôle d'accès initiale.

Fonctions de liste de contrôle d'accès :

Fonction Description
Create(ACL ACL, identity *x509. Certificat) (erreur)

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

Pour créer une liste de contrôle d'accès, l'identité doit avoir l'accès CREATE à la ressource bootstrap nommée ". listes de contrôle d'accès; Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

Get(chaîne aclName, identité *x509. Certificat) (ACL, erreur)

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

L'identité doit avoir l'accès READ à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

Delete(aclName string, identity *x509. Certificat) (erreur)

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

L'identité doit avoir un accès DELETE à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

Update(ACL ACL, identité *x509. Certificat) (erreur)

Mettre à jour une liste de contrôle d'accès.

L'identité doit avoir un accès UPDATE à la ressource nommée et la liste de contrôle d'accès nommée doit exister. Si l'identité est nulle, l'identité par défaut spécifiée dans NewACLManager() est utilisée.

AddPattern(Chaîne aclName, chaîne de modèle, identité *x509. Certificat) (erreur)

Ajoute un nouveau modèle d'identité à la liste de contrôle d'accès nommée. L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée.

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

RemovePattern(Chaîne aclName, chaîne de modèle, identité *X509Certificate) (erreur)

Supprime le modèle d'identité de la liste de contrôle d'accès. L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée.

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

AddAccess(chaîne aclname, chaîne d'accès, identité *X509Certificate) (erreur)

Ajoute un nouvel accès à la liste de contrôle d'accès nommée. L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée.

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

RemoveAccess(Chaîne aclName, chaîne d'accès, identité *X509Certificate) (erreur)

Supprime l'accès de la liste de contrôle d'accès. L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée.

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

UpdateDescription(chaîne aclName, chaîne newDescription, identité *X509Certificate) (erreur)

Mettez à jour la description.

L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

AddBeforeACL(chaîne aclName, chaîne beforeName, chaîne newBindACL, identité *X509Certificate) (erreur)

Ajoute une liste de contrôle d'accès de liaison avant la liste de contrôle d'accès nommée existante. Si la liste de contrôle d'accès nommée est vide ou introuvable, elle est ajoutée au début de la liste de contrôle d'accès de liaison.

L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

AddAfterACL(chaîne aclName, chaîne afterName, chaîne newBindACL, identité *X509Certificate) (erreur)

Ajoute une liste de contrôle d'accès de liaison après la liste de contrôle d'accès nommée existante. Si la liste de contrôle d'accès nommée est vide ou introuvable, elle est ajoutée à la fin de la liste de contrôle d'accès de liaison.

L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

RemoveBindACL(chaîne aclName, chaîne removeName, identité *X509Certificate) (erreur)

Supprime la liste de contrôle d'accès removeName de la liste de contrôle d'accès de liaison.

L'identité doit avoir un accès UPDATE à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifiée dans newACLManager() est utilisée.

GetAll(identité *x509. Certificat) ([]ACL, erreur)

Obtenez toutes les listes de contrôle d'accès.

L'identité doit avoir l'accès READ à la liste de contrôle d'accès nommée. Si l'identité est nulle, l'identité par défaut spécifié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(Groupe de groupes, identité *x509. Certificat) (erreur)

Créer un groupe.

L'identité doit avoir l'accès CREATE au groupe d'amorçage ". Groupe ". Si l'identité est nulle, l'identité par défaut spécifiée dans NewGroupManager() est utilisée.

Get(chaîne groupName, identité *x509. Certificat) (Groupe, erreur)

Obtenir un groupe spécifié.

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

Delete(groupName string, identity *x509. Certificat) (erreur)

Supprimer un groupe spécifié.

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

AddMembers(chaîne groupName, membre []chaîne, identité *x509. Certificat) (erreur)

Ajoutez 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 spécifiée dans NewGroupManager () est utilisée.

RemoveMembers(chaîne groupName, membre []chaîne, identité *x509. Certificat) (erreur)

Supprimez 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 spécifiée dans NewGroupManager () est utilisée.

UpdateDescription(chaîne groupName, chaîne newDes, identité *x509. Certificat) (erreur)

Mettez à jour la description.

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

AddBeforeACL(chaîne groupName, chaîne beforeName, chaîne aclName, identité *x509. Certificat) (erreur)

Ajoute une liste de contrôle d'accès de liaison au groupe avant la liste de contrôle d'accès nommée existante. Si la liste de contrôle d'accès nommée est vide ou introuvable, la liste de contrôle d'accès est ajoutée au début de la liste de contrôle d'accès de liaison pour la ressource.

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

AddAfterACL(chaîne groupName, chaîne afterName, chaîne aclName, identité *x509. Certificat) (erreur)

Ajoute une liste de contrôle d'accès de liaison au groupe après la liste de contrôle d'accès nommée existante. Si la liste de contrôle d'accès nommée est vide ou introuvable, la liste de contrôle d'accès est ajoutée à la fin de la liste de contrôle d'accès de liaison pour le groupe.

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

RemoveBindACL(chaîne groupName, chaîne aclName, identité *x509. Certificat) (erreur)

Supprime la liste de contrôle d'accès nommée de la liste de contrôle d'accès de liaison du groupe nommé.

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

GetAll(identité *x509. Certificat) ([]Groupe, erreur)

Obtenir tous les groupes.

L'identité doit avoir l'accès READ à ces groupes. Si l'identité est nulle, l'identité par défaut spécifié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
Créer (ressource de ressource, identité *x509. Certificat) (erreur)

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

L'identité doit avoir l'accès CREATE à la ressource d'amorçage nommée ". Ressources" Si l'identité est nulle, l'identité par défaut spécifiée dans NewResourceManager() est utilisée.

Get(chaîne resName, identité *x509. Certificat) (Ressource, erreur)

Obtenir une ressource spécifiée.

L'identité doit avoir l'accès READ à la ressource. Si l'identité est nulle, l'identité par défaut spécifiée dans NewResourceManager() est utilisée.

Delete(resName string, identity *x509. Certificat) (erreur)

Supprimer une ressource nommée.

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

UpdateDescription(chaîne resourceName, chaîne newDes, identité *x509. Certificat) (erreur)

Mettez à jour la description.

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

AddBeforeACL(chaîne resourceName, chaîne beforeName, chaîne aclName, identité *x509. Certificat) (erreur)

Ajoute une liste de contrôle d'accès de liaison à la ressource avant la liste de contrôle d'accès nommée existante. Si la liste de contrôle d'accès nommée est vide ou introuvable, la liste de contrôle d'accès est ajoutée au début de la liste de contrôle d'accès de liaison pour la ressource.

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

AddAfterACL(chaîne resourceName, chaîne afterName, chaîne aclName, identité *x509. Certificat) (erreur)

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

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

RemoveBindACL(chaîne resourceName, chaîne aclName, identité *x509. Certificat) (erreur)

Supprime la liste de contrôle d'accès nommée de la liste de contrôle d'accès de liaison de la ressource nommée.

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

CheckAccess(Chaîne resName, chaîne d'accès, identité *x509. Certificat) (bool, erreur)

Vérifiez si l'utilisateur courant dispose de l'accès spécifié à la ressource nommée.

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

GetAll(identité *x509. Certificat) ([]Ressource, erreur)

Obtenez toutes les ressources.

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