B Utilisation de la bibliothèque de contrôles d'accès de niveau fin incluse dans l'exemple de billes

À partir de la version 1.2, Hyperledger Fabric a fourni un contrôle d'accès détaillé à de nombreuses fonctions de gestion. Oracle Blockchain Platform fournit un exemple de paquetage de billes dans l'onglet Outils de développement de la console, mettant en oeuvre une bibliothèque de fonctions que les développeurs de code de chaîne peuvent utiliser pour créer des listes de contrôle d'accès pour des fonctions de chaîne. Il ne prend actuellement en charge que la langue Go.

Contexte

L'objectif de cet exemple de bibliothèque de contrôle d'accès est de fournir les éléments suivants :

  • Fournit un mécanisme qui vous permet de contrôler les utilisateurs pouvant accéder à des fonctions de code de chaîne particulières.
  • La liste des utilisateurs et de leurs droits doit être dynamique et partagée entre les codes de chaîne.
  • Permet de vérifier le contrôle d'accès afin qu'un code de chaîne puisse vérifier facilement la liste de contrôle d'accès.
  • Au moment du déploiement du code de chaîne, il est possible d'alimenter la liste des ressources et des listes de contrôle d'accès avec vos membres initiaux.
  • Une liste de contrôle d'accès doit être fournie pour autoriser les utilisateurs à effectuer des opérations de liste de contrôle d'accès.

Télécharger l'exemple

Dans l'onglet Outils pour développeurs, ouvrez le volet Exemples. Cliquez sur le lien de téléchargement sous Marbres avec listes de contrôle d'accès détaillées. Ce package contient trois sous-ensembles :
  • Fine-GrainedAccessControlLibrary.zip:

    Bibliothèque de contrôle d'accès finalisé. Il contient des fonctions en Go qui peuvent être utilisées par les développeurs de code de chaîne pour créer des listes de contrôle d'accès pour les fonctions de code de chaîne.

  • fgACL_MarbleSampleCC.zip:

    Exemple de billes avec listes de contrôle d'accès mises en oeuvre. Il comprend une variété de fonctions pour vous permettre d'examiner comment utiliser des listes de contrôle d'accès détaillées, des groupes et des ressources pour restreindre les fonctions à certains utilisateurs/identités.

  • fgACL-NodeJSCode.zip:

    Scripts Node.js qui utilisent la trousse SDK Node.js pour exécuter l'exemple. registerEnrollUser.js peut être utilisé pour enregistrer de nouveaux utilisateurs dans Blockchain Platform. invokeQueryCC.js peut être utilisé pour exécuter des transactions sur une instance Blockchain Platform.

Terminologie et acronymes

Terme Description
Identités Certificat X509 représentant l'identité de l'appelant ou de l'identité spécifique que le code de chaîne veut vérifier.
Modèle d'identité

Modèle correspondant à une ou plusieurs identités. Les modèles suivants sont suggérés :

  • Nom commun de l'objet X.509 - CN
  • X.509 Unité organisationnelle - Unité organisationnelle
  • X.509 Organisation assujettie - O
  • Groupe tel que défini dans cette bibliothèque - GRP
  • Attribut - ATTR

Le format d'un modèle est essentiellement une chaîne avec un préfixe. Par exemple, pour définir un modèle correspondant à n'importe quelle identité dans l'organisation "example.com", le modèle serait "%O%example.com".

Ressources Nom de tout ce que le code de chaîne veut contrôler l'accès. Pour cette bibliothèque, il s'agit simplement d'une chaîne arbitraire nommée contenue dans un espace de noms plat. La sémantique du nom est entièrement à la hauteur du code de chaîne.
Groupe Groupe de modèles d'identité.
Liste de contrôle d'accès Liste de contrôle d'accès : entité nommée ayant une liste de modèles d'identité, une liste de types d'accès tels que "READ", "CREATE", "INVOKE", "FORWARD" ou tout ce que le code de chaîne souhaite utiliser. Cette bibliothèque utilisera les types d'accès CREATE, READ, UPDATE et DELETE (opérations CRUD standard) pour mettre à jour ses informations. En dehors de ces quatre comme ils se rapportent aux éléments de cette bibliothèque, ils ne sont que des chaînes sans sémantique implicite. Une application peut décider d'utiliser les accès de "A", "B" et "CUSTOM".