Funções da Biblioteca de Controle de Acesso Refinadas

O pacote de bibliotecas fornece as seguintes funções para recursos, grupos e ACLs, bem como funções globais.

Funções Globais

Função Descrição
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

Quando o chaincode é implantado, a função Initialization é chamada. Essa função inicializa o estado mundial com algumas listas de controle de acesso incorporadas. Essas listas incorporadas são usadas para inicializar o ambiente. Deve haver controle de acesso sobre quem pode criar recursos, grupos e ACLs. Se a identidade for nula, a função usará a identidade do chamador.

Depois que o processo de bootstrap é concluído, as seguintes entidades são criadas:

  • Um recurso chamado .Resources. Uma ACL correspondente chamada .Resources.ACL será criada com um único padrão de identidade no formato "%CN%bob.smith@oracle.com", usando o nome comum real, e o acesso será CREATE, READ, UPDATE e DELETE.
  • Um grupo chamado .Groups. Uma ACL correspondente chamada .Groups.ACL será criada com um único padrão de identidade no formato "%CN%bob.smith@oracle.com", usando o nome comum real, e o acesso será CREATE, READ, UPDATE e DELETE.
  • Uma ACL chamada .ACLs. Uma lista de controle da ACL correspondente chamada .ACLs.ACL será criada com um único padrão de identidade no formato "%CN%bob.smith@oracle.com", usando o nome comum real, e o acesso será CREATE, READ, UPDATE e DELETE.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

Obtém o gerente do grupo que é usado para todas as operações relacionadas ao grupo.

Identidade: a identidade padrão para a operação relacionada. Se for nulo, então a função usa a identidade do chamador.

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

Obtém o gerenciador de ACL que é usado para todas as operações relacionadas à ACL.

Identidade: a identidade padrão para a operação relacionada. Se for nulo, então a função usa a identidade do chamador.

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

Obtém o gerenciador de recursos que é usado para todas as operações relacionadas ao recurso.

Identidade: a identidade padrão para a operação relacionada. Se for nulo, então a função usa a identidade do chamador.

Funções da Lista de Controle de Acesso (ACL, Access Control List)

Definição da estrutura 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
}
  • Acessos: A string Acessos é uma lista de nomes de acesso arbitrário separados por vírgulas e é totalmente compatível com o aplicativo, exceto para quatro: CREATE, READ, UPDATE e DELETE. Esses valores de acesso são usados para manter o controle de acesso detalhado. Os aplicativos podem usar suas próprias strings de acesso, como "register", "invoke" ou "query", ou até mesmo coisas como acesso a nomes de campo, como "owner", "quantity" e assim por diante.
  • Permitido: Permitido determina se as identidades que correspondem a um padrão têm acesso permitido (verdadeiro) ou acesso proibido (falso). Você pode ter uma lista de controle de acesso que indique que Bob tem acesso a "CREATE" e outra que indique que o grupo Oracle (do qual Bob é membro) está proibido de "CREATE". Se Bob tem ou não acesso depende da ordem das listas de controle de acesso associadas à entidade em questão.
  • BindACLs: O parâmetro BindACLs forma a lista de controle de acesso inicial.

Funções ACL:

Função Descrição
Create(acl ACL, identity *x509.Certificate) (error)

Cria uma ACL. Não são permitidas ACLs nomeadas duplicadas.

Para criar uma ACL, a identidade deve ter acesso CREATE ao recurso de bootstrap chamado ". ACLs". Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Obtém uma ACL nomeada.

A identidade deve ter acesso READ à ACL nomeada. Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Exclui uma ACL especificada.

A identidade deve ter acesso DELETE à ACL nomeada. Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Atualiza uma ACL.

A identidade deve ter acesso UPDATE ao recurso nomeado, e a ACL nomeada deve existir. Se a identidade for nula, a identidade padrão especificada em NewACLManager() será usada.

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

Adiciona um novo padrão de identidade à ACL nomeada. A identidade deve ter acesso UPDATE à ACL nomeada.

Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Remove o padrão de identidade da ACL. A identidade deve ter acesso UPDATE à ACL nomeada.

Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Adiciona um novo acesso à ACL nomeada. A identidade deve ter acesso UPDATE à ACL nomeada.

Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Remove o acesso da ACL. A identidade deve ter acesso UPDATE à ACL nomeada.

Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Atualiza a descrição.

A identidade deve ter acesso UPDATE à ACL nomeada. Se a identidade for nula, a identidade padrão especificada em newACLManager() será usada.

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

Adiciona uma ACL de bind antes da ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao início da lista de ACLs de conexão.

A identidade deve ter acesso UPDATE à ACL nomeada. Se a identidade for nula, a identidade padrão especificada no newACLManager() será usada.

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

Adiciona uma ACL de bind após a ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao final da lista de ACLs de bind.

A identidade deve ter acesso UPDATE à ACL nomeada. Se a identidade for nula, a identidade padrão especificada no newACLManager() será usada.

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

Remove a ACL removeName da lista ACL de bind.

A identidade deve ter acesso UPDATE à ACL nomeada. Se a identidade for nula, a identidade padrão especificada no newACLManager() será usada.

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

Obtenha todas as ACLs.

A identidade deve ter acesso READ à ACL nomeada. Se a identidade for nula, a identidade padrão especificada no newACLManager() será usada.

Funções do Grupo

Definição da estrutura 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.
}

Definição de funções GroupManager:

Função Descrição
Create(group Group, identity *x509.Certificate) (error)

Cria um grupo.

A identidade deve ter acesso CREATE ao grupo de bootstrap .Group. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Obtém um grupo especificado.

A identidade deve ter acesso READ a este grupo. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Exclui um grupo especificado.

A identidade deve ter acesso DELETE a este grupo. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Adiciona um ou mais membros ao grupo.

A identidade deve ter acesso de ATUALIZAÇÃO a este grupo. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Remove um ou mais membros de um grupo.

A identidade deve ter acesso de ATUALIZAÇÃO a este grupo. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Atualiza a descrição.

A identidade deve ter acesso de ATUALIZAÇÃO a este grupo. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Adiciona uma ACL de bind ao grupo antes da ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao início da lista de ACL de bind para o recurso.

A identidade deve ter acesso de ATUALIZAÇÃO ao grupo nomeado. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

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

Adiciona uma ACL de bind ao grupo após a ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao final da lista de ACLs de bind para o grupo.

A identidade deve ter acesso de ATUALIZAÇÃO ao grupo nomeado. Se a identidade for nula, a identidade padrão especificada no NewGroupManager() será usada.

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

Remove a ACL nomeada da lista de ACLs de conexão do grupo nomeado.

A identidade deve ter acesso de ATUALIZAÇÃO ao grupo nomeado. Se a identidade for nula, a identidade padrão especificada no NewGroupManager() será usada.

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

Obtém todos os grupos.

A identidade deve ter acesso READ a esses grupos. Se a identidade for nula, a identidade padrão especificada em NewGroupManager() será usada.

Funções de Recursos

Definição da estrutura Resource:
type Resource struct {
     Name string
     Description string
     BindACLs []string      // The name list of ACL, controls who can access this resource
}

Funções de Recursos:

Fusão Descrição
Create(resource Resource, identity *x509.Certificate) (error)

Cria um recurso. Recursos nomeados duplicados não são permitidos.

A identidade deve ter acesso CREATE ao recurso de bootstrap .Resources. Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Obtém um recurso especificado.

A identidade deve ter acesso READ ao recurso. Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Exclui um recurso nomeado.

A identidade deve ter acesso DELETE ao recurso nomeado. Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Atualiza a descrição.

A identidade deve ter acesso de ATUALIZAÇÃO a este recurso. Se a identidade for nula, a identidade padrão especificada em NewResourceManager() será usada.

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

Adiciona uma ACL de bind ao recurso antes da ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao início da lista de ACL de bind do recurso.

A identidade deve ter acesso de ATUALIZAÇÃO ao recurso nomeado. Se a identidade for nula, a identidade padrão especificada em NewResourceManager() será usada.

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

Adiciona uma ACL de bind ao recurso após a ACL nomeada existente. Se a ACL nomeada estiver vazia ou não for encontrada, a ACL será adicionada ao final da lista de ACL de bind do recurso.

A identidade deve ter acesso de ATUALIZAÇÃO ao recurso nomeado. Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Remove a ACL nomeada da lista de ACLs de ligação do recurso nomeado.

A identidade deve ter acesso de ATUALIZAÇÃO ao recurso nomeado. Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Verifica se o usuário atual tem o acesso especificado ao recurso nomeado.

Se a identidade for nula, a identidade padrão especificada no NewResourceManager() será usada.

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

Obtém todos os recursos.

A identidade deve ter acesso de LEITURA a esses recursos. Se a identidade for nula, a identidade padrão especificada em NewResourceManager() será usada.