在使用JDBC连接器写入Kafka主题之前,有没有办法加密数据?

时间:2020-10-23 17:07:17

标签: encryption apache-kafka apache-kafka-connect confluent-platform

我们刚开始使用Kafka(Confluent平台),并且有一个使用JDBC源连接器的项目。通过这种方法,当数据存储在主题上时,是否还可以加密数据以隐藏个人信息等?还是我们需要采取其他方法?

我知道,如果我们使用生产者API,我们将在写入主题之前进行加密-如here所述。我还发现有KIP讨论了端到端加密的 desire ,但似乎尚未实现。

我们将使用TLS保护线路上的数据。

1 个答案:

答案 0 :(得分:1)

Kafka Connect带有匿名化转换以隐藏个人信息,但是不加密。对于匿名化,您可以使用称为“ MaskField”的内置单个消息转换(SMT)(请参见下文)。加密功能尚不可用,但是您始终可以随意选择自己选择的加密方式来添加custom SMT

根据MaskField上的文档,您可以将其用于

  • 使用字段类型(即0,false,空字符串等)的有效null值屏蔽指定的字段,或者
  • 使用replace属性替换任何字符串或数字字段。

在上述链接中还提供了两种配置用法的示例:

# Mask Value
"transforms": "MaskField",
"transforms.MaskField.type": "org.apache.kafka.connect.transforms.MaskField$Value",
"transforms.MaskField.fields": "string_field"

# Replcae Value
"transforms": "SSNMask,IPMask,PhoneMask"

"transforms.SSNMask.type": "org.apache.kafka.connect.transforms.MaskField$Value"
"transforms.SSNMask.fields": "SSN"
"transforms.SSNMask.replacement": "***-***-****"

"transforms.IPMask.type": "org.apache.kafka.connect.transforms.MaskField$Value"
"transforms.IPMask.fields": "IPAddress"
"transforms.IPMask.replacement": "xxx.xxx.xxx.xxx"

"transforms.PhoneMask.type": "org.apache.kafka.connect.transforms.MaskField$Value"
"transforms.PhoneMask.fields": "office,mobile"
"transforms.PhoneMask.replacement": "+0-000-000-0000"