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). Certificado, stub shim.ChaincodeStubInterface) (error) (error)

Cuando se crea una instancia del código de cadena, se llama a la función de inicialización. Esa función inicializará el estado mundial con algunas listas de control de acceso incorporadas. Estas listas incorporadas se utilizan para iniciar el entorno. Por lo tanto, debe haber control de acceso sobre quién puede crear recursos, grupos y ACL. Si la identificación es nula, utilice la identificación de la persona que llama.

Una vez realizada la inicialización de datos, se crean las siguientes entidades:

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

Permite obtener el mánager de grupo que se usa para todas las operaciones relacionadas con el grupo.

Identidad: identidad por defecto para la operación relacionada. Si es nulo, utilice la identidad de la persona que llama.

NewACLManager(identidad *x509. Certificado, stub shim.ChaincodeStubInterface) (*ACLManager, error)

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

Identidad: identidad por defecto para la operación relacionada. Si es nulo, utilice la identidad de la persona que llama.

NewResourceManager(identidad *x509. Certificado, stub shim.ChaincodeStubInterface) (*ResourceManager, error)

Permite obtener el gestor de recursos que se utiliza para todas las operaciones relacionadas con recursos.

Identidad: identidad por defecto para la operación relacionada. Si es nulo, utilice la identidad de la persona que llama.

Funciones de 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 Acceses es una lista de nombres de acceso arbitrarios separados por comas y completamente hasta la aplicación, excepto 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 campos como "owner", "quantity", etc.
  • Permitido: Permitido determina 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) está prohibido en "CREATE". Si Bob tiene acceso o no depende del orden de las listas de control de acceso asociadas a la entidad en cuestión.
  • BindACLs: el parámetro BindACLs formará la lista de control de acceso inicial.

Funciones de ACL:

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

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

Para crear una nueva 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 cadena, identidad *x509. Certificado (ACL, error)

Obtenga 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().

Suprimir (cadena aclName, identidad *x509). Certificado (error)

Suprimir 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). Certificado (error)

Actualizar una ACL.

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

AddPattern(cadena aclName, cadena de patrón, identidad *x509. Certificado (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(cadena aclName, cadena de patrón, identidad *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(cadena de nombre de activo, cadena de acceso, identidad *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(cadena aclName, cadena de acceso, identidad *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(cadena aclName, cadena newDescription, identidad *X509Certificate) (error)

Actualice 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(cadena aclName, cadena beforeName, cadena newBindACL, identidad *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(cadena aclName, cadena afterName, cadena newBindACL, identidad *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(cadena aclName, cadena removeName, identidad *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(identidad *x509. Certificado) ([]ACL, error)

Obtener 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
Crear (grupo de grupos, identidad *x509). Certificado (error)

Cree un grupo nuevo.

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

Get(groupName cadena, identidad *x509. Certificado) (Grupo, error)

Obtener un grupo especificado.

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

Suprimir (cadena groupName, identidad *x509). Certificado (error)

Suprimir 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(cadena groupName, miembro []cadena, identidad *x509. Certificado (error)

Agregue 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(cadena groupName, miembro []cadena, identidad *x509. Certificado (error)

Eliminar 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(cadena groupName, cadena newDes, identidad *x509. Certificado (error)

Actualice 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(cadena groupName, cadena beforeName, cadena aclName, identidad *x509. Certificado (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(cadena groupName, cadena afterName, cadena aclName, identidad *x509. Certificado (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(cadena groupName, cadena aclName, identidad *x509. Certificado (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(identidad *x509. Certificado) ([]Group, error)

Obtener 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). Certificado (error)

Crear nuevo recurso. No se permiten recursos con nombre duplicados.

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

Get(resName cadena, identidad *x509. Certificado) (recurso, error)

Obtener 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().

Suprimir (cadena resName, identidad *x509). Certificado (error)

Suprima 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(cadena resourceName, cadena newDes, identidad *x509. Certificado (error)

Actualice 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(cadena resourceName, cadena beforeName, cadena aclName, identidad *x509. Certificado (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(cadena resourceName, cadena afterName, cadena aclName, identidad *x509. Certificado (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(cadena resourceName, cadena aclName, identidad *x509. Certificado (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(cadena resName, cadena de acceso, identidad *x509. Certificado) (bool, error)

Compruebe 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(identidad *x509. Certificado) ([]Recurso, error)

Obtener todos los recursos.

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