Kafka社区终于在0.9.0.0版本正式添加了安全特性,并在0.10.0.0版本中进一步完善。当前Kafka安全主要包含三大功能:认证(authentication)、信道加密(encryption)和授权(authorization)。Kafka包括的安全特性如下:
- 连接认证机制,包含服务器端与客户端(生产者/消费者)连接、服务器间连接以及服务器与工具间连接。支持的认证机制包括SSL(TLS)或SASL。
- 服务器与Zookeeper之间连接的认证机制。
- 基于SSL的连接通道数据传输加密。
- 客户端读/写授权。
- 支持可插拔的授权服务和与外部授权服务的集成。
简单普及一下认证(authentication)和授权(authorization)的区别:
认证就是证明你是谁的过程,当访问Kafka服务时你必须显式地提供身份信息来证明你的身份是合法的;
授权则是验证你能访问哪些服务的过程。
举个简单的例子,在一个配置了认证和授权的Kafka集群中,只有合法的生产者(已认证)才被允许向Kafka集群发送PRODUCE请求,而发给broker的PRODUCE请求是否会被真正处理则需要该生产者有对应的权限--通常生产者必须拥有主题写入的权限(topic write),即该生产者必须是已授权的。