ファイングレイン・アクセス制御のライブラリ関数
ライブラリ・パッケージには、リソース、グループ、ACLおよびグローバル関数用に次の関数が用意されています。
グローバル関数
関数 | 説明 |
---|---|
初期化(アイデンティティ*x509)。証明書、スタブ shim.ChaincodeStubInterface (エラー) (エラー) |
チェーンコードをインスタンス化すると、初期化関数がコールされます。この関数は、組み込まれているいくつかのアクセス制御リストを使用して、World Stateを初期化します。これらの組込みリストは、環境のブートストラップに使用されます。そのため、リソース、グループおよびACLを作成できるユーザーに対するアクセス制御が必要です。IDがnilの場合は、コール元のIDを使用します。 ブートストラップが完了すると、次のエンティティが作成されます:
|
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が使用されます。 |