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>
相关推荐
程序员沉梦听雨19 小时前
Kafka实现延迟消息
分布式·kafka
杰克逊的日记1 天前
kafka怎么保证消息不被重复消费
分布式·kafka
云攀登者-望正茂1 天前
使用 Datadog 和 Slack Alerts 监控 AWS EC2
云计算·aws·datadog
孤枫212 天前
aws平台练习B
云计算·aws
hi星尘2 天前
深入理解Apache Kafka
分布式·kafka·apache
IT成长日记2 天前
【Kafka基础】监控与维护:分区健康检查,确保数据高可用
分布式·kafka·健康检查·监控与维护
敏君宝爸2 天前
kafka 配置SASL认证
分布式·kafka
斯普信云原生组2 天前
kafka消费延迟
分布式·kafka
云攀登者-望正茂2 天前
通过AWS EKS 生成并部署容器化应用
云原生·kubernetes·aws
杰克逊的日记2 天前
kafka的topic扩容分区会对topic任务有什么影响么
分布式·kafka