这种机制有效实现了不同业务单元之间的权限隔离,既保障了消息系统的安全性,又满足了多团队协作场景下的资源管控需求,通过权限最小化原则从根本上避免了越权访问导致的数据混乱问题。
一、名词解释
·角色(role):TDMQ Pulsar 版的“角色”是 TDMQ Pulsar 版内专有的概念,区别于腾讯云的“角色”,是用户自行在 TDMQ 内部做权限划分的最小单位,用户可以添加多个角色并为其赋予不同命名空间下的生产和消费权限。
·密钥(token):TDMQ Pulsar 版的“密钥”是一种鉴权工具,用户可以通过在客户端中添加密钥来访问 TDMQ Pulsar 版进行消息的生产消费。密钥和角色一一对应,每种角色都有其对应的唯一密钥。
二、使用场景
·用户需要安全地使用 TDMQ Pulsar 版进行消息的生产消费。
·用户需要对不同的命名空间设置不同角色的生产消费权限。
例如:一个公司有 A 部门和 B 部门,A 部门的系统产生交易数据,B 部门的系统根据这些交易数据做数据分析和展示。那么遵循权限最小化原则,可以配置两种角色,A 部门角色只授予往交易系统命名空间中生产消息的权限,B 部门则只授予消费消息的权限。这样可以很大程度避免由于权限不清带来的数据混乱、业务脏数据等问题。
三、新增角色
1. 登录 TDMQ Pulsar 版控制台。
2. 在左侧导航栏单击角色管理,选择地域和当前集群后,单击新建进入新建角色页面。
3. 在新建角色页面,填写角色名称和说明:
·角色:最长为32个字符,支持数字、大小写字母和分隔符("_","-")。
·说明(选填):不得超过128个字符。
4. 单击提交,完成当前角色的创建。
注意:CAM 验证功能说明:
注意:Pulsar 角色创建支持开启 CAM 验证能力,用于增强角色身份认证的安全性。该能力当前为申请制,如有需求请提交申请开通。
注意:开启 CAM 验证后,你需要设置密钥轮转周期。系统将根据所设周期自动执行密钥轮转托管,实现密钥的定期自动更新,无需人工干预。
四、角色授权
1. 在 TDMQ Pulsar 版控制台的 角色管理 中,找到新建的角色,通过以下任一种方式复制角色密钥:
方式一:密钥列复制方式二:操作列查看并复制 单击密钥列的复制。
单击操作列的查看密钥,在查看密钥弹框中单击复制图标。
2. 将复制的角色密钥添加到客户端的参数中。
注意:密钥泄露很可能导致你的数据泄露,请妥善保管你的密钥。
在 Java 客户端中配置 JWT 鉴权:
2.7.1版本及以上集群接入示例2.6.1版本集群接入示例PulsarClient client = PulsarClient.builder() //接入地址,在集群管理操作栏接入地址处复制 .serviceUrl("http://*") //替换成角色密钥,位于角色管理页面 .authentication(AuthenticationFactory.token("eyJh****")) .build();PulsarClient client = PulsarClient.builder() //接入地址,在集群管理-接入点列表完整复制 .serviceUrl("pulsar://*.*.*.*:6000/") //替换成角色密钥,位于角色管理页面 .authentication(AuthenticationFactory.token("eyJh****")) //custom:替换成路由ID,位于集群管理-接入点列表 .listenerName("custom:1********0/vpc-******/subnet-********") .build();
在 Go 客户端中配置 JWT 鉴权:
2.7.1版本及以上集群接入示例2.6.1版本集群接入示例client, err := NewClient(ClientOptions{ //接入地址,在集群管理-接入点列表完整复制 URL: "http://*", //替换成角色密钥,位于角色管理页面 Authentication: NewAuthenticationToken("eyJh****"), })client, err := NewClient(ClientOptions{ //接入地址,在集群管理-接入点列表完整复制 URL: "pulsar://*.*.*.*:6000", //替换成角色密钥,位于角色管理页面 Authentication: NewAuthenticationToken("eyJh****"), //custom:替换成路由ID,位于集群管理-接入点列表 ListenerName: "custom:1300*****0/vpc-******/subnet-********", })
3. 在 TDMQ Pulsar 版控制台的 命名空间 中,选择需要配置生产消费权限的一个命名空间,单击操作列的配置权限。
4. 单击添加角色,在下拉列表中找到刚刚新创建的角色,勾选上需要的权限,单击保存。
5. 检查权限是否生效。
你可以运行配置好的客户端访问对应命名空间中的 Topic 资源,按照刚刚配置的权限进行生产或消费,看是否会产生没有权限的报错信息,如果没有即代表配置成功。
五、批量导入角色
针对用户业务系统比较复杂,需要设置的角色权限较多的场景,TDMQ Pulsar 版提供批量导入角色功能,你可以参考我们提供的配置模板,填写好角色及权限等字段信息后上传到控制台,TDMQ Pulsar 版会自动为你创建角色并配置好相关权限,减少重复操作成本。
注意:说明:
1. 在角色管理列表页面,点击左上角的批量导入。
2. 在弹出的对话框中,下载好配置模板,按照要求填写好相关字段后保存。如下为一个填写示例:
| 角色名称 | 说明 | 集群名称 | 集群 ID | 命名空间 | 权限 |
| role-test | test | cluster-test | pulsar-xxxxxxxxxxxxx | env-test | 生产消息,消费消息 |
3. 在文件上传中,上传填写好的角色模板,TDMQ Pulsar 版会自动为你创建角色并配置好相关权限。
六、编辑权限
1. 在 TDMQ Pulsar 版控制台的 命名空间 中,找到需要配置生产消费权限的一个命名空间,单击操作列的配置权限,进入配置权限列表。
2. 在配置权限列表中,找到需要编辑权限的角色,单击操作列的编辑。
3. 在编辑的弹框中,修改权限信息后,单击保存。
七、删除权限
1. 在 TDMQ Pulsar 版控制台的 命名空间 中,找到需要配置生产消费权限的一个命名空间,单击操作列的配置权限,进入配置权限列表。
2. 在配置权限列表中,找到需要删除权限的角色,单击操作列的删除。
3. 在删除的弹框中,单击确认,即可删除该权限。