ファイングレイン・アクセス制御のライブラリ関数

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

グローバル関数

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

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

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

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

ACL関数:

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

新規ACLの作成重複する名前付きACLは使用できません

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

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

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

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

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

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

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

更新(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) (エラー)

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

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

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

すべての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ファンクションの定義:

関数 説明
作成(グループ・グループ、アイデンティティ*x509)。証明書(エラー)

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

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

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

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

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

削除(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には、名前付きグループへのアクセス権が必要です。IDがnilの場合は、NewGroupManager()に指定されているデフォルトのIDが使用されます。

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

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

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

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

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

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

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

すべてのグループの取得

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(リソース・リソース、アイデンティティ*x509)。証明書(エラー)

新規リソースの作成リソースの名前の重複は許可されません。

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

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

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

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

削除(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)。証明書(ブール、エラー)

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

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

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

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

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