B Usando a Biblioteca de Controle de Acesso Detalhada Incluída na Amostra de Mármores

A partir da v1.2, o Hyperledger Fabric forneceu um controle de acesso refinado para muitas das funções de gerenciamento. O Oracle Blockchain Platform fornece um pacote de amostra de mármores na guia Ferramentas do Desenvolvedor da console, implementando uma biblioteca de funções que os desenvolvedores de chaincode podem usar para criar listas de controle de acesso para funções de chaincode. Atualmente, ele só suporta o idioma Go.

Histórico

O objetivo dessa biblioteca de controle de acesso de amostra é fornecer o seguinte:

  • Fornece um mecanismo para permitir que você controle quais usuários podem acessar funções específicas de chaincode.
  • A lista de usuários e seus direitos deve ser dinâmica e compartilhada entre os códigos de cadeia.
  • Fornece verificações de controle de acesso para que um chaincode possa verificar facilmente a lista de controle de acesso.
  • No momento da implantação do chaincode, permite que você preencha a lista de recursos e listas de controle de acesso com seus membros iniciais.
  • Uma lista de controle de acesso deve ser fornecida para autorizar os usuários a executar operações da lista de controle de acesso.

Fazer Download da Amostra

Na guia Ferramentas do Desenvolvedor, abra o painel Amostras. Clique no link de download em Marbles com ACLs Detalhadas. Este pacote contém três subpacotes:
  • Fine-GrainedAccessControlLibrary.zip:

    A biblioteca refinada de controle de acesso. Ele contém funções em Go que podem ser usadas por desenvolvedores de chaincode para criar listas de controle de acesso para funções de chaincode.

  • fgACL_MarbleSampleCC.zip:

    A amostra de mármores com listas de controle de acesso implementadas. Ele inclui uma variedade de funções para permitir que você examine como trabalhar com listas, grupos e recursos de controle de acesso refinados a fim de restringir funções a determinados usuários/identidades.

  • fgACL-NodeJSCode.zip:

    Scripts Node.js que usam o SDK Node.js para executar a amostra. registerEnrollUser.js podem ser usados para registrar novos usuários na Plataforma Blockchain. invokeQueryCC.js podem ser usados para executar transações em uma instância da Plataforma Blockchain.

Terminologia e Acrônimos

Termo Descrição
Identidade Um certificado X509 que representa a identidade do chamador ou a identidade específica que o chaincode deseja verificar.
Padrão de Identidade

Um padrão que corresponde a uma ou mais identidades. Os padrões a seguir são sugeridos:

  • Nome Comum do Agente X.509 - CN
  • X.509 Unidade Organizacional Matéria - OU
  • X.509 Organização da Matéria - O
  • Grupo conforme definido nesta biblioteca - GRP
  • Atributo - ATTR

O formato de um padrão é essencialmente apenas uma string com um prefixo. Por exemplo, para definir um padrão que corresponda a qualquer identidade na organização "example.com", o padrão seria "%O%example.com".

Recurso O nome de tudo ao qual o chaincode deseja controlar o acesso. Para esta biblioteca, é apenas uma string arbitrária nomeada contida em um namespace plano. A semântica do nome é completamente até o chaincode.
Agrupar Um grupo de padrões de identidade.
ACL Lista de Controle de Acesso: uma entidade nomeada que tem uma lista de padrões de identidade, uma lista de tipos de acesso, como "READ", "CREATE", "INVOKE", "FORWARD" ou qualquer coisa que o chaincode queira usar. Essa biblioteca usará os tipos de acesso CREATE, READ, UPDATE e DELETE (operações CRUD padrão) para manter suas informações. Além desses quatro como eles se relacionam com os itens nesta biblioteca, eles são apenas cordas sem semântica implícita. Um aplicativo pode decidir usar acessos de "A", "B" e "CUSTOM".