ファイングレイン・アクセス・コントロールのライブラリ関数

ライブラリ・パッケージには、リソース、グループ、ACLおよびグローバル関数用に次の関数が用意されています。

グローバル関数

関数 説明
Initialization(identity *x509.Certificate, stub shim.ChaincodeStubInterface) (error) (error)

チェーンコードがインスタンス化されると、初期化関数がコールされます。この関数は、組み込まれているいくつかのアクセス制御リストを使用して、World Stateを初期化します。これらの組込みリストは、環境のブートストラップに使用されます。そのため、どのユーザーにリソース、グループおよびACLの作成を許可するかに関して、アクセス制御が必要になります。IDがnilの場合は、コール元のIDを使用します。

ブートストラップが完了すると、次のエンティティが作成されます:

  • .Resourcesという名前のリソース。.Resources.ACLという名前の対応するACL (IDパターンは%CN%bob.smith@oracle.comという形式1つのみ)が実際の共通名を使用して作成され、アクセス権はCREATE、READ、UPDATEおよびDELETEになります。
  • .Groupsという名前のグループ。.Groups.ACLという名前の対応するACL (IDパターンは%CN%bob.smith@oracle.comという形式1つのみ)が実際の共通名を使用して作成され、アクセス権はCREATE、READ、UPDATEおよびDELETEになります。
  • .ACLsという名前のACL。.ACLs.ACLという名前の対応するACL (IDパターンは%CN%bob.smith@oracle.comという形式1つのみ)が実際の共通名を使用して作成され、アクセス権は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
}
  • Accesses: Accesses文字列は、任意のアクセス名をカンマで区切ったリストで、CREATE、READ、UPDATE、DELETEの4つ以外は、すべてアプリケーションによって異なります。これらのアクセス値を使用して、ファイングレイン・アクセス・コントロールを管理します。アプリケーションには、registerinvokequeryなどの独自のアクセス文字列を使用することも、ownerquantityなどのフィールド名をアクセス権として使用することも可能です。
  • Allowed: Allowedは、パターンに一致するIDにアクセスを許可する(true)か禁止する(false)かを決定します。BobにCREATEへのアクセスを許可するアクセス制御リストを作成し、BobがメンバーであるグループOracleにCREATEへのアクセスを禁止する別のリストを作成することもできます。Bobにアクセス権があるかどうかは、該当するエンティティに関連付けられたアクセス制御リストの順序によって変わります。
  • BindACLs: BindACLsパラメータは、最初のアクセス制御リストを形成します。

ACL関数:

関数 説明
Create(acl ACL, identity *x509.Certificate) (error)

新しいACLを作成します。ACLの名前を重複させることはできません。

新しいACLを作成するには、IDに.ACLsという名前のブートストラップ・リソースに対するCREATEアクセス権が必要です。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が使用されます。

グループ関数

グループ構造の定義:
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)

グループに1つ以上のメンバーを追加します。

IDには、このグループに対するUPDATEアクセス権が必要です。IDがnilの場合は、NewGroupManager()に指定されているデフォルトのIDが使用されます。

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

グループから1つ以上のメンバーを削除します。

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が使用されます。

リソース関数

リソース構造の定義:
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がnullの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。

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

指定されたリソースを取得します。

IDには、そのリソースに対するREADアクセス権が必要です。IDがnullの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。

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

指定されたリソースを削除します。

IDには、指定されたリソースに対するDELETEアクセス権が必要です。IDがnullの場合は、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が使用されます。