Cordaのflowの実行権限をユーザー権限によって管理する方法が理解できる。
はじめに
本稿について
この記事はCordaの実行ユーザー(以下RPCユーザー)に対して、flowの実行権限を付与する方法について解説します。英語のドキュメントはこちらからご覧ください。
Node設定
RPCユーザーに関する設定は、node.conf上の「users」ブロックにて設定します。設定内容は以下のとおり
- user: ユーザー名
- password: パスワード
- permissions: 許可する操作をリスト形式にて設定
つまりpermissionsのリストに許可するflowを列挙します。
すべての操作を許可する場合
全てのflowおよび操作を許可する場合は、permissionsに「ALL」と定義します。これによりあらゆる操作を許可します。
一部のflowのみを許可する場合
permissionsの要素として「StartFlow. + 実行権限を与えたいflowのパッケージ名」を設定します。
この時Corda標準のコマンドも任意に選択できますが、flowを実行したい場合は「InvokeRpc.registeredFlows」を併せて設定します。
再起動して、user1としてログインして期待通りの実行権限になっているか確認してみます。
「flow list」を実行した時は、すべてのflowが表示されあたかもすべてのflowに許可がされているようにも見えます。
許可されていない「IOUTransferFlow」を実行してみると、ユーザーに実行権限がない旨が表示されます。
「IOUIssueFlow」を実行すると、正しく実行できます。
参考:一部のflowのみを許可する場合(間違った例)
実行権限を与えたいflow「だけ」を設定してしまうと、flow実行時にエラーになります。
これはflowをトリガーする「registeredFlows」に実行権限がないためです。
おわりに
flowに対する実行権限を制御することでよりセキュアなシステムを構築できます。
是非ご活用ください。
<ご質問・ご要望の例>
- Corda Portalの記事について質問したい
- ブロックチェーンを活用した新規事業を相談したい
- 企業でのブロックチェーン活用方法を教えて欲しい 等々
SBI R3 Japan エンジニアリング部所属
ソリューションアーキテクト/PoC支援
This is the way. みんなでキャズムを超えていきましょう!