미세 조정된 액세스 제어 라이브러리 함수

라이브러리 패키지는 전역 함수뿐만 아니라 리소스, 그룹 및 ACL에 대해 다음 함수를 제공합니다.

전역 함수

함수 설명
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

체인코드가 배포되면 Initialization 함수가 호출됩니다. 이 함수는 일부 내장된 액세스 제어 목록을 사용하여 표준 상태를 초기화합니다. 이러한 내장 목록은 환경을 부트스트랩하는 데 사용됩니다. 리소스, 그룹 및 ACL을 만들 수 있는 사용자에 대한 액세스 제어가 있어야 합니다. ID가 nil이면 함수는 호출자의 ID를 사용합니다.

부트스트랩 프로세스가 완료되면 다음 엔티티가 생성됩니다.

  • 이름이 .Resources인 리소스입니다. .Resources.ACL라는 이름의 해당 ACL은 실제 공통 이름을 사용하여 "%CN%bob.smith@oracle.com" 형식의 단일 ID 패턴으로 생성되고 액세스는 CREATE, READ, UPDATE 및 DELETE 액세스입니다.
  • 이름이 .Groups인 그룹입니다. .Groups.ACL라는 이름의 해당 ACL은 실제 공통 이름을 사용하여 "%CN%bob.smith@oracle.com" 형식의 단일 ID 패턴으로 생성되고 액세스는 CREATE, READ, UPDATE 및 DELETE 액세스입니다.
  • 이름이 .ACLs인 ACL입니다. 이름이 .ACLs.ACL인 해당 ACL 제어 목록은 실제 공통 이름을 사용하여 형식 "%CN%bob.smith@oracle.com"의 단일 ID 패턴으로 생성되고 액세스는 CREATE, READ, UPDATE 및 DELETE 액세스입니다.
NewGroupManager(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (*GroupManager, error)

모든 그룹 관련 작업에 사용되는 그룹 관리자를 가져옵니다.

ID: 관련 작업의 기본 ID입니다. nil인 경우 함수는 호출자의 ID를 사용합니다.

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

모든 ACL 관련 작업에 사용되는 ACL 관리자를 가져옵니다.

ID: 관련 작업의 기본 ID입니다. nil인 경우 함수는 호출자의 ID를 사용합니다.

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

모든 자원 관련 공정에 사용되는 자원 관리자를 가져옵니다.

ID: 관련 작업의 기본 ID입니다. nil인 경우 함수는 호출자의 ID를 사용합니다.

액세스 제어 목록(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
}
  • 액세스: 액세스 문자열은 쉼표로 구분된 임의 액세스 이름의 목록이며 CREATE, READ, UPDATE 및 DELETE를 제외한 응용 프로그램에 적용됩니다. 이러한 액세스 값은 Fine-Grained Access Control을 유지 관리하는 데 사용됩니다. 응용 프로그램은 "register", "invoke" 또는 "query"와 같은 고유한 액세스 문자열이나 "owner", "quantity" 등과 같은 필드 이름에 대한 액세스 등도 사용할 수 있습니다.
  • 허용됨: 허용됨은 패턴과 일치하는 ID가 허용되는 액세스(true) 또는 금지된 액세스(false)인지 결정합니다. Bob이 "CREATE"에 액세스할 수 있음을 나타내는 액세스 제어 목록을 가질 수 있으며, Oracle 그룹(Bob이 구성원임)이 "CREATE"에서 금지되었음을 나타내는 다른 액세스 제어 목록을 가질 수 있습니다. Bob에게 액세스 권한이 있는지 여부는 해당 엔티티와 연관된 액세스 제어 목록의 순서에 따라 달라집니다.
  • BindACLs: BindACLs 매개변수는 초기 액세스 제어 목록을 구성합니다.

ACL 함수:

함수 설명
Create(acl ACL, identity *x509.Certificate) (error)

ACL을 만듭니다. 이름이 지정된 중복 ACL은 허용되지 않습니다.

ACL을 만들려면 ID에 "라는 부트스트랩 리소스에 대한 CREATE 액세스 권한이 있어야 합니다. ACL입니다." ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

이름이 지정된 ACL을 가져옵니다.

ID에는 이름이 지정된 ACL에 대한 READ 액세스 권한이 있어야 합니다. ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

지정된 ACL을 삭제합니다.

ID는 이름이 지정된 ACL에 대한 DELETE 액세스 권한을 가져야 합니다. ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

ACL을 업데이트합니다.

ID에는 명명된 리소스에 대한 UPDATE 액세스 권한이 있어야 하며, 명명된 ACL이 있어야 합니다. ID가 nil인 경우 NewACLManager()에 지정된 기본 ID가 사용됩니다.

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

이름이 지정된 ACL에 새 ID 패턴을 추가합니다. ID에는 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다.

ID가 nil인 경우 newACLManager() 에 지정된 기본 ID가 사용됩니다.

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

ACL에서 ID 패턴을 제거합니다. ID에는 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다.

ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

이름이 지정된 ACL에 새 액세스를 추가합니다. ID에는 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다.

ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

ACL에서 액세스를 제거합니다. ID에는 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다.

ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

설명을 업데이트합니다.

ID에 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

기존의 명명된 ACL 앞에 바인드 ACL을 추가합니다. 이름이 지정된 ACL이 비어 있거나 없는 경우 ACL이 바인드 ACL 목록의 시작 부분에 추가됩니다.

ID에 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

이름이 지정된 기존 ACL 뒤에 바인드 ACL을 추가합니다. 이름이 지정된 ACL이 비어 있거나 없는 경우 바인드 ACL 목록의 끝에 ACL이 추가됩니다.

ID에 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

바인드 ACL 목록에서 removeName ACL을 제거합니다.

ID에 이름이 지정된 ACL에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 newACLManager()에 지정된 기본 ID가 사용됩니다.

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

모든 ACL을 가져옵니다.

ID에는 이름이 지정된 ACL에 대한 READ 액세스 권한이 있어야 합니다. ID가 nil이면 newACLManager()에 지정된 기본 ID가 사용됩니다.

그룹 기능

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)

그룹을 생성합니다.

ID에 부트스트랩 그룹 .Group에 대한 CREATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

지정된 그룹을 가져옵니다.

ID에 이 그룹에 대한 READ 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

지정된 그룹을 삭제합니다.

ID에 이 그룹에 대한 DELETE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

그룹에 멤버를 하나 이상 추가합니다.

ID에 이 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

그룹에서 하나 이상의 멤버를 제거합니다.

ID에 이 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

설명을 업데이트합니다.

ID에 이 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

기존의 이름이 지정된 ACL 앞에 바인드 ACL을 그룹에 추가합니다. 명명된 ACL이 비어 있거나 없는 경우 리소스에 대한 바인드 ACL 목록의 시작 부분에 ACL이 추가됩니다.

ID에 이름이 지정된 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

기존의 이름이 지정된 ACL 뒤에 바인드 ACL을 그룹에 추가합니다. 명명된 ACL이 비어 있거나 없는 경우 그룹에 대한 바인드 ACL 목록의 끝에 ACL이 추가됩니다.

ID에 이름이 지정된 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

명명된 그룹의 바인드 ACL 목록에서 명명된 ACL을 제거합니다.

ID에 이름이 지정된 그룹에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

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

모든 그룹을 가져옵니다.

ID에는 이러한 그룹에 대한 READ 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewGroupManager()에 지정된 기본 ID가 사용됩니다.

자원 기능

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)

리소스를 생성합니다. 중복된 이름이 지정된 리소스는 허용되지 않습니다.

ID에 .Resources 부트스트랩 리소스에 대한 CREATE 액세스 권한이 있어야 합니다. ID가 널인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

지정된 리소스를 가져옵니다.

ID에 리소스에 대한 READ 액세스 권한이 있어야 합니다. ID가 널인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

명명된 리소스를 삭제합니다.

ID에 이름이 지정된 리소스에 대한 DELETE 액세스 권한이 있어야 합니다. ID가 널인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

설명을 업데이트합니다.

ID에 이 리소스에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

기존의 이름이 지정된 ACL 앞에 리소스에 바인드 ACL을 추가합니다. 이름이 지정된 ACL이 비어 있거나 없는 경우 리소스에 대한 바인드 ACL 목록의 시작 부분에 ACL이 추가됩니다.

ID에 이름이 지정된 리소스에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

기존의 이름이 지정된 ACL 뒤에 리소스에 바인드 ACL을 추가합니다. 이름이 지정된 ACL이 비어 있거나 없는 경우 리소스에 대한 바인드 ACL 목록의 끝에 ACL이 추가됩니다.

ID에 이름이 지정된 리소스에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

명명된 리소스의 바인드 ACL 목록에서 명명된 ACL을 제거합니다.

ID에 이름이 지정된 리소스에 대한 UPDATE 액세스 권한이 있어야 합니다. ID가 nil이면 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

현재 사용자에게 지정된 이름이 지정된 리소스에 대한 액세스 권한이 있는지 여부를 확인합니다.

ID가 nil이면 NewResourceManager()에 지정된 기본 ID가 사용됩니다.

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

모든 리소스를 가져옵니다.

ID에는 이러한 리소스에 대한 READ 액세스 권한이 있어야 합니다. ID가 nil인 경우 NewResourceManager()에 지정된 기본 ID가 사용됩니다.