前回投稿したMSPで、OU属性について触れた。
Fabric CAで証明書を発行すると、何が作られるのかを簡単にメモする。
TL;DR
OU属性はregister時にid.typeで指定することができる。基本はadmin/user/peer/orderer/clientの5種類だが、ゴニョゴニョすると増やすこともできるらしい。
さらに、id.attrsで色々追加情報を指定することもできる。ユーザーの登録に関する権限は組織の管理者に移譲しておいたほうが後々楽になる。
register
Fabric CAは、Hyperledger Fabricに最適化された認証局である。
そのためユーザーを登録する時にHyperledger Fabricで使う情報を付与することができる。一番重要なのはid.typeになる。
Registering and enrolling identities with a CA — Hyperledger Fabric CA Docs main documentation
id.type
id.typeを指定すると、X.509証明書の中のSubjectのOU属性にid.typeで指定したものが入る。
Subject: C = JP, ST = Tokyo, L = "...", O = Test, OU = user, CN = test-user
これは、MSPでロールを認識する時に利用される。(=すなわち、チャネルの変更権限などでどのロールなのかを識別する際に使う)
typeには以下を指定することができる
- User
- クライアントアプリケーションからのトランザクション提案やクエリを実行する役割。チェーンコードのインスタンス化や管理操作はしない。
- Peer
- ブロックチェーンネットワーク内でトランザクションを検証し、レジャーを保持する役割。
- Orderer
- トランザクションをブロックにまとめ、ネットワーク内のピアに配布する役割。
- Client
- ブロックチェーンネットワークに対するリクエストを発行するアプリケーションのユーザーや、システム管理者を表します。
- Admin
- ネットワーク内でより高い権限を持ち、チャネルや組織の設定、ポリシーの管理、チェーンコードのライフサイクル管理など、より高度な操作を行います。
id.attrs
attrsは複数あるので、オススメの設定をメモする。
hf.Registrar.Roles
Fabric CAに初回のregisterをするにはFabric CAの管理者権限(のLocal MSP)で行うはずだ。
他の人が、ユーザーを登録することを目的にFabric CAの管理者権限(のLocal MSP)を渡してしまうと、ユーザーの登録が目的なのに、Fabric CA自体の管理者権限を与えることになる。
なので、ユーザーを登録する権限だけを移譲するのが「hf.Registrar.Roles」になる。
ここには「Fabric CAに対してregisterできるid.type」を指定する。
hf.Registrar.Attributes
先述のhf.Registrar.Rolesと合わせて登録できるattrsの属性を指定することができる。
仮にhf.Registar.Rolesを許可してしまうと、Fabric CAの管理者が把握していないユーザーからユーザー登録が行われてしまったり、不都合が想定される。
そのため、attrsとして登録できる属性をここで絞り込むことができる。