Funciones de biblioteca de control de acceso detallado

El paquete de biblioteca proporciona las siguientes funciones para recursos, grupos y ACL, así como funciones globales.

Funciones Globales

Función Descripción
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

Al desplegar el código de cadena, se llama a la función Initialization. Esta función inicializa el estado del mundo con algunas listas de control de acceso incorporadas. Estas listas incorporadas se utilizan para inicializar el entorno. Debe haber control de acceso sobre quién puede crear recursos, grupos y ACL. Si la identidad es nula, la función utiliza la identidad del emisor de llamada.

Una vez realizado el proceso de inicialización de datos, se crean las siguientes entidades:

  • Un recurso denominado .Resources. Se creará una ACL correspondiente denominada .Resources.ACL con un único patrón de identidad con el formato "%CN%bob.smith@oracle.com", utilizando el nombre común real, y el acceso será CREATE, READ, UPDATE y DELETE.
  • Un grupo denominado .Groups. Se creará una ACL correspondiente denominada .Groups.ACL con un único patrón de identidad con el formato "%CN%bob.smith@oracle.com", utilizando el nombre común real, y el acceso será CREATE, READ, UPDATE y DELETE.
  • Una ACL denominada .ACLs. Se creará una lista de control de ACL correspondiente denominada .ACLs.ACL con un único patrón de identidad con el formato "%CN%bob.smith@oracle.com", utilizando el nombre común real, y el acceso será CREATE, READ, UPDATE y DELETE.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

Obtiene el gestor de grupos que se utiliza para todas las operaciones relacionadas con grupos.

Identidad: la identidad por defecto para la operación relacionada. Si es nulo, entonces la función utiliza la identidad del emisor de llamada.

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

Obtiene el gestor de ACL que se utiliza para todas las operaciones relacionadas con ACL.

Identidad: la identidad por defecto para la operación relacionada. Si es nulo, entonces la función utiliza la identidad del emisor de llamada.

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

Obtiene el gestor de recursos que se utiliza para todas las operaciones relacionadas con los recursos.

Identidad: la identidad por defecto para la operación relacionada. Si es nulo, entonces la función utiliza la identidad del emisor de llamada.

Funciones de la lista de control de acceso (ACL)

Definición de la estructura 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
}
  • Accesos: la cadena Accesses es una lista de nombres de acceso arbitrarios separados por comas y depende completamente de la aplicación, excepto por cuatro: CREATE, READ, UPDATE y DELETE. Estos valores de acceso se utilizan para mantener el control de acceso detallado. Las aplicaciones pueden utilizar sus propias cadenas de acceso, como "register", "invoke" o "query", o incluso elementos como el acceso a nombres de campo, como "owner", "quantity", etc.
  • Permitido: permite determinar si las identidades que coinciden con un patrón tienen acceso permitido (verdadero) o acceso prohibido (falso). Puede tener una lista de control de acceso que indique que Bob tiene acceso a "CREATE" y otra que indique que el grupo Oracle (del que Bob es miembro) no puede acceder a "CREATE". El hecho de que Bob tenga o no acceso depende del orden de las listas de control de acceso que están asociadas a la entidad en cuestión.
  • BindACLs: el parámetro BindACLs forma la lista de control de acceso inicial.

Funciones de ACL:

Función Descripción
Create(acl ACL, identity *x509.Certificate) (error)

Crea una ACL. No se permiten ACL con nombre duplicadas.

Para crear una ACL, la identidad debe tener acceso CREATE al recurso de inicialización de datos denominado ". ACL". Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Obtiene una ACL con nombre.

La identidad debe tener acceso READ a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Suprime una ACL especificada.

La identidad debe tener acceso DELETE a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Actualiza una ACL.

La identidad debe tener acceso UPDATE al recurso con nombre y la ACL con nombre debe existir. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewACLManager().

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

Agrega un nuevo patrón de identidad a la ACL con nombre. La identidad debe tener acceso UPDATE a la ACL con nombre.

Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager() .

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

Elimina el patrón de identidad de la ACL. La identidad debe tener acceso UPDATE a la ACL con nombre.

Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Agrega un nuevo acceso a la ACL con nombre. La identidad debe tener acceso UPDATE a la ACL con nombre.

Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Elimina el acceso de la ACL. La identidad debe tener acceso UPDATE a la ACL con nombre.

Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Actualiza la descripción.

La identidad debe tener acceso UPDATE a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Agrega una ACL de enlace antes de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al principio de la lista de ACL de enlace.

La identidad debe tener acceso UPDATE a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Agrega una ACL de enlace después de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al final de la lista de ACL de enlace.

La identidad debe tener acceso UPDATE a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Elimina la ACL removeName de la lista de ACL de enlace.

La identidad debe tener acceso UPDATE a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

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

Obtenga todas las ACL.

La identidad debe tener acceso READ a la ACL con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en newACLManager().

Funciones de Grupo

Definición de la estructura 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.
}

Definición de funciones GroupManager:

Función Descripción
Create(group Group, identity *x509.Certificate) (error)

Crea un grupo.

La identidad debe tener acceso CREATE al grupo de inicialización de datos .Group. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Obtiene un grupo especificado.

La identidad debe tener acceso READ a este grupo. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Suprime un grupo especificado.

La identidad debe tener acceso DELETE a este grupo. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Agrega uno o más miembros al grupo.

La identidad debe tener acceso UPDATE a este grupo. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Elimina uno o más miembros de un grupo.

La identidad debe tener acceso UPDATE a este grupo. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Actualiza la descripción.

La identidad debe tener acceso UPDATE a este grupo. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Agrega una ACL de enlace al grupo antes de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al principio de la lista de ACL de enlace para el recurso.

La identidad debe tener acceso UPDATE al grupo con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Agrega una ACL de enlace al grupo después de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al final de la lista de ACL de enlace para el grupo.

La identidad debe tener acceso UPDATE al grupo con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Elimina la ACL con nombre de la lista de ACL de enlace del grupo con nombre.

La identidad debe tener acceso UPDATE al grupo con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

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

Obtiene todos los grupos.

La identidad debe tener acceso READ a estos grupos. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewGroupManager().

Funciones de recurso

Definición de la estructura Resource:
type Resource struct {
     Name string
     Description string
     BindACLs []string      // The name list of ACL, controls who can access this resource
}

Funciones de recurso:

Subasta Descripción
Create(resource Resource, identity *x509.Certificate) (error)

Crea un recurso. No se permiten recursos con nombre duplicados.

La identidad debe tener acceso CREATE al recurso de inicialización de datos .Resources. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Obtiene un recurso especificado.

La identidad debe tener acceso de lectura al recurso. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Suprime un recurso con nombre.

La identidad debe tener acceso DELETE al recurso con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Actualiza la descripción.

La identidad debe tener acceso UPDATE a este recurso. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Agrega una ACL de enlace al recurso antes de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al principio de la lista de ACL de enlace para el recurso.

La identidad debe tener acceso UPDATE al recurso con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Agrega una ACL de enlace al recurso después de la ACL con nombre existente. Si la ACL con nombre está vacía o no se encuentra, la ACL se agrega al final de la lista de ACL de enlace para el recurso.

La identidad debe tener acceso UPDATE al recurso con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Elimina la ACL con nombre de la lista de ACL de enlace del recurso con nombre.

La identidad debe tener acceso UPDATE al recurso con nombre. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Comprueba si el usuario actual tiene el acceso especificado al recurso con nombre.

Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().

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

Obtiene todos los recursos.

La identidad debe tener acceso READ a estos recursos. Si la identidad es nula, se utiliza la identidad por defecto especificada en NewResourceManager().