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