MST

星途 面试题库

面试题:消息队列Kafka架构中的安全机制之认证方式有哪些

请详细阐述Kafka架构中常见的认证方式,比如SSL、SASL等,说明它们各自的原理和适用场景。
23.7万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

SSL(Secure Sockets Layer)

  • 原理
    • 握手阶段:客户端和Kafka broker发起连接时,通过SSL握手协议协商加密算法、密钥等参数。例如,客户端发送支持的加密套件列表,broker从中选择合适的套件。同时,broker向客户端发送自己的数字证书,客户端验证证书的有效性,包括证书是否由受信任的证书颁发机构(CA)签名、证书是否过期等。如果broker需要双向认证,客户端也需向broker发送自己的证书。
    • 数据传输阶段:握手成功后,双方使用协商好的加密算法(如AES)和密钥对传输的数据进行加密和解密。比如,消息在从生产者发送到broker,以及从broker发送到消费者的过程中,都处于加密状态,保证数据的保密性和完整性。
  • 适用场景
    • 对数据安全要求极高的场景:如金融行业,在处理资金交易相关的消息时,确保消息在传输过程中不被窃取或篡改,防止敏感信息泄露。
    • 跨网络传输消息场景:当Kafka集群跨越不同的网络区域,如公有云与私有云之间传输数据,使用SSL可以防止网络中间人攻击,保障数据在不可信网络中的安全传输。

SASL(Simple Authentication and Security Layer)

  • 原理
    • 机制选择:SASL提供多种认证机制,如PLAIN、SCRAM - SHA - 256等。客户端和broker首先协商使用哪种认证机制。例如,对于PLAIN机制,客户端直接将用户名和密码以明文形式发送给broker(实际在传输前会进行base64编码),broker通过内部配置的用户信息(如存储在Kafka配置文件中的用户名密码对,或者连接外部的用户管理系统,如LDAP)进行验证。对于SCRAM - SHA - 256机制,客户端和broker通过多次消息交互,使用加盐哈希等技术对密码进行验证,避免密码以明文形式传输。
    • 授权:认证成功后,Kafka根据配置的访问控制列表(ACL)对通过认证的用户进行授权,决定其对Kafka主题、分区等资源的操作权限,如是否可以读取、写入某个主题。
  • 适用场景
    • 企业内部多用户访问场景:在企业内部,多个团队或用户需要访问Kafka集群。通过SASL可以实现不同用户的身份认证和权限管理,例如,开发团队的用户可能只有对开发环境主题的读写权限,而运维团队的用户可能有更高级的管理权限。
    • 结合外部用户管理系统场景:当企业已经有成熟的用户管理系统(如LDAP)时,使用SASL可以方便地与外部系统集成,复用现有的用户信息,减少用户管理的成本和复杂度。