使用ACL功能进行访问控制

当需要对不同的用户或用户组授予不同级别的访问权限时,您可以使用云消息队列 Kafka 版专业版或Serverless实例的访问控制列表(ACL)功能,为SASL用户赋予对Topic、Group等资源的操作权限,实现细粒度的权限管理。

背景信息

企业A购买了云消息队列 Kafka 版,企业A希望用户A只能从云消息队列 Kafka 版的所有Topic中消费消息,而不能向云消息队列 Kafka 版的任何Topic生产消息。

注意事项

  • Kafka为公网/VPC类型实例提供默认SASL用户,默认SASL用户仅提供身份校验,支持所有Topic和Group的读写权限。如果需要更细致的权限控制,您需开启ACL,创建自定义SASL用户,按需赋予SASL用户向云消息队列 Kafka 版收发消息的权限。开启ACL之后,默认的SASL用户权限将失效。

  • 开启ACL后,不支持通过发送消息的方式自动创建Topic。

前提条件

您的云消息队列 Kafka 版实例必须满足以下条件:

  • 实例规格类型为专业版或Serverless版

  • 实例运行状态为服务中

  • 大版本为2.2.0版本及以上。如何升级实例大版本,请参见升级版本

  • 小版本为最新版。如何升级实例小版本,请参见升级实例版本

步骤一:开启ACL

升级实例的小版本后,在云消息队列 Kafka 版控制台为实例开启ACL。

  1. 登录云消息队列 Kafka 版控制台

  2. 概览页面的资源分布区域,选择地域。

  3. 实例列表页面,单击目标实例名称。

  4. 实例详情页面,单击概览区域右上角的开启 ACL

  5. 提示对话框,单击确认,然后手动刷新页面。

    手动刷新页面后,实例详情页面的基础信息区域,运行状态显示升级中。待实例的状态显示服务中说明开启ACL任务完成。

    重要

    升级完成后,实例才会开启ACL。您才可以创建SASL用户并为其授权,通过SASL接入点接入。升级预计需要15分钟~20分钟。

步骤二:创建SASL用户

实例开启ACL后,为用户A创建SASL用户。

  1. 登录云消息队列 Kafka 版控制台

  2. 概览页面的资源分布区域,选择地域。

  3. 实例列表页面,选择已经开启ACL的实例。

  4. 实例详情页面,单击SASL 用户管理页签。Serverless实例请在左侧导航栏选择权限管理 > SASL用户管理

  5. SASL 用户管理页面中,单击创建 SASL 用户

  6. 创建 SASL 用户面板,设置SASL用户,然后单击创建

    参数

    描述

    用户名

    SASL用户的名称。

    用户类型

    云消息队列 Kafka 版支持的SASL机制如下:

    • PLAIN: 一种简单的用户名密码校验机制。云消息队列 Kafka 版优化了PLAIN机制,支持不重启实例的情况下动态增加SASL用户。

    • SCRAM:一种用户名密码校验机制,安全性比PLAIN更高。云消息队列 Kafka 版非Serverless例使用SCRAM-SHA-256。Serverless实例支持SCRAM-SHA-512,并且是SCRAM的默认配置。

    密码

    SASL用户的密码。

    确认密码

    确认SASL用户的密码。

    创建完成后,SASL 用户管理页签下方显示您创建的SASL用户。

    • 如果您需要更改SASL用户的密码,单击其操作列的修改密码。在修改SASL用户密码面板,设置新密码确认新密码。单击确定

    • 如果您需要删除SASL用户,单击其操作列的删除

步骤三:授予SASL用户权限

为用户A创建SASL用户后,为该SASL用户授予从Topic和Consumer Group读取消息的权限。

  1. 实例详情页面,单击SASL 权限管理页签。

  2. SASL 权限管理页签,单击添加权限

  3. 添加权限面板,配置如下参数,然后单击确定

    预留实例参数配置

    参数

    描述

    用户名

    SASL用户的名称。云消息队列 Kafka 版支持通配符星号(*)表示所有用户名。

    资源类型

    云消息队列 Kafka 版支持授权的资源类型如下:

    • Topic:消息主题。

    • Group:消费组。

    • Cluster:实例。

    • TransactionalId:事务ID。

    匹配方式

    云消息队列 Kafka 版支持的匹配模式如下:

    • 完全匹配:只会匹配名称完全相同的资源。

    • 前缀匹配:匹配以输入的内容作为前缀的任意资源名称。

    资源名

    Topic、Group或Cluster的名称,或者是事务的ID。云消息队列 Kafka 版支持通配符星号(*)表示所有资源名。

    操作类型

    云消息队列 Kafka 版支持的操作类型如下:

    • 写入

    • 读取

    • 幂等写

    重要
    • 资源类型Group仅支持操作类型读取

    • 资源类型Cluster仅支持操作类型幂等写

    Serverless实例参数配置

    参数

    描述

    用户名

    SASL用户的名称。云消息队列 Kafka 版支持通配符星号(*)表示所有用户名。

    资源类型

    云消息队列 Kafka 版支持授权的资源类型如下:

    • Topic:消息主题。

    • Group:消费组。

    • Cluster:实例。

    • TransactionalId:事务ID。

    匹配方式

    云消息队列 Kafka 版支持的匹配模式如下:

    • 完全匹配:只会匹配名称完全相同的资源。

    • 前缀匹配:匹配以输入的内容作为前缀的任意资源名称。

    资源名

    Topic、Group或Cluster的名称,或者是事务的ID。云消息队列 Kafka 版支持通配符星号(*)表示所有资源名。

    来源IP

    限制IP可以允许访问或者拦截。

    授权方式

    • ALLOW:允许访问。

    • DENY:拒绝访问。

    操作类型

    云消息队列 Kafka 版支持的操作类型如下:

    • WRITE:写入

    • READ:读取

    • CREATE:创建

    • DELETE:删除

    • DESCRIBE:查看metadata信息和位点信息。

    • DESCRIBE_CONFIGS:查看配置信息。

    • IDEMPOTENT_WRITE:幂等写入。

    重要
    • 3.0以上的客户端默认开启幂等写入,需要设置enable.idempotence=true添加IDEMPOTENT_WRITE权限才能正常发送。

    • 当授权WRITEREADDELETEALTER任何一个权限时,默认具有DESCRIBE权限。

    • 资源类型Cluster仅支持操作类型IDEMPOTENT_WRITE

    配置完成之后,在SASL 权限管理页签,可设置资源类型匹配方式资源名用户名,单击查询,查看已创建的用户权限。

相关操作