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>
相关推荐
fendouweiqian7 小时前
AWS WAF(配合 CloudFront)基础防护配置:免费能做什么、要不要开日志、如何限制危险方法
网络安全·aws·cloudfront
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
indexsunny1 天前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
翼龙云_cloud1 天前
亚马逊云代理商: RDS 误删实例急救指南 5 步找回数据
服务器·云计算·aws
DO_Community1 天前
如何选择对象存储?Amazon S3 与 DigitalOcean Spaces 深度解析
运维·服务器·ai·aws·对象存储·云服务·金融科技
编程彩机1 天前
互联网大厂Java面试:从Spring Boot到分布式事务的技术场景解析
spring boot·kafka·分布式事务·微服务架构·java面试·技术解析
没有bug.的程序员1 天前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融
yumgpkpm1 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
TG_yunshuguoji1 天前
亚马逊云代理商: 深度解析AWS RDS备份机制 快照 vs PITR如何选?
服务器·云计算·aws
ApachePulsar1 天前
演讲回顾|谙流科技在 Kafka on Pulsar 之上的探索
分布式·科技·kafka