证书管理体系
ChainMaker区块链网络中使用的证书类型有三大类:
CA证书
- 细分为根CA证书、中间CA证书、自签CA证书,其余两类证书都是使用CA证书签名生成。
- 每个组织一个CA证书。通过 chainmaker-cryptogen生成。
- 本组织的所有节点证书以及用户证书都是由此CA证书签发生成。
节点证书
- 细分为共识节点、同步节点、轻节点使用的证书。同步节点和轻节点证书类型相同。
- 每个组织至少有一个共识节点,也可以部署多个。
- 每个组织可以有若干同步和轻节点,也可以不部署。
- 每个节点都会有一个节点TLS证书和一个节点SIGN证书
- 节点TLS证书用于跟客户端建立tls链接,使用CA证书签发获得
- 用于签名验签等等,使用CA证书签发获得
用户证书
- 细分为管理员用户证书、普通用户证书。分别对应管理员权限和普通用户权限。
- 每个组织至少有一个管理员用户和若干个普通用户
- 每个用户都会有一个用户TLS证书和一个用户SIGN证书
- 用户TLS证书用于跟节点建立tls链接,使用CA证书签发获得
- 用户SIGN证书用于签名验签等等,使用CA证书签发获得。
角色管理体系
在长安链2.X版本中,面向强权限控制场景,我们实现了两种身份权限管理模型:
-
PermissionedWithCert:基于数字证书的用户标识体系、基于角色的权限控制体系;
-
PermissionedWithKey:基于公钥的用户标识体系、基于角色的权限控制体系。
在长安链2.X版本中,面向弱权限控制场景,我们实现了一种身份权限管理模型:
-
Public:基于公钥的用户标识体系、基于角色的权限控制体系。
长安链中,定义了以下几种角色类型:
- 共识节点 consensus:有权参与区块共识流程的链上节点;
- 同步节点common:无权参与区块共识流程,但可在链上同步数据的节点;
- 管理员 admin:可代表组织进行链上治理的用户;
- 普通用户 client:无权进行链上治理,但可发送和查询交易的用户;
- 轻节点用户light:无权进行链上治理,无权发送交易,只可查询、订阅自己组织的区块、交易数据,属于SPV轻节点用户。
长安链中,若采用数字证书(PermissionedWithCert)作为用户标识,需要在证书字段中,附加组织和角色等信息。
例如,X.509标准的数字证书中的Organization字段,需要填写长安链中的组织信息。OrganizationalUnit字段,需要填写长安链中的角色信息。
- 共识节点证书“使用者”字段信息示例如下:
OU = consensus
O = ljh-org1.qianjinlian.com
- 同步节点或轻节点证书“使用者”字段信息示例如下:
OU = common
O = ljh-org1.qianjinlian.com
- admin用户证书“使用者”字段信息示例如下:
OU = admin
O = ljh-org1.qianjinlian.com
- client用户证书“使用者”字段信息示例如下:
OU = client
O = ljh-org1.qianjinlian.com
- 轻节点用户证书“使用者”字段信息示例如下:
OU = light
O = ljh-org1.qianjinlian.com
若用户采用非长安链CA(chainmaker-ca)或证书生成工具(chainmaker-cryptogen)颁发的数字证书,需要利用外部证书兼容的功能,来参与链上活动。
目前长安链的用户、节点的签名证书(即业务证书)支持使用BJCA、CFCA等国家认可的第三方CA颁发的外部证书。因TLS证书仅作用于通信层,故无需使用外部证书
权限管理体系
长安链采用三段式语法定义资源的访问权限:规则 (rule)、组织列表 (orgList)、角色列表 (roleList)
规则:以关键字的形式描述了需要多少个组织的用户共同认可才可访问资源,合法的规则包括:
- ALL:要求 orgList 列表中所有组织参与,每个组织至少提供一个符合 roleList 要求角色的签名;
- ANY:要求 orgList 列表中任意一个组织提供符合 roleList 要求角色的签名