有没有办法在使用 JDBC 连接器写入 Kafka 主题之前加密数据?
Is there a way to encrypt data before writing to a Kafka topic using JDBC Connector?
我们刚开始使用 Kafka(Confluent 平台),并且有一个项目使用 JDBC 源连接器。使用这种方法,当数据存储在主题上时,是否也可以加密数据以隐藏个人信息等?或者我们需要采取不同的方法吗?
我知道如果我们使用生产者 API 我们会在写入主题之前进行加密 - 例如 . I have also found a KIP 讨论 desire 用于端到端加密,但似乎尚未实现。
我们将使用 TLS 来保护网络上的数据。
Kafka Connect 带有匿名化转换以隐藏个人信息,但不是加密。对于匿名化,您可以使用名为“MaskField”的 built-in 单消息转换 (SMT)(见下文)。加密功能尚不可用,但您始终可以自由地添加您的 custom SMT 使用您选择的加密方式。
根据 MaskField 上的文档,您可以使用它来
- 使用字段类型的有效空值(即 0、false、空字符串等)屏蔽指定字段,或
- 使用 属性.
替换任何字符串或数字字段
上述 link:
中还提供了配置的两种用法示例
# 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"
我们刚开始使用 Kafka(Confluent 平台),并且有一个项目使用 JDBC 源连接器。使用这种方法,当数据存储在主题上时,是否也可以加密数据以隐藏个人信息等?或者我们需要采取不同的方法吗?
我知道如果我们使用生产者 API 我们会在写入主题之前进行加密 - 例如
我们将使用 TLS 来保护网络上的数据。
Kafka Connect 带有匿名化转换以隐藏个人信息,但不是加密。对于匿名化,您可以使用名为“MaskField”的 built-in 单消息转换 (SMT)(见下文)。加密功能尚不可用,但您始终可以自由地添加您的 custom SMT 使用您选择的加密方式。
根据 MaskField 上的文档,您可以使用它来
- 使用字段类型的有效空值(即 0、false、空字符串等)屏蔽指定字段,或
- 使用 属性. 替换任何字符串或数字字段
上述 link:
中还提供了配置的两种用法示例# 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"