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