您可以通过角色与鉴权功能为每个生产者和消费者配置独立的角色,为不同角色赋予不同的命名空间资源的生产消费权限,以达到不同角色之间权限隔离的目的。当客户端进行消息生产或消费时,系统会进行鉴权,未被授权的操作将被拒绝。
这种机制有效实现了不同业务单元之间的权限隔离,既保障了消息系统的安全性,又满足了多团队协作场景下的资源管控需求,通过权限最小化原则从根本上避免了越权访问导致的数据混乱问题。
名词解释
角色(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. 单击提交,完成当前角色的创建。


角色授权
1. 在 TDMQ Pulsar 版控制台的 角色管理 中,找到新建的角色,通过以下任一种方式复制角色密钥:
单击密钥列的复制。


单击操作列的查看密钥,在查看密钥弹框中单击复制图标。


2. 将复制的角色密钥添加到客户端的参数中。
注意
密钥泄露很可能导致您的数据泄露,请妥善保管您的密钥。
在 Java 客户端中配置 JWT 鉴权:
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 鉴权:
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 版会自动为您创建角色并配置好相关权限,减少重复操作成本。
说明:
除「说明」字段外,所有字段必填。
权限仅支持“生产消息”,“消费消息”,多个权限用英文逗号间隔。
单次最多可导入 300 条数据。
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. 在删除的弹框中,单击确认,即可删除该权限。