Amazon MSK 开启 Public 访问 SASL 配置的方法

1. 开启 MSK Public

1.1 配置 MSK 参数

  1. 进入 MSK 控制台页面,点击左侧菜单 Cluster configuration。
  2. 选择已有配置,或者创建新配置。
  3. 在配置中添加参数
    allow.everyone.if.no.acl.found=false
  4. 修改集群配置,选择到新添加的配置。

1.2 开启 Public

  1. 选中集群,进入集群配置页面,选择 Properties
  2. 找到 Networking settings,点击 Edit 菜单。
  3. 选择 Edit public access

2. 注意事项

由于 MSK 开启 Public 访问,必须要开启 SASL/IAM 认证方式。而 Amazon MSK 默认 allow.everyone.if.no.acl.found=true,所有用户都可以拥有权限,因为 MSK 没有 super user,但是当将 MSK 开启 public 之后,这个参数必须设置为 false。因此,如果当集群还未配置任何用户权限的情况下,将 allow.everyone.if.no.acl.found 设置为 false,会无法使用任何用户来访问 MSK。

3. 启用 SASL 后的解决方案

  1. 先创建 MSK 集群,开启 SASL 认证,通过 Secrets Manager,配置用户名密码,然后绑定到 MSK 集群,不启用 Public 访问。 具体的配置方法,可以参考 MSK Lab Workshop
  2. MSK 集群启动后,按如下命令配置用户权限。
powershell 复制代码
# 设置 MSK Cluster bostrap
export brokerssasl=xxxx:9096,xxxx:9096,xxxx:9096

# 生成用户认证文件
echo -n "security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \\
  username="<username>" \\
  password="<password>";
" > /tmp/client.properties_<username>```

# 给用户赋权
bin/kafka-acls.sh --bootstrap-server $brokerssasl \
        --add --allow-principal User:<username> --operation All --cluster '*' \
        --command-config /tmp/client.properties_<username>
        
        
bin/kafka-acls.sh --bootstrap-server $brokerssasl \
        --add --allow-principal User:<username> --operation All --group '*' \
        --command-config /tmp/client.properties_<username>```

--add --allow-principal User:<username> --operation All --cluster '*'没有包含消费者组权限,因此,还需要单独再给用户赋予组权限

  1. 集群修改配置,添加 allow.everyone.if.no.acl.found=false, 然后启用 Public
  2. 通过 public host 验证用户访问
powershell 复制代码
# 设置 MSK Cluster bostrap
export brokerssasl=xxxx:9096,xxxx:9096,xxxx:9096

# list
bin/kafka-topics.sh --list --bootstrap-server $brokerssasl --command-config /tmp/client.properties_<username>

# consumer
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server $brokerssasl --group group01 --topic test_topic --consumer.config --command-config /tmp/client.properties_<username>
相关推荐
殷紫川1 小时前
击穿 Kafka 高可用核心:分区副本、ISR 机制与底层原理全链路拆解
架构·kafka
岁岁种桃花儿2 小时前
Flink从入门到上天系列第二十五篇:Flink和Kafka连接时的精准一次性
大数据·flink·kafka
七夜zippoe3 小时前
消息队列选型:Kafka vs RabbitMQ vs Redis 深度对比
redis·python·kafka·消息队列·rabbitmq
LF3_4 小时前
监听数据库binlog日志变化,将变动实时发送到kafka
数据库·分布式·mysql·kafka·binlog·debezium
亚马逊云开发者17 小时前
给 AI 助手装个"记忆芯片"🧠:OpenClaw + S3 Vectors 搞定个人知识库
aws
攒了一袋星辰19 小时前
SequenceGenerator高并发有序顺序号生成中间件 - 架构设计文档
java·后端·spring·中间件·架构·kafka·maven
亚马逊云开发者1 天前
写了个 Skill 让 OpenClaw 自动查 AWS 账单,从此告别手动翻控制台
aws
Leon-Ning Liu1 天前
OGG同步Oracle到Kafka
数据库·oracle·kafka
guoguangwu1 天前
kafka容器增加健康检查
分布式·kafka
亚林瓜子1 天前
为AWS ElastiCache添加CPU和内存利用率告警
云计算·aws