詳細なアクセス制御のライブラリ関数
ライブラリ・パッケージには、リソース、グループ、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
にアクセスできることを示すアクセス制御リストと、グループOracle (Bobがメンバーである)を示す別のアクセス制御リストを"CREATE"
から禁止できます。Bobにアクセス権があるかどうかは、該当するエンティティに関連付けられたアクセス制御リストの順序によって変わります。 - BindACLs: BindACLsパラメータは、最初のアクセス制御リストを形成します。
ACL関数:
関数 | 説明 |
---|---|
Create(ACL ACL、 identity *x509)証明書(エラー) |
新しいACLを作成します。重複する名前付きACLは使用できません 新しいACLを作成するには、IDに.ACLsという名前のブートストラップ・リソースに対するCREATEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。 |
Get(aclName string、 identity *x509)証明書(ACL、エラー) |
指定されたACLを取得します。 IDには、指定されたACLに対するREADアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。 |
Delete(aclName文字列、ID *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文字列、ID *X509Certificate) (エラー) |
説明を更新します。 IDには、指定されたACLに対するUPDATEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。 |
AddBeforeACL(aclName文字列、beforeName文字列、newBindACL文字列、ID *X509Certificate) (エラー) |
指定された既存のACLの前に、バインドACLを追加します。指定されたACLが空であるか見つからない場合、ACLはバインドACLリストの先頭に追加されます。 IDには、指定されたACLに対するUPDATEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。 |
AddAfterACL(aclName文字列、afterName文字列、newBindACL文字列、ID *X509Certificate) (エラー) |
指定された既存のACLの後ろに、バインドACLを追加します。指定されたACLが空であるか見つからない場合、ACLはバインドACLリストの最後に追加されます。 IDには、指定されたACLに対するUPDATEアクセス権が必要です。IDがnilの場合は、newACLManager()に指定されているデフォルトのIDが使用されます。 |
RemoveBindACL(aclName文字列、removeName文字列、ID *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
関数の定義:
関数 | 説明 |
---|---|
作成(グループ・グループ、アイデンティティ*x509)。証明書(エラー) |
新規グループを作成します。 IDには、ブートストラップ・グループ.Groupに対するCREATEアクセス権が必要です。IDがnilの場合は、NewGroupManager()に指定されているデフォルトのIDが使用されます。 |
Get(groupName string、 identity *x509)証明書) (グループ、エラー) |
指定したグループを取得します。 IDには、このグループに対するREADアクセス権が必要です。IDがnilの場合は、NewGroupManager()に指定されているデフォルトのIDが使用されます。 |
Delete(groupName文字列、ID *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には、""という名前のブートストラップ・リソースに対するCREATEアクセス権が必要です。リソース" IDがnullの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。 |
Get(resName string、 identity *x509)証明書) (リソース、エラー) |
指定されたリソースを取得します。 IDには、そのリソースに対するREADアクセス権が必要です。IDがnullの場合は、NewResourceManager()に指定されているデフォルトのIDが使用されます。 |
Delete(resName文字列、ID *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が使用されます。 |