通常,身份认证和加密传输是两项不相关的安全配置,在Kafka/MSK上,身份认证和加密传输是有一些耦合关系的,重点是:对于MSK来说,当启用IAM, SASL/SCRAM以及TLS三种认证方式时,TLS加密传输是必须的!只有设置为Unauthenticated(无认证)时,TLS加密才是可选的,但如果不显示配置PLAINTEXT的话,默认也是启用TLS加密的。
此外,还有一个非常有用的知识点,可以帮助我们快速确定MSK集群使用的认证和加密方式:
MSK认证方式 | MSK加密方式 | Bootstrap Server 端口 |
---|---|---|
Unauthenticated(无认证) | PLAINTEXT | 9092 |
Unauthenticated(无认证) | TLS | 9094 |
IAM | TLS | 9098 |
也就是说:通过端口号可以判断出MSK使用的认证和加密方式!
本文地址:https://laurence.blog.csdn.net/article/details/131696373,转载请注明出处!
我们再换一种描述方法:
1. 在MSK中,不管使用使用什么认证,如果不配置加密传输,则默认总是TLS加密传输的
2. 在MSK中,IAM, SASL/SCRAM和TLS三种认证方式必须配置为TLS加密传输
3. 在MSK中,只有Unauthenticated(无认证)可以自由选择PLAINTEXT传输和TLS加密传输,但是,如果不明确配置使用PLAINTEXT传输,默认还是使用TLS加密传输
我们来看3组典型配置,其中黑色命令行是使用aws kafka describe-cluster
命令输出的集群信息,白色页面是AWS MSK控制台的信息。
1. 无认证,无加密
在这份配置中,有一个重要的细节:PLAINTEXT的加密形式必须显示地配置!在使用aws kafka create-cluster-v2 --cli-input-json file://xxx
创建集群时,必须在Json文件中显式地配置:
"EncryptionInfo": {
"EncryptionInTransit": {
"ClientBroker": "PLAINTEXT",
"InCluster": false
}
}
如果没有这份显示配置,默认就会变成使用TLS加密了,也就是下面这种配置了:
2. 无认证,TLS加密
呼应第1种情形,实际上,在使用aws kafka create-cluster-v2 --cli-input-json file://xxx
创建集群时,这里的TLS是不需要配置的,默认总是启用TLS的。
3. IAM认证
使用IAM认证时,必须启用TLS加密传输!在使用aws kafka create-cluster-v2 --cli-input-json file://xxx
创建集群时,也是不需要显式配置TLS加密的,因为默认TLS加密总是启用的。
关于如何配置MSK的TLS加密传输,请参考官方文档:
https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html