チャネルの管理
このトピックでは、チャネルの作成および表示方法、ピアの結合方法、ピアの指定およびアンカー方法、ポリシーおよびアクセス制御リストの使用方法、およびオーダラをチャネルに関連付ける方法など、ネットワーク内のチャネルの管理について説明します。
チャネルとは
チャネルは、ピアとレジャー・データを分離して、ブロックチェーン・ネットワークで機密トランザクションを提供します。
- 同僚
- 共有台帳
- チャネルでインスタンス化されたチェーンコード
- 1つ以上の順序付けサービス・ノード
- チャネル・ポリシー定義および定義が適用されるACL
チャネルに参加する各ピアは、チャネルのピアおよびサービスに対する認証に使用するアイデンティティをそれぞれ保持しています。ピアは複数のチャネルに属することができますが、トランザクション、元帳状態およびチャネル・メンバーシップに関する情報は各チャネル内のピアに限定されます。
You can use the Oracle Blockchain Platform console or the Hyperledger Fabric SDK to create channels on your blockchain network.「チャネルの表示」を参照してください。
チャネルの表示
ネットワークのメンバーは、チャネルを使用してブロックチェーン・トランザクション情報をプライベート通知します。
チャネルの作成
ネットワークにチャネルを追加し、そのチャネルを使用できるメンバーおよびそのチャネルに参加できるピアを指定できます。チャネルは削除できません。
このタスクを実行できるのは、管理者のみです。
-
(Hyperledger Fabric v2.x)チャネルにチェーンコードをデプロイします。「チェーンコードのデプロイ」を参照してください。
-
(Hyperledger Fabric v1.4.7)チャネルでチェーンコードをインスタンス化します。「チェーンコードのインスタンス化」を参照してください。
-
ネットワークに参加者が含まれる場合、参加者はコンソールを使用してメンバー・ピアをチャネルに参加させます。チャネルへのピアの参加を参照してください。
チャネルの組織リストの表示または更新
チャネルにアクセスできる組織のリストを表示できます。チャネルを作成した場合は、チャネルに対する組織の権限を変更したり、チャネルに対して組織を追加または削除できます
チャネルへのピアの参加
ピア・ノードをチャネルに追加すると、ノードはそれを使用してチャネル上の他のピア・ノードとプライベート・トランザクション情報を交換できるようになります。
-
チャネルを作成する際、チャネルに参加できるローカル・ピア・ノードを指定します。
-
参加者が含まれるネットワークを作成する場合は、チャネルのメンバーとしてその参加者を選択します。または、チャネルの作成後に参加者を追加できます。
-
インスタンスには複数の可用性ドメインまたはフォルト・ドメインがあるため、Oracleでは、各パーティションからチャネルにピアを参加させることをお薦めします。これは、一方のVMが利用できない場合でも、チャネルがエンドースおよびコミットで使用できるためです。ピアが配置されているドメインを確認するには、「その他のアクション」メニューでAD情報の表示を選択して可用性ドメイン情報を表示します。
- 各ドメインから最大7つのピアに参加できます。
「チャネルの作成」を参照してください。
このタスクを実行できるのは、管理者のみです。
アンカー・ピアの追加
チャネルを使用する各メンバーは、1つ以上のアンカー・ピアを指定する必要があります。アンカー・ピアは、プライマリ・ネットワークのコンタクト・ポイントで、チャネル上の他のネットワーク・ピアを検出して通信するために使用されます。
組織で、チャネルのアンカー・ピアとして1つ以上のピアを指定できます。高可用性ネットワークでは、アンカー・ピアを2つ以上指定できます。ネットワーク・チャネルを使用するすべてのメンバーは、コンソールを使用して1つ以上のピア・ノードをアンカー・ピアとして指定する必要があります。
このタスクを実行できるのは、管理者のみです。
アンカー・ピアの変更または削除
チャネルのアンカー・ピアを変更または削除できます。アンカー・ピアは、プライマリ・ネットワークのコンタクト・ポイントで、チャネル上の他のネットワーク・ピアを検出して通信するために使用されます。
チャネルのアンカー・ピアを変更または削除する前に、次の情報に注意してください:
- チャネルで通信するには、組織内の1つ以上のピアをアンカー・ピアとして指定する必要があります。
- 高可用性ネットワークでは、アンカー・ピアを2つ以上指定できます。
- ネットワーク・チャネルを使用するすべてのメンバーは、コンソールを使用して1つ以上のピア・ノードをアンカー・ピアとして指定する必要があります。
このタスクを実行できるのは、管理者のみです。
デプロイ済チェーンコードに関する情報の表示
ネットワーク内の様々なチャネルにデプロイされているチェーンコードに関する情報を表示できます。
- コンソールに移動し、チャネル・タブを選択します。
- チャネル表で、情報を表示するチェーンコードがあるチャネル名をクリックします。
- チャネル情報ページで、デプロイされたチェーンコード・ペインが選択されていることを確認します。
- チェーンコード表では、次のことができます:
- チェーンコード パッケージIDをクリックすると、チェーンコード タブに移動して詳細を確認できます。たとえば、チェーンコードがインストールされているピア、およびチェーンコードがデプロイされているチャネルなどです。
- チェーンコードの「その他のアクション」メニューで、「チェーンコード定義の表示」をクリックして、エンドースメント・ポリシーを含むチェーンコードの定義の詳細を検索します。
- (オプション)チェーンコードなしのチャネルがリスト表示されている場合は、チェーンコード・タブに移動してチャネルにチェーンコードをデプロイできます。チェーンコードのデプロイを参照してください。
チャネル・ポリシーとACLの使用
このトピックでは、チャネルのポリシーおよびアクセス制御リスト(ACL)について説明します。ポリシーの概要、ポリシー・タイプおよびポリシー・タイプの変更方法、およびACLを使用してチャネルのリソースにアクセスできる組織およびロールを管理する方法について説明します。
チャネル・ポリシーとは(Hyperledger Fabric v2.x)
ポリシーは、一連の条件を定義します。署名が有効とみなされ、対応するリクエストがネットワーク上で実行されるには、そのパーティがポリシーの条件を満たしている必要があります。
ブロックチェーン・ネットワークは、これらのポリシーによって管理されます。ポリシーは、リクエストに関連付けられたアイデンティティを、リクエストを実行するために必要なリソースに関連付けられたポリシーと照らし合せてチェックします。ポリシーはチャネルの構成内にあります。
ポリシーの構成後、それらのポリシーをチャネルのACLリソースに割り当て、チャネルで変更または処理が実行されるために署名する必要があるメンバーを決定します。たとえば、組織Aまたは組織Bのメンバーを含めるようにライター・ポリシーを変更したとします。次に、ライター・ポリシーをチャネルのcscc/GetConfigBlock
ACLリソースに割り当てます。これで、組織Aまたは組織Bのメンバーのみがcscc
コンポーネントに対してGetConfigBlock
をコールできるようになります。
ポリシー・タイプとは
ポリシー・タイプには、署名とImplicitMetaの2つがあります。
- 署名 - 評価ルールの組合せを指定します。AND、ORおよびNOutOfの組合せがサポートされます。たとえば、「組織Aの管理者1名と他の2名の管理者」や「20名の組織管理者のうち11名」などのような定義が可能です。
新たに作成するポリシーは、署名ポリシーになります。
- ImplicitMeta - このポリシー・タイプは、構成のコンテキストでのみ有効です。署名ポリシーで定義されているポリシーを構成階層の深くで評価した結果が集約されます。"大半の組織管理ポリシー"などのデフォルト・ルールがサポートされます。
ポリシーが作成される場合
ネットワークにチャネルを追加すると、Oracle Blockchain Platformによってデフォルトのポリシーが作成されます。デフォルトのポリシーは、管理者、ライター、リーダー、エンドースメント、LifecycleEndorsement (ImplicitMetaポリシー)および作成者(署名ポリシー)です。必要に応じて、これらのポリシーを変更したり、新しいポリシーを作成したりできます。
チャネル・ポリシーに関する次の重要な問題に注意してください:
-
コンソールを使用して、チャネルを作成し、組織のACLをReaderOnlyに設定できます。新しいチャネルを保存した後、このACL設定をチャネルの組織の編集オプションから更新することはできません。
ただし、コンソールのチャネル・ポリシーの管理機能を使用して組織をライター・ポリシーに追加し、チャネルのReaderOnly ACL設定を上書きできます。
チャネル・ポリシーとは(Hyperledger Fabric v1.4.7)
ポリシーは、一連の条件を定義します。署名が有効とみなされ、対応するリクエストがネットワーク上で実行されるには、そのパーティがポリシーの条件を満たしている必要があります。
ブロックチェーン・ネットワークは、これらのポリシーによって管理されます。ポリシーは、リクエストに関連付けられたアイデンティティを、リクエストを実行するために必要なリソースに関連付けられたポリシーと照らし合せてチェックします。ポリシーはチャネルの構成内にあります。
ポリシーの構成後、それらのポリシーをチャネルのACLリソースに割り当て、チャネルで変更または処理が実行されるために署名する必要があるメンバーを決定します。たとえば、組織Aまたは組織Bのメンバーを含めるようにライター・ポリシーを変更したとします。次に、ライター・ポリシーをチャネルのcscc/GetConfigBlock ACLリソースに割り当てます。これで、組織Aまたは組織Bのメンバーのみがcsccコンポーネントに対してGetConfigBlockをコールできるようになります。
ポリシー・タイプとは
ポリシー・タイプには、署名とImplicitMetaの2つがあります。
- 署名 - 評価ルールの組合せを指定します。AND、ORおよびNOutOfの組合せがサポートされます。たとえば、「組織Aの管理者1名と他の2名の管理者」や「20名の組織管理者のうち11名」などのような定義が可能です。
Oracle Blockchain Platformのデフォルトの管理者ポリシー(ImplicitMetaポリシーとして作成されている)を変更する場合、署名ポリシーを使用することに注意してください。新たに作成するポリシーは、署名ポリシーになります。
- ImplicitMeta - このポリシー・タイプは、構成のコンテキストでのみ有効です。署名ポリシーで定義されているポリシーを構成階層の深くで評価した結果が集約されます。"大半の組織管理ポリシー"などのデフォルト・ルールがサポートされます。
Oracle Blockchain Platformでは、ImplicitMetaポリシー・タイプを使用して管理者ポリシーが作成されます。管理者ポリシーを変更する場合、署名ポリシーを使用します。ImplicitMetaポリシーを使用してポリシーを作成または変更することはできません。Oracle Blockchain Platformでは、署名ポリシー・タイプを使用したポリシーの変更または作成のみがサポートされます。
ポリシーが作成される場合
ネットワークにチャネルを追加すると、Oracle Blockchain Platformによってデフォルトのポリシーが作成されます。デフォルトのポリシーは、管理者(ImplicitMetaポリシー)、作成者、ライターおよびリーダー(署名ポリシー)です。必要に応じて、これらのポリシーを変更したり、新しいポリシーを作成したりできます。
チャネル・ポリシーに関する次の重要な問題に注意してください:
-
コンソールを使用して、チャネルを作成し、組織のACLをReaderOnlyに設定できます。新しいチャネルを保存した後、このACL設定をチャネルの組織の編集オプションから更新することはできません。
ただし、コンソールのチャネル・ポリシーの管理機能を使用して組織をライター・ポリシーに追加し、チャネルのReaderOnly ACL設定を上書きできます。
-
Hyperledger Fabric SDKを使用してチャネルを作成すると、Fabricでは、ImplicitMetaポリシーがリーダーおよびライターのデフォルト・チャネル・ポリシーとして使用されます。チャネルでこれらのポリシーが使用されている場合、Oracle Blockchain Platformコンソールでは、管理操作(組織の編集など)が正常に処理されます。
この問題を解決するには、リーダーおよびライターのポリシーを署名ポリシーに更新し、必要に応じてポリシールールを定義します。https://hyperledger-fabric.readthedocs.io/en/release-1.3/access_control.htmlを参照してください
- Hyperledger Fabric SDKまたはCLIを使用してチャネルを作成する場合、作成者ポリシーはconfigtx.yamlファイルに含まれません。Oracle Blockchain Platformは、チャネル作成者にチャネルの構成の編集を許可するために作成者ポリシーを必要とします。configtx.yamlファイルを手動で編集し、作成者ポリシーを追加する必要があります。
チャネルのポリシーの追加または変更
チャネルのポリシーを追加または変更して、チャネルで特定のアクションを実行する必要があるメンバーを指定できます。ポリシーを定義したら、それらをチャネルのACLに割り当てます。
ポリシーを追加または更新する前に、Oracle Blockchain Platformでデフォルト・チャネル・ポリシーがどのように作成されるのかを理解する必要があります。「チャネル・ポリシーとは」(Hyperledger Fabric v1.4.7)または「チャネル・ポリシーとは」(Hyperledger Fabric v2.x)を参照してください。
このタスクを実行できるのは、管理者のみです。
- コンソールに移動し、チャネル・タブを選択します。
チャネル・タブが表示され、チャネル表にネットワーク上のすべてのチャネルのリストが表示されます。
- チャネル表で、ポリシーを追加またはポリシーを変更するチャネル名をクリックします。
チャネル情報ページが表示されます。
- 「チャネル情報」ページで、「チャネル・ポリシー」ペインをクリックします。
- 次のいずれかの操作を行います:
- 新規ポリシーを追加するには、新規ポリシーの作成ボタンをクリックします。ポリシーの作成ダイアログが表示されます。ポリシー名フィールドに名前を入力し、ポリシータイプフィールドで署名を選択します。「署名ポリシー」セクションを展開します。
- 既存のポリシーを変更するには、ポリシー名をクリックします。ポリシーの更新ダイアログが表示されます。
- アイデンティティの追加ボタンをクリックして組織を追加します。または、必要に応じて、既存の署名ポリシーを変更します。次の点に注意してください。
フィールド 説明 MSP ID ドロップダウン・メニューから、ポリシーに署名する必要のある組織を選択します。 ロール ポリシーに必要な対応するピア・ロールを選択します。通常、これはメンバーです。ピアのロールは、その構成情報を表示することで確認できます。 ポリシー式モード ほとんどの場合、「基本」を使用します。「拡張」を選択し、AND、ORおよびNOutOfを使用して式文字列を記述します。有効なポリシー式文字列を記述する方法の詳細は、Hyperledger Fabricドキュメントの「エンドースメント・ポリシー」を参照してください。 署名者 リクエストを実行するためにポリシーに署名する必要があるメンバーの数を選択します。 - 新しいポリシーを追加する場合、「作成」をクリックします。ポリシーを変更する場合、「更新」をクリックします。
チャネルのポリシーの削除
作成したチャネル・ポリシーは削除できます。
デフォルトのポリシー(管理者、作成者、リーダー、ライター、エンドースメントおよびLifecycleEndorsement)は削除できません。また、チャネル・ポリシーがACLに割り当てられている場合、そのチャネル・ポリシーは削除できません。チャネル・ポリシーを削除する前に、ポリシーが割り当てられていないことを確認します。
このタスクを実行できるのは、管理者のみです。
- コンソールに移動し、チャネル・タブを選択します。
チャネル・タブが表示され、チャネル表にネットワーク上のすべてのチャネルのリストが表示されます。
- チャネル表で、ポリシーを削除するチャネルをクリックします。
チャネル情報ページが表示されます。
- 「チャネル情報」ページで、「チャネル・ポリシー」ペインをクリックします。
- 削除するポリシーを特定し、その詳細オプション・ボタンをクリックします。
- 「削除」をクリックし、削除を確定します。
チャネルACLとは
アクセス制御リスト(ACL)では、ポリシーを使用して、チャネルのリソースにアクセスできる組織およびロールを管理します。
ユーザーは、問合せシステム・チェーンコード(qscc
)、ライフサイクル・システム・チェーンコード(Hyperledger Fabric v2.xの_lifecycle
、Hyperledger Fabric v1.4.7のlscc
)、構成システム・チェーンコード(cscc
)、ピア、イベントなどのコンポーネントをターゲットにすることで、ブロックチェーン・ネットワークと対話します。これらのコンポーネントは、ポリシーにチャネル・レベルで割り当てることができる特定のリソース(GetConfigBlock
やGetChaincodeData
など)に関連付けられています。これらのポリシーは、チャネルの構成の一部です。
ポリシーは、リソースをリクエストできる組織およびロールを定義します。ポリシーは、要求が行われると、システムに対し、要求者のアイデンティティを確認し、要求の作成が許可されているかどうかを判断します。チャネルの作成時、Oracle Blockchain PlatformによってデフォルトのHyperledger Fabric ACLがチャネルに付けられます。また、Oracle Blockchain Platformは、チャネルのデフォルト・ポリシー(管理者、作成者、ライターおよびリーダー、Hyperledger Fabric v2.xのエンドースメントおよびLifecycleEndorsement)を作成します。必要に応じて、これらのポリシーを変更することも、新しいポリシーを作成することもできます。「チャネル・ポリシーとは」(Hyperledger Fabric v2.x)または「チャネル・ポリシーとは」(Hyperledger Fabric v1.4.7)を参照してください。
チャネルACLの更新
ポリシーをチャネルのリソースに割り当てることで、チャネルのACLを更新できます。ポリシーは、リソースをリクエストできる組織およびロールを定義します
チャネルのACLを更新する前に、ポリシーおよびACLとは何かを理解する必要があります。「チャネル・ポリシーとは」(Hyperledger Fabric v1.4.7)および「チャネルACLとは」を参照してください。
- コンソールに移動し、チャネル・タブを選択します。
チャネル・タブが表示され、チャネル表にネットワーク上のすべてのチャネルのリストが表示されます。
- チャネル表で、ACLを更新するチャネルの名前をクリックします。
チャネル情報ページが表示されます。
- チャネル情報ページで、ACLペインをクリックします。
- リソース表で、更新するリソースを特定します。リソースの展開ボタンをクリックして、リソースに割り当てるポリシーを選択します。
- 必要に応じて、他のリソースのポリシーを変更します。
- ACLの更新をクリックします。
チャネルに対するオーダラの追加または削除
注文者管理組織は、チャネルに対して注文者を追加または削除できます。
- ファウンダ・コンソールで、「チャネル」タブを開き、チャネルを選択してその詳細ビューを表示します。
- オーダラ・サブタブを開きます。チャネルに現在参加しているオーナラ・ノードがすべてリストされます。
- チャネルに参加をクリックします。このチャネルにまだないOSNを選択し、「参加」をクリックします。
- ファウンダ・コンソールで、「チャネル」タブを開き、チャネルを選択してその詳細ビューを表示します。
- オーダラ・サブタブを開きます。チャネルに現在参加しているオーナラ・ノードがすべてリストされます。
- チャネルから削除するオーナラを選択し、その「その他のアクション」メニューから、「削除」を選択します。
オーダラ管理者組織の設定
チャネル内のOSNの管理をどの組織にも割り当てることができます。通常は、作成者またはチャネル作成者が割り当てられます。
- ファウンダ・コンソールで、チャネル・タブを開きます。
- 注文者管理者組織を設定するチャネルを選択し、「アクション」メニューからOSN管理者の管理を選択します。
- 使用可能な組織のリストから選択して、「送信」をクリックします。
チャネルのオーダリング・サービス設定の編集
特定のチャネルのオーダリング・サービス設定を更新できます。
- 「ネットワークのオーダリング・サービス設定の編集」の説明に従って、ネットワーク全体のオーダリング・サービス設定を個別に更新できます。
- オーダリング・サービス設定を変更し、ネットワークに対して実行されているアプリケーションがある場合、変更したオーダリング・サービス設定を使用するようにそれらのアプリケーションを手動で更新する必要があります。
- 一般的ではありませんが、一部のネットワーク参加者に別のオーダリング・サービスを公開することがあります。その場合、更新されたネットワーク構成ブロックをエクスポートし、必要な参加者は変更された設定をインポートします。「創設者のオーダリング・サービスへの参加者またはスケールアウトされたOSNの参加」を参照してください。