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 天前
AWS WAF中如何放行某个触发了托管规则的接口
aws·waf
whaledown1 天前
Kafka 与 Java 消息队列入门:用订单场景理解核心机制
java·kafka·消息队列·springboot
guslegend1 天前
第1章:初始Kafka
分布式·kafka
Devin~Y1 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
小马爱打代码2 天前
Kafka消息队列监控:Topic积压、吞吐量、Broker负载及消费者组全观测
分布式·kafka
Solis程序员2 天前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
悠悠121383 天前
AWS DevOps Agent 体验一周后,我决定把 oncall 手机调成静音了
云计算·aws·devops
yyuuuzz3 天前
独立站运营的几个技术层面常见问题
大数据·运维·服务器·网络·数据库·aws
yyuuuzz3 天前
游戏云服务器推荐的技术选择思路
大数据·运维·服务器·游戏·云计算·aws
linux修理工4 天前
使用codebuddy学习kafka
分布式·学习·kafka