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>
相关推荐
面向Google编程7 小时前
Kafka 成了 Agent 的「共享内存」,Flink 成了它的「大脑」
flink·kafka·agent
Lucifer三思而后行10 小时前
转换率 90%,然后呢?
ai·aws
醉颜凉11 小时前
Kafka ISR与AR深度解析:副本同步机制核心概念
分布式·架构·kafka·ar
2601_962295991 天前
Spark 和 Kafka 实现 Python 大规模情感分析
python·spark·kafka·情感分析·大规模处理
spter。1 天前
从一次关注到最终一致:Canal、Outbox 与 Kafka 如何解决关系链双写问题
分布式·kafka
creator_Li1 天前
Kafka的死信队列
kafka
想要打 Acm 的小周同学呀2 天前
Kafka消息队列出现挤压如何解决?
分布式·kafka
2501_930472442 天前
03_AWS迁移腾讯云_组件差异风险清单与工作量WBS
云计算·腾讯云·aws
富士康质检员张全蛋2 天前
Kafka实战 自定义分区器 几种常见的分区器
分布式·kafka
starzy19902 天前
Flink基础之Flink批流数据读取处理案例剖析:从文件到 Kafka 的完整代码
大数据·flink·kafka