Kafka Connect,JDBC连接器密码(明文)。如何避免?

时间:2020-01-24 16:14:57

标签: jdbc apache-kafka apache-kafka-connect

我有一个正在使用的jdbc源连接器,并且我一直在使用Postman进行测试和设置。数据库连接的密码为明文形式,只要我是唯一看到它的人就可以了。

    "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "connection.url": "jdbc:db2://db2server.mycompany.com:4461/myDB",
        "connection.user: "dbUser",
        "connection.password": "DBPASSinClearText!",
        "dialect.name": "Db2DatabaseDialect",
        "mode": "timestamp",
        "query": "select fname, lname, custId, custRegion, lastUpdate from CustomerMaster",
        "timestamp.column.name": "lastUpdate",
        "table.types": "TABLE",
        "topic.prefix": "master.customer"
    }
}

在生产中,部署团队是设置配置的人。有没有办法对此进行加密,因此我不必与该团队共享明文密码?

2 个答案:

答案 0 :(得分:4)

是的,您可以使用外部化凭据。这是通过KIP-297在Apache Kafka 2.0中添加的。

您可以使用外部凭据提供程序(一个基本示例是平面文件),然后使用它:

"connection.password": "DBPASSinClearText!",

您会有类似的内容:

"connection.password": "${file:/data/foo_credentials.properties:FOO_PASSWORD}",

Here's an example仅使用一个平面文件即可完成,并在the docs here

中全面了解有关功能的更多信息

答案 1 :(得分:2)

在我公司,我们在kafka connect顶部创建了一个API,在其中我们使用config和Hashicorp Vault中的变量作为值。

但是您可以使用https://docs.confluent.io/current/connect/security.html#externalizing-secrets文档中概述的ConfigProvider。如果您不适合将秘密存储在kafka中的纯文本配置文件中,则可以创建自己的ConfigProvider实现。