8. 部署PWK账户模式的链
8.1. 使用cmc搭建长安链网络
长安链支持PermissionWithCert、PermissionWithKey、Public等三种不同账户模式的链,本章节我们将详细介绍如何通过cmc命令行工具搭建完整的长安链PermissionWithKey模式的账户体系,以及如果管理该模式下的链账户,包括组织账户、节点账户、用户账户的增删等。
本文示例说明:
创建新链:4组织,1共识节点/每组织,1管理员/每组织
链管理:组织管理、节点管理、用户管理
8.1.1. 部署cmc命令行工具
长安链CMC工具可用于生成公私钥,部署PermissionWithKey模式的长安链前,我们需要通过长安链CMC工具生成相关的公私钥文件。 长安链命令行工具cmc安装, 请参考长安链命令行工具
8.1.2. 基于cmc工具生成公钥账户
由于pwk模式无证书概念,因此对于节点、管理员以及用户而言,都是公私钥的形式。 节点账户的地址需要添加到共识列表,管理员账户需要添加到管理员列表; 而普通用户账户,需要管理员单独进行注册。
8.1.2.1. 生成节点账户
# 生成节点账户私钥
$ ./cmc key gen -a ECC_P256 -p ./ -n consensus1.key
# 导出节点账户公钥
$ ./cmc key export_pub -k consensus1.key -n consensus1.pem
# 计算节点账户地址
$ ./cmc cert nid --node-pk-path=./consensus1.pem
node id : QmchuAwzWLLhKWTU6ok8DHHb1QGLFG9bB8wYRUTGJpeXp5
# 查看节点账户(公钥)
$ cat consensus1.pem
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+TKd7KW8GfQYi9hYsrD7TSarF6iJ
OHo8Hp42++YW6sevy3UmXcLDLi01z7UO5eQGm/E7O8pACp2RCsueAwbTIA==
-----END PUBLIC KEY-----
8.1.2.2. 生成admin账户
# 生成管理员私钥
./cmc key gen -a ECC_P256 -p ./ -n admin.key
# 导出管理员公钥
./cmc key export_pub -k admin.key -n admin.pem
# 查看管理员公钥(账户)
$ cat admin.pem
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsIYfDrQCt1/H8Yj5KKKD+uO28zz7
nTovDgim/jezoGdpmNOUp6lwrN47pxBUpnxEXIqHBwz8uaVR1z3y9kDvTg==
-----END PUBLIC KEY-----
重复以上步骤分别生成org1,org2,org3以及org4组织的节点账户和管理员账户。
8.1.3. 基于生成的节点账户和管理员账户创建链
获取的节点账户和管理员账户,需要在启动链时,将他们配置到链配置文件bc1.yml
的trust_roots
里,并将bc1.yml
和chainmaker.yml
中的nodes.node_id
替换为以上获取的节点nodeId。
配置文件修改位置如下
bc1.yml(链配置文件)
#共识配置
consensus:
# 共识类型(0-SOLO,1-TBFT,2-MBFT,3-MAXBFT,4-RAFT,10-POW)
type: 1
# 共识节点列表,组织必须出现在trust_roots的org_id中,每个组织可配置多个共识节点,节点地址采用libp2p格式
nodes:
- org_id: "wx-org1.chainmaker.org"
node_id:
- "QmchuAwzWLLhKWTU6ok8DHHb1QGLFG9bB8wYRUTGJpeXp5"
- org_id: "wx-org2.chainmaker.org"
node_id:
- "QmeyNRs2DwWjcHTpcVHoUSaDAAif4VQZ2wQDQAUNDP33gH"
- org_id: "wx-org3.chainmaker.org"
node_id:
- "QmXf6mnQDBR9aHauRmViKzSuZgpumkn7x6rNxw1oqqRr45"
- org_id: "wx-org4.chainmaker.org"
node_id:
- "QmRRWXJpAVdhFsFtd9ah5F4LDQWFFBDVKpECAF8hssqj6H"
trust_roots:
- org_id: "wx-org1.chainmaker.org"
root:
- "../config/wx-org1.chainmaker.org/keys/admin/wx-org1.chainmaker.org/admin.pem"
- org_id: "wx-org2.chainmaker.org"
root:
- "../config/wx-org1.chainmaker.org/keys/admin/wx-org2.chainmaker.org/admin.pem"
- org_id: "wx-org3.chainmaker.org"
root:
- "../config/wx-org1.chainmaker.org/keys/admin/wx-org3.chainmaker.org/admin.pem"
- org_id: "wx-org4.chainmaker.org"
root:
- "../config/wx-org1.chainmaker.org/keys/admin/wx-org4.chainmaker.org/admin.pem"
chainmaker.yml (节点配置文件)
# Network Settings
net:
# Network provider, can be libp2p or liquid.
# libp2p: using libp2p components to build the p2p module.
# liquid: a new p2p module we build from 0 to 1.
# This item must be consistent across the blockchain network.
provider: LibP2P
# The address and port the node listens on.
# By default, it uses 0.0.0.0 to listen on all network interfaces.
listen_addr: /ip4/0.0.0.0/tcp/11301
# The seeds peer list used to join in the network when starting.
# The connection supervisor will try to dial seed peer whenever the connection is broken.
# Example ip format: "/ip4/127.0.0.1/tcp/11301/p2p/"+nodeid
# Example dns format:"/dns/cm-node1.org/tcp/11301/p2p/"+nodeid
seeds:
- "/ip4/127.0.0.1/tcp/11301/p2p/QmchuAwzWLLhKWTU6ok8DHHb1QGLFG9bB8wYRUTGJpeXp5"
- "/ip4/127.0.0.1/tcp/11302/p2p/QmeyNRs2DwWjcHTpcVHoUSaDAAif4VQZ2wQDQAUNDP33gH"
- "/ip4/127.0.0.1/tcp/11303/p2p/QmXf6mnQDBR9aHauRmViKzSuZgpumkn7x6rNxw1oqqRr45"
- "/ip4/127.0.0.1/tcp/11304/p2p/QmRRWXJpAVdhFsFtd9ah5F4LDQWFFBDVKpECAF8hssqj6H"
节点部署和链启动
节点部署目录如下图所示:
.
├── bin
│ ├── chainmaker
│ ├── chainmaker.service
│ ├── docker-vm-standalone-start.sh
│ ├── docker-vm-standalone-stop.sh
│ ├── init.sh
│ ├── panic.log
│ ├── restart.sh
│ ├── run.sh
│ ├── start.sh
│ └── stop.sh
├── config
│ └── wx-org1.chainmaker.org
├── lib
│ ├── libwasmer.dylib
│ └── wxdec
└── log
在启动节点之前,需要将以上部署过程中用到的各个节点公私钥、管理员公私钥替换为以上用cmc生成的公私钥对。
同时各个节点部署目录下的bc.yml
和chainmaker.yml
配置文件按照以上说明进行修改。
配置更新说明
# 以组织org1为例说明
./config
└── wx-org1.chainmaker.org
├── chainconfig
│ └── bc1.yml # 更新后的链配置文件,参考上节说明
├── chainmaker.yml # 更新后的节点配置文件,参考上节说明
├── keys
│ ├── admin
│ │ ├── wx-org1.chainmaker.org
│ │ │ └── admin.pem #组织1管理员公钥
│ │ ├── wx-org2.chainmaker.org
│ │ │ └── admin.pem #组织2管理员公钥
│ │ ├── wx-org3.chainmaker.org
│ │ │ └── admin.pem #组织3管理员公钥
│ │ └── wx-org4.chainmaker.org
│ │ └── admin.pem #组织4管理员公钥
│ ├── node
│ │ ├── common1 #optional
│ │ │ ├── common1.key
│ │ │ ├── common1.nodeid
│ │ │ └── common1.pem
│ │ └── consensus1
│ │ ├── consensus1.key #共识节点私钥
│ │ ├── consensus1.nodeid #共识节点nodeId
│ │ └── consensus1.pem #共识节点公钥
│ └── user
│ ├── admin1 #optional
│ │ ├── admin1.key
│ │ └── admin1.pem
│ ├── client1 #optional
│ │ ├── client1.addr
│ │ ├── client1.key
│ │ └── client1.pem
│ └── light1 #optional
│ ├── light1.key
│ └── light1.pem
└── log.yml
启动节点
启动pwk模式的链与启动证书模式的链使用的方式类似,可以参考证书模式。在密钥生成步骤使用./prepare_pwk.sh
脚本即可。
docker部署方式,参考docker方式-启动节点
命令行部署方式,参考通过命令行部署链
按照以上方式启动org1、org2、org3和org4下的共识节点,等到所有节点建立连接。表明区块链网络部署成功,并可以对外提供区块链服务。
节点日志如下:
[INFO] [Net] libp2pnet/libp2p_connection_supervisor.go:116 [ConnSupervisor] all necessary peers connected.
8.1.4. 部署/调用智能合约
启动成功后,可进行部署/调用合约测试,以验证链是否正常运行。
此处提供示例合约的已编译之后的合约文件,可直接下载文件并部署合约。
Rust:rust-fact-2.0.0.wasm
8.1.4.1. 使用CMC工具测试
客户端账户包含client和admin两种类型,admin一般具有更高的链上权限,我们这里以admin为例进行测试
使用长安链命令行工具cmc进行测试,详细教程请见命令行工具pwk 其中cmc工具配置文件sdk_config_pwk.yaml需要进行相应修改,主要修改以下配置:
客户端私钥:user_sign_key_file_path
chain_client:
# 链ID
chain_id: "chain1"
# 组织ID
org_id: "wx-org1.chainmaker.org"
# 客户端用户交易签名私钥路径
user_sign_key_file_path: "./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key" #组织1管理员私钥文件
# 签名使用的哈希算法,和节点保持一直
crypto:
hash: SHA256
auth_type: permissionedWithKey
# 默认支持TimestampKey,如果开启enableNormalKey则使用NormalKey
enable_normal_key: false
nodes:
- # 节点地址,格式为:IP:端口:连接数
node_addr: "127.0.0.1:12301"
# 节点连接数
conn_cnt: 10
- # 节点地址,格式为:IP:端口:连接数
node_addr: "127.0.0.1:12302"
# 节点连接数
conn_cnt: 10
archive:
# 数据归档链外存储相关配置
type: "mysql"
dest: "root:123456:localhost:3306"
secret_key: xxx
rpc_client:
max_receive_message_size: 16 # grpc客户端接收消息时,允许单条message大小的最大值(MB)
max_send_message_size: 16 # grpc客户端发送消息时,允许单条message大小的最大值(MB)%
注:由于我们使用管理员账户进行测试,所以user_sign_key_file_path需要指定管理员私钥
8.1.4.2. 使用长安链SDK进行测试
通过长安链SDK进行部署/调用,详情SDK使用说明章节
需要将SDK所需的相关账户替换成,上文所生成的账户,然后进行操作。
8.2. 链管理
在长安链中,不同的账户一般绑定不同的角色,具有不同的权限。 为了提高安全性,长安链默认设置了许多权限,部分操作需要多个管理员多签才能完成。
8.2.1. 管理链的组织
添加共识节点Org
./cmc client chainconfig consensusnodeorg add \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4,QmaWrR72CbT51nFVpNDS8NaqUZjVuD4Ezf8xcHcFW9SJWF \
--node-org-id=wx-org5.chainmaker.org
删除共识节点Org
./cmc client chainconfig consensusnodeorg remove \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-org-id=wx-org5.chainmaker.org
更新共识节点Org
./cmc client chainconfig consensusnodeorg update \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-ids=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4,QmaWrR72CbT51nFVpNDS8NaqUZjVuD4Ezf8xcHcFW9SJWF \
--node-org-id=wx-org5.chainmaker.org
8.2.2. 管理链的节点
组织的节点账户生成,参考生成节点账户
8.2.2.1. 共识节点
增加共识节点
./cmc client chainconfig consensusnodeid add \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org5.chainmaker.org
更新共识节点Id
./cmc client chainconfig consensusnodeid update \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-id=QmXxeLkNTcvySPKMkv3FUqQgpVZ3t85KMo5E4cmcmrexrC \
--node-id-old=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org5.chainmaker.org
删除共识节点
./cmc client chainconfig consensusnodeid remove \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--node-id=QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4 \
--node-org-id=wx-org5.chainmaker.org
查询共识节点
共识节点可以通过链配置查询,在consensus
字段下会返回当前区块链网络中的共识节点列表,命令如下:
./cmc client chainconfig query \
--sdk-conf-path=./testdata/sdk_config_pwk.yml
#...
"consensus": {
"nodes": [
{
"node_id": [
"QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4"
],
"org_id": "wx-org1.chainmaker.org"
},
{
"node_id": [
"QmVviBSVY4xK2161hFWh2v4Wh5ThGAgBiPtXV8XjzVbzPW"
],
"org_id": "wx-org2.chainmaker.org"
},
{
"node_id": [
"QmbBhed1jeFMkFazYnvVJiqp9RAxnnjA6wxiPVkgAdbeDT"
],
"org_id": "wx-org3.chainmaker.org"
},
{
"node_id": [
"QmdyLwr6ahCQeSixfw72E17rqn8s4vLewzJgYR64eEeQvD"
],
"org_id": "wx-org4.chainmaker.org"
}
],
"type": 1
},
8.2.2.2. 同步节点管理
增加同步节点
更新同步节点Id
删除同步节点
查询同步节点
8.2.3. 管理链的用户
8.2.3.1. 管理链的管理员账户
添加管理员
# 生成管理员私钥
./cmc key gen -a ECC_P256 -p ./ -n admin.key
# 导出管理员公钥
./cmc key export_pub -k admin.key -n admin.pem
./cmc client chainconfig trustroot add \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--trust-root-org-id=wx-org5.chainmaker.org \
--trust-root-path=./admin.pem
删除管理员
./cmc client chainconfig trustroot remove \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--trust-root-org-id=wx-org5.chainmaker.org \
--trust-root-path=./admin.pem
更新管理员
./cmc client chainconfig trustroot update \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--org-id=wx-org1.chainmaker.org \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--trust-root-org-id=wx-org5.chainmaker.org \
--trust-root-path=./admin.pem
查询管理员列表
./cmc client chainconfig query \
--sdk-conf-path=./testdata/sdk_config_pwk.yml
[
{
"org_id": "wx-org1.chainmaker.org",
"root": [
"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzR4qsOr2+cwcLlU4klgXB8DugCJZ\n+XrJDzIisQeA2gmldqY3PSsF4adMSUYN+ux+EnoAB6BpejQqj0IeQ6RJ9g==\n-----END PUBLIC KEY-----\n"
]
},
{
"org_id": "wx-org2.chainmaker.org",
"root": [
"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjgS2zVaZkds9dQb/ZN535lFAlmgG\nCw5Z4NITw/AOeo01zyMJNUzoQMzjkmBbvuF3rAszkVeAXIkT3eCfGLdR2Q==\n-----END PUBLIC KEY-----\n"
]
},
{
"org_id": "wx-org3.chainmaker.org",
"root": [
"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4Xr9k3xGxEVAXlrKQyqLjoJoWyTe\nEQOQ9h4KJw/3ua4UhWgGOkrd5QCBgtdBh6gthmMfdUsFOTrnMPya/CSdZw==\n-----END PUBLIC KEY-----\n"
]
},
{
"org_id": "wx-org4.chainmaker.org",
"root": [
"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw+mHR4CwRr/m0tzpBrX6+FXavFtw\nPqWqgl7t3hYe7VWqA74vEmnj+K0jpEfXgsvGBMfQt3mLZWNlzAzujy9Y4w==\n-----END PUBLIC KEY-----\n"
]
},
]
8.2.3.2. 管理链的普通账户
在长安链pwk模式下,普通账户需要管理员注册后,才具有访问链的权限。
注册账户
# 生成普通账户私钥
./cmc key gen -a ECC_P256 -p ./ -n user.key
# 导出账户公钥
./cmc key export_pub -k user.key -n user.pem
# 管理员注册新账户
./cmc pubkey add \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--chain-id=chain1 \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--key-org-id=wx-org1.chainmaker.org \
--role=client \
--pubkey-file-path=./user.pem #使用公钥注册
删除账户
./cmc pubkey del \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--chain-id=chain1 \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key
--key-org-id=wx-org1.chainmaker.org \
--pubkey-file-path=./user.pem
账户查询
# 查询注册结果
./cmc pubkey query \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--chain-id=chain1 \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--pubkey-file-path=./user.pem
==> "org_id = wx-org1.chainmaker.org, role = CLIENT"
8.3. 权限管理
长安链目前支持资源级别的权限管理,可以通过cmc命令行工具或者sdk来查询、新增、修改以及删除资源权限。
8.3.1. 权限列表查询
./cmc client chainconfig permission list \
--sdk-conf-path=./testdata/sdk_config_pwk.yml
pwk模式下默认权限列表,请参考pwk模式权限定义。
8.3.2. 权限列表修改
新增权限 权限修改相关的操作一般需要多数管理员多签授权,假如我们有个资源名叫:TEST_SUM, 需要设置为”任一用户可以访问”, 使用cmc命令设置权限权限如下:
./cmc client chainconfig permission add \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--sync-result=true \
--permission-resource-name="TEST_SUM" \
--permission-resource-policy-rule=ANY \
--permission-resource-policy-roleList=CLIENT
修改权限
使用cmc命令修改TEST_SUM资源权限为多数管理员多签操作
./cmc client chainconfig permission update \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--sync-result=true \
--permission-resource-name="TEST_SUM" \
--permission-resource-policy-rule=MAJORITY \
--permission-resource-policy-roleList=ADMIN
删除权限
使用cmc命令删除TEST_SUM资源的权限限制,删除后节点权限校验模块不会对该资源进行权限检查
./cmc client chainconfig permission delete \
--sdk-conf-path=./testdata/sdk_config_pwk.yml \
--admin-org-ids=wx-org1.chainmaker.org,wx-org2.chainmaker.org,wx-org3.chainmaker.org \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org2.chainmaker.org/admin/admin.key,./testdata/crypto-config/wx-org3.chainmaker.org/admin/admin.key \
--sync-result=true \
--permission-resource-name="TEST_SUM"
注:除了自定义资源的权限设置外,长安链也支持默认权限的修改, 但无法删除默认权限, 与证书模式类似。