细粒度访问控制库函数
库软件包为资源、组和 ACL 以及全局功能提供以下功能。
全局函数
函数 | 说明 |
---|---|
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error) |
部署链代码后,将调用 完成引导过程后,将创建以下实体:
|
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error) |
获取用于所有组相关操作的组管理器。 Identity(身份):相关操作的默认身份。如果是 nil,则函数使用调用者的身份。 |
NewACLManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*ACLManager, error) |
获取用于所有 ACL 相关操作的 ACL 管理器。 Identity(身份):相关操作的默认身份。如果是 nil,则函数使用调用者的身份。 |
NewResourceManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*ResourceManager, error) |
获取用于所有资源相关操作的资源管理器。 Identity(身份):相关操作的默认身份。如果是 nil,则函数使用调用者的身份。 |
访问控制列表 (ACL) 函数
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
}
- Accesses(访问): Accesses(访问)字符串是逗号分隔的任意访问名的列表,完全可以访问应用程序,但以下四项除外:CREATE、READ、UPDATE 和 DELETE。这些访问值用于维护细粒度的访问控制。应用程序可以使用自己的访问字符串(例如
"register"
、"invoke"
或"query"
),甚至可以使用访问字段名称(例如"owner"
、"quantity"
等)等。 - 允许:允许确定匹配模式的身份是允许访问 (true) 还是禁止访问 (false)。您可以有一个访问控制列表,指示 Bob 可以访问 "
CREATE
",另一个列表指示"CREATE"
禁止使用 Oracle 组(其中 Bob 是其成员)。Bob 是否具有访问权限取决于与相关实体关联的访问控制列表的顺序。 - BindACLs:BindACLs 参数构成初始访问控制列表。
ACL 函数:
函数 | 说明 |
---|---|
Create(acl ACL, identity *x509.Certificate) (error) |
创建 ACL。不允许重复的命名 ACL。 要创建 ACL,身份必须具有对名为 “ 的引导资源的 CREATE 访问权限。ACL”。如果标识为 nil,则使用 |
Get(aclName string, identity *x509.Certificate) (ACL, error) |
获取命名的 ACL。 身份必须具有对指定 ACL 的 READ 访问权限。如果标识为 nil,则使用 |
Delete(aclName string, identity *x509.Certificate) (error) |
删除指定的 ACL。 身份必须具有对指定 ACL 的 DELETE 访问权限。如果标识为 nil,则使用 |
Update(acl ACL, identity *x509.Certificate) (error) |
更新 ACL。 身份必须具有对指定资源的 UPDATE 访问权限,并且指定的 ACL 必须存在。如果标识为 nil,则使用 |
AddPattern(aclName string, pattern string, identity *x509.Certificate) (error) |
向指定的 ACL 添加新的身份模式。身份必须对指定的 ACL 具有 UPDATE 访问权限。 如果标识为 nil,则使用 |
RemovePattern(aclName string, pattern string, identity *X509Certificate) (error) |
从 ACL 中删除身份模式。身份必须对指定的 ACL 具有 UPDATE 访问权限。 如果标识为 nil,则使用 |
AddAccess(aclname string, access string, identity *X509Certificate) (error) |
添加对命名 ACL 的新访问权限。身份必须对指定的 ACL 具有 UPDATE 访问权限。 如果标识为 nil,则使用 |
RemoveAccess(aclName string, access string, identity *X509Certificate) (error) |
从 ACL 中删除访问权限。身份必须对指定的 ACL 具有 UPDATE 访问权限。 如果标识为 nil,则使用 |
UpdateDescription(aclName string, newDescription string, identity *X509Certificate) (error) |
更新说明。 身份必须具有对指定 ACL 的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddBeforeACL(aclName string, beforeName string, newBindACL string, identity *X509Certificate) (error) |
在现有命名 ACL 之前添加绑定 ACL。如果指定的 ACL 为空或未找到,则会将 ACL 添加到绑定 ACL 列表的开头。 身份必须具有对指定 ACL 的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddAfterACL(aclName string, afterName string, newBindACL string, identity *X509Certificate) (error) |
在现有命名 ACL 之后添加绑定 ACL。如果指定的 ACL 为空或未找到,则会将 ACL 添加到绑定 ACL 列表的末尾。 身份必须具有对指定 ACL 的 UPDATE 访问权限。如果标识为 nil,则使用 |
RemoveBindACL(aclName string, removeName string, identity *X509Certificate) (error) |
从绑定 ACL 列表中删除 身份必须具有对指定 ACL 的 UPDATE 访问权限。如果标识为 nil,则使用 |
GetAll(identity *x509.Certificate) ([]ACL, error) |
获取所有 ACL。 身份必须具有对指定 ACL 的 READ 访问权限。如果标识为 nil,则使用 |
组功能
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.
}
GroupManager
函数的定义:
函数 | 说明 |
---|---|
Create(group Group, identity *x509.Certificate) (error) |
创建组。 身份必须具有对引导组 |
Get(groupName string, identity *x509.Certificate) (Group, error) |
获取指定的组。 身份必须具有对此组的 READ 访问权限。如果标识为 nil,则使用 |
Delete(groupName string, identity *x509.Certificate) (error) |
删除指定的组。 身份必须具有对此组的 DELETE 访问权限。如果标识为 nil,则使用 |
AddMembers(groupName string, member []string, identity *x509.Certificate) (error) |
向组中添加一个或多个成员。 身份必须具有对此组的 UPDATE 访问权限。如果标识为 nil,则使用 |
RemoveMembers(groupName string, member []string, identity *x509.Certificate) (error) |
从组中删除一个或多个成员。 身份必须具有对此组的 UPDATE 访问权限。如果标识为 nil,则使用 |
UpdateDescription(groupName string, newDes string, identity *x509.Certificate) (error) |
更新说明。 身份必须具有对此组的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddBeforeACL(groupName string, beforeName string, aclName string, identity *x509.Certificate) (error) |
将绑定 ACL 添加到现有命名 ACL 之前的组。如果指定的 ACL 为空或未找到,则会将 ACL 添加到资源的绑定 ACL 列表的开头。 身份必须具有对指定组的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddAfterACL(groupName string, afterName string, aclName string, identity *x509.Certificate) (error) |
将绑定 ACL 添加到现有命名 ACL 之后的组。如果指定的 ACL 为空或未找到,则会将 ACL 添加到该组的绑定 ACL 列表的末尾。 身份必须具有对指定组的 UPDATE 访问权限。如果标识为 nil,则使用 |
RemoveBindACL(groupName string, aclName string, identity *x509.Certificate) (error) |
从指定组的绑定 ACL 列表中删除指定的 ACL。 身份必须具有对指定组的 UPDATE 访问权限。如果标识为 nil,则使用 |
GetAll(identity *x509.Certificate) ([]Group, error) |
获取所有组。 身份必须具有对这些组的 READ 访问权限。如果标识为 nil,则使用 |
资源函数
Resource
结构的定义:type Resource struct {
Name string
Description string
BindACLs []string // The name list of ACL, controls who can access this resource
}
资源函数:
功能 | 说明 |
---|---|
Create(resource Resource, identity *x509.Certificate) (error) |
创建资源。不允许重复的命名资源。 身份必须具有对 |
Get(resName string, identity *x509.Certificate) (Resource, error) |
获取指定的资源。 身份必须对资源具有 READ 访问权限。如果标识为空,则使用 |
Delete(resName string, identity *x509.Certificate) (error) |
删除指定的资源。 身份必须对指定的资源具有 DELETE 访问权限。如果标识为空,则使用 |
UpdateDescription(resourceName string, newDes string, identity *x509.Certificate) (error) |
更新说明。 身份必须具有对此资源的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddBeforeACL(resourceName string, beforeName string, aclName string, identity *x509.Certificate) (error) |
将绑定 ACL 添加到现有命名 ACL 之前的资源。如果指定的 ACL 为空或未找到,则会将 ACL 添加到资源的绑定 ACL 列表的开头。 身份必须具有对指定资源的 UPDATE 访问权限。如果标识为 nil,则使用 |
AddAfterACL(resourceName string, afterName string, aclName string, identity *x509.Certificate) (error) |
将绑定 ACL 添加到现有命名 ACL 之后的资源。如果指定的 ACL 为空或未找到,则会将 ACL 添加到资源的绑定 ACL 列表的末尾。 身份必须具有对指定资源的 UPDATE 访问权限。如果标识为 nil,则使用 |
RemoveBindACL(resourceName string, aclName string, identity *x509.Certificate) (error) |
从指定资源的绑定 ACL 列表中删除指定的 ACL。 身份必须具有对指定资源的 UPDATE 访问权限。如果标识为 nil,则使用 |
CheckAccess(resName string, access string, identity *x509.Certificate) (bool, error) |
检查当前用户是否具有指定对指定资源的访问权限。 如果标识为 nil,则使用 |
GetAll(identity *x509.Certificate) ([]Resource, error) |
获取所有资源。 身份必须具有对这些资源的 READ 访问权限。如果标识为 nil,则使用 |