Как написать пользовательский SMT в Kafka Source Connector для обфускации личных данных

#apache-kafka #apache-kafka-connect

#apache-kafka #apache-kafka-connect

Вопрос:

Предположим, что я хочу настроить исходный соединитель Kafka для перекачки некоторых данных из моей базы данных в мою Kafka. Теперь предположим, что из соображений безопасности я хочу обфускировать (скажем, применить хэш-функцию) к некоторым столбцам в моей БД. Есть ли стандартный способ сделать это с помощью Kafka Connect, или мне нужно сначала создать частные темы, а затем написать пользовательский код для создания общедоступных версий этих тем (с хешированными значениями для конфиденциальных данных)?

Я знаю, что есть такая вещь, как преобразования (MaskField и т. Д.), Но ни одно из них, похоже, не решает мою проблему. Например, MaskField делает что-то вроде 1-234-567-8987 -> «****», чего я не хочу, потому что я все еще хочу иметь разные записи для разных входных значений.

Ответ №1:

Kafka Connect позволяет очень удобно писать собственное преобразование одного сообщения (SMT). Если ни одно из преобразований по умолчанию не служит вашей цели, вы можете создать пользовательский преобразователь.

В этом блоге объясняется, как создать свой собственный, вместе с полным примером, представленным на GitHub:

Вам необходимо реализовать Transformation<R> и переопределить apply() метод с помощью вашего пользовательского алгоритма для обработки личных данных.

Когда вы компилируете этот код как JAR и делаете его доступным для Kafka Connect через plugin.path указанный в файле свойств Connect worker, преобразования можно настроить в свойствах соединителя.