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

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

グローバル関数

関数 説明
初期化(アイデンティティ*x509)。証明書、スタブ shim.ChaincodeStubInterface (エラー) (エラー)

チェーンコードがインスタンス化されると、初期化関数がコールされます。この関数は、組み込まれているいくつかのアクセス制御リストを使用して、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。"という名前の対応するACLコントロール・リスト。ACLs.ACLは、実際の共通名を使用して"%CN%bob.smith@oracle.com"という形式1の単一のアイデンティティ・パターンで作成され、アクセス権はCREATE、READ、UPDATEおよびDELETEになります。
NewGroupManager(アイデンティティ*x509)。証明書、スタブshim.ChaincodeStubInterface (*GroupManager、エラー)

グループ関連のすべての操作に使用するグループ・マネージャを取得します。

ID: 関連する操作のデフォルトID。nilの場合は、コール元のIDを使用します。

NewACLManager(アイデンティティ*x509)。証明書、スタブshim.ChaincodeStubInterface (*ACLManager、エラー)

ACL関連のすべての操作に使用するACLマネージャを取得します。

ID: 関連する操作のデフォルトID。nilの場合は、コール元のIDを使用します。

NewResourceManager(アイデンティティ*x509)。証明書、スタブshim.ChaincodeStubInterface (*ResourceManager、エラー)

リソース関連のすべての操作に使用するリソース・マネージャを取得します。

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"にアクセスできることを示すアクセス制御リストと、グループOracle (Bobがメンバー)が"CREATE"から禁止されていることを示す別のアクセス制御リストを持つことができます。Bobにアクセス権があるかどうかを判断するには、該当するエンティティに関連付けられたアクセス制御リストの順序を使用します。
  • BindACLs: BindACLsパラメータは、最初のアクセス制御リストを形成します。

ACL関数:

関数 説明
create(ACL ACL、identity *x509)。証明書(エラー)

新しいACLを作成します。重複する名前付きACLは許可されません。

新しいACLを作成するには、IDに.ACLsという名前のブートストラップ・リソースに対するCREATEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

Get(aclName文字列、アイデンティティ*x509)。証明書(ACL、エラー)

指定されたACLを取得します。

IDには、指定されたACLに対するREADアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

Delete(aclName文字列、アイデンティティ*x509)。証明書(エラー)

指定されたACLを削除します。

IDには、指定されたACLに対するDELETEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

Update(ACL ACL、identity *x509)。証明書(エラー)

ACLを更新します。

IDには、指定されたリソースに対するUPDATEアクセス権が必要で、指定されたACLが存在する必要があります。IDがnilの場合は、NewACLManager()に指定されているデフォルトのIDが使用されます。

AddPattern(aclName文字列、パターン文字列、アイデンティティ*x509)。証明書(エラー)

指定されたACLに新しいIDパターンを追加します。IDには、指定されたACLに対するUPDATEアクセス権が必要です。

IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

RemovePattern(aclName文字列、パターン文字列、アイデンティティ*X509Certificate) (エラー)

ACLからIDパターンを削除します。IDには、指定されたACLに対するUPDATEアクセス権が必要です。

IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

AddAccess(aclname string、 access string、 identity *X509Certificate) (エラー)

指定されたACLに新しいアクセス権を追加します。IDには、指定されたACLに対するUPDATEアクセス権が必要です。

IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

RemoveAccess(aclName文字列、アクセス文字列、アイデンティティ*X509Certificate) (エラー)

ACLからアクセス権を削除します。IDには、指定されたACLに対するUPDATEアクセス権が必要です。

IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。

UpdateDescription(aclName文字列、newDescription文字列、アイデンティティ*X509Certificate) (エラー)

摘要を更新します。

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

AddBeforeACL(aclName文字列、beforeName文字列、newBindACL文字列、アイデンティティ*X509Certificate) (エラー)

指定された既存のACLの前に、バインドACLを追加します。指定されたACLが空であるか見つからない場合、ACLはバインドACLリストの先頭に追加されます。

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

AddAfterACL(aclName文字列、afterName文字列、newBindACL文字列、アイデンティティ*X509Certificate) (エラー)

指定された既存のACLの後ろに、バインドACLを追加します。指定されたACLが空であるか見つからない場合、ACLはバインドACLリストの最後に追加されます。

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

RemoveBindACL(aclName文字列、removeName文字列、アイデンティティ*X509Certificate) (エラー)

バインドACLリストからremoveName ACLを削除します。

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

GetAll(アイデンティティ*x509)。証明書([]ACL、エラー)

すべての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)。証明書(エラー)

新規グループを作成します。

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

Get(groupName文字列、アイデンティティ*x509)。証明書(グループ、エラー)

指定したグループを取得します。

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

Delete(groupName文字列、アイデンティティ*x509)。証明書(エラー)

指定されたグループを削除します。

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

AddMembers(groupName文字列、メンバー[]文字列、アイデンティティ*x509)。証明書(エラー)

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

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

RemoveMembers(groupName文字列、メンバー[]文字列、アイデンティティ*x509)。証明書(エラー)

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

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

UpdateDescription(groupName文字列、newDes文字列、アイデンティティ*x509)。証明書(エラー)

摘要を更新します。

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

AddBeforeACL(groupName文字列、beforeName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

グループにバインドACLを追加します(場所は、指定された既存のACLの前です)。指定されたACLが空であるか見つからない場合、ACLは、そのリソースのバインドACLリストの先頭に追加されます。

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

AddAfterACL(groupName文字列、afterName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

グループにバインドACLを追加します(場所は、指定された既存のACLの後ろです)。指定されたACLが空であるか見つからない場合、ACLは、そのグループのバインドACLリストの最後に追加されます。

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

RemoveBindACL(groupName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

指定されたグループのバインドACLリストから、指定のACLを削除します。

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

GetAll(アイデンティティ*x509)。証明書([]グループ、エラー)

すべてのグループの取得

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)。証明書(エラー)

新規リソースの作成リソースの名前を重複させることはできません。

IDには、.Resourcesという名前のブートストラップ・リソースに対するCREATEアクセス権が必要です。IDがnullの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。

Get(resName文字列、アイデンティティ*x509)。証明書(リソース、エラー)

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

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

Delete(resName文字列、アイデンティティ*x509)。証明書(エラー)

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

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

UpdateDescription(resourceName文字列、newDes文字列、アイデンティティ*x509)。証明書(エラー)

名称を更新します。

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

AddBeforeACL(resourceName文字列、beforeName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

リソースにバインドACLを追加します(場所は、指定された既存のACLの前です)。指定されたACLが空であるか見つからない場合、ACLは、そのリソースのバインドACLリストの先頭に追加されます。

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

AddAfterACL(resourceName文字列、afterName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

リソースにバインドACLを追加します(場所は、指定された既存のACLの後ろです)。指定されたACLが空であるか見つからない場合、ACLは、そのリソースのバインドACLリストの最後に追加されます。

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

RemoveBindACL(resourceName文字列、aclName文字列、アイデンティティ*x509)。証明書(エラー)

指定されたリソースのバインドACLリストから、指定のACLを削除します。

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

CheckAccess(resName文字列、アクセス文字列、アイデンティティ*x509)。証明書(bool、 error)

現在のユーザーに、指定リソースに対する指定のアクセス権があるかどうかを確認します。

IDがnilの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。

GetAll(アイデンティティ*x509)。証明書([]リソース、エラー)

すべてのリソースを取得します。

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