配置 Topic 读写权限

最近更新时间:2025-08-20 12:19:12

我的收藏

操作场景

CKafka 实例开启 SASL 认证后,只有通过认证的 SASL 用户才能访问 CKafka 资源。ACL(Access Control List)策略支持为不同的 SASL 用户设置不同的 Topic 级别的生产/消费权限,实现用户之间的权限隔离,增强对公网/内网传输中的用户访问控制。

约束与限制

添加路由策略时设置的接入方式只影响接入时的验证方式,设置的 ACL 策略是全局的,二者相互配合共同保障集群的安全性和访问控制。
如果您在使用 SASL 方式接入 CKafka 同时还使用了 PLAINTEXT 方式接入 CKafka,为 Topic 设置的 ACL 仍然会生效。若您希望 PLAINTEXT 方式的访问不受影响,请为 PLAINTEXT 需要访问的 Topic 添加全部用户的可读写权限。
如果 Topic 已经有其他云产品在使用(例如:日志服务 CLS 的日志投递、云函数 SCF 消息转储、大数据 EMR 组件的消费等),开启 ACL 策略相当于对这些联动能力的权限加以限制,会直接导致这些能力不可用,请一定谨慎操作。对于此类情况建议生产同一份数据到另一个 Topic 做分别处理,不要在同一个 Topic 上配置统一的 ACL 策略。

配置 ACL 策略

步骤1:开启 SASL 认证

在配置 ACL 策略前,您需要为实例开启 SASL 认证。不同接入方式的差异和具体的操作步骤请参考网络连接说明


步骤2:创建用户

说明:
只有通过 SASL 认证的用户才能触发后续的 ACL 策略校验,如您已拥有合适的用户,可以跳过此步骤。
请您妥善保存好用户名和密码,避免泄露,后续在使用客户端生产消费消息时,需要配置此参数。
1. 登录 CKafka 控制台
2. 在左侧导航栏选择实例列表,选择好地域后,单击目标实例的“ID”,进入实例基本信息页面。
3. 在实例基本信息页面,选择 ACL 策略管理 > 用户管理页签,单击新建,输入用户名和密码。
用户名:需符合命名规则,只能包含字母、数字、下划线、“-”、“.”。
密码:需符合密码,至少要包含小写字母、大写字母、数字、特殊字符[()`~!@#$^&*-_=|{}[]:;',.?/]中的2项。
4. 单击提交,完成创建,在用户管理列表页面,可以复制用户名。


步骤3:设置 Topic 读写权限

ACL 策略指为用户自定义的一组权限规则,允许/拒绝用户 user 通过 IP 读/写 Topic 资源。
1. 登录 CKafka 控制台
2. 在左侧导航栏选择实例列表,选择好地域后,单击目标实例的“ID”,进入实例基本信息页面。
3. 在实例基本信息页面,选择 ACL 策略管理 > 策略列表页签,单击批量配置,进入配置 ACL 策略页面。
4. 在“匹配方式”处,设置 Topic 资源匹配规则。
说明:
Kafka 2.4.1及以上版本的实例支持批量勾选、按前缀模糊匹配预设规则三种方式选择生效 Topic,Kafka 2.4.1 以下版本实例仅支持批量勾选预设规则两种方式。您可以通过以下页签查看不同匹配方式的配置说明:
批量勾选
按前缀模糊匹配
预设规则
用于选择多个需要配置相同 ACL 策略的 Topic,您可以直接在“选择 Topic”处批量勾选需要设置的 Topic。

说明:
单次批量操作中,​​所有勾选 Topic 的名称总字节数需在255字节以下。若超限将导致操作失败,建议分批操作,每批建议勾选不超过10个 Topic。
支持按 Topic 名称前缀模糊匹配并为匹配到的 Topic 配置相同的 ACL 策略,规则创建后,存量和新增按指定前缀命名的 Topic 都将配置该 ACL 策略。
规则名称:设置模糊匹配规则的名称,需符合命名规则,必须以字母开头,只能包含字母、数字、下划线、“-”、“.”。
按前缀匹配:输入匹配字符,下方会自动展示匹配的 Topic 清单。

预设一套 ACL 策略,创建后,新建 Topic 时可以在高级参数设置中勾选配置该 ACL 策略。详情请参考创建 Topic
规则名称:设置预设规则的名称,需符合命名规则,必须以字母开头,只能包含字母、数字、下划线、“-”、“.”。
自动应用至后续所有新增 Topic:开启后,后续新创建的 Topic 会自动配置这套规则。

说明:
每个实例最多配置100条预设规则。
5. 在“ACL 策略”处,设置用户的访问规则。
说明:
配置权限后,若您未配置允许策略,则默认拒绝。
若同一对象同时配置了允许和拒绝权限,则优先拒绝。
参数
说明
操作权限
ACL 策略的操作权限分为两大类:允许规则和拒绝规则。
若只设置允许规则,则除允许的规则外的其他 IP 都无法连接实例。
若只设置拒绝规则,则除拒绝的规则外的其他 IP 需要设置了允许规则后才可以连接实例。
若同时设置允许规则和拒绝规则,则只有允许规则中的 IP 可以连接实例,其他 IP 都无法连接实例。
用户
选择您要设置权限的用户,若用户为空,则默认为全部用户添加权限。
IP或网段
填写你要设置权限的 IP,支持输入多个 IP 或网段,用 ; 隔开,若 IP 为空,则默认为全部 IP 添加权限。
3.2.x 版本的实例暂不支持配置网段。
策略
选择策略生效的动作,即向 Topic 读或写消息。暂不支持同时选择读和写,如有需要,请分开设置两条 ACL 策略。
6. 单击提交,完成 ACL 策略创建。
7. 验证权限是否生效。您可以通过 SASL 接入点接入消息队列 CKafka 版并使用 PLAIN/SCRAM 机制消费消息(参见 SDK 文档)。

管理 ACL 策略

Topic 已匹配的 ACL 策略会展示在策略列表资源页签下,通过按前缀模糊匹配预设规则方式创建的预设 ACL 策略会展示在预设规则页签下。

查看和修改 Topic 权限

1. 在 ACL 策略列表页面,选择资源页签,列表会展示当前实例下已创建的 Topic。
2. 单击目标 Topic 操作列的编辑 ACL 策略,可以查看该 Topic 配置的策略详情。在该页签,您可以执行如下操作:
在左上角单击新建,直接在当前 Topic 下新建 ACL 策略。

在操作栏单击删除,删除 Topic 配置的 ACL 策略,删除后该规则将不再生效。


查看和修改预设规则

1. 在 ACL 策略列表页面,选择预设规则页签,列表会展示当前实例下已创建预设规则。
2. 单击目标规则操作栏的详情,您可以查看预设规则详情,并选择是否开启自动应用至后续所有新增 Topic

3. 单击目标规则操作栏的删除,可以删除该预设规则。
对于不同方式创建的预设规则,删除后对历史已生效规则的处理方式存在差异,具体说明如下:
按前缀模糊匹配:对历史已匹配该规则的 Topic,该规则将直接失效。
预设规则:对历史已匹配该规则的 Topic,该规则持续生效。