密码屏蔽仅适用于 JDBC 连接器

Posted

技术标签:

【中文标题】密码屏蔽仅适用于 JDBC 连接器【英文标题】:Password masking only works for JDBC Connectors 【发布时间】:2022-01-08 17:20:12 【问题描述】:

我们已将 Kafka Connect 设置为能够从文件中读取凭据,而不是直接在连接器配置中提供它们。连接器配置的登录部分如下所示:

"connection.user": "$file:/kafka/pass.properties:username",

“连接.密码”: "$file:/kafka/pass.properties:password",

我们还将这两行添加到“connect-distributed.properties”文件中:

config.providers=文件

config.providers.file.class=org.apache.kafka.common.config.provider.FileConfigProvider

请注意,它非常适用于 JDBC 连接器,因此 pass.properties 文件没有问题。但是对于其他连接器,例如 couchbase、rabbitmq、s3 等,它会导致问题。当我们直接提供凭据时,所有这些连接器都可以正常工作,但是当我们尝试让 Connect 从文件中读取它们时,会出现一些错误。可能是什么原因?我在这里没有看到任何 JDBC 特定的配置。

编辑:

connect.log 中关于 couchbase 的错误:

[2021-12-02 11:50:19,580] ERROR [com.couchbase.io][SaslAuthenticationFailedEvent][20ms] Authentication Failure - Potential causes: invalid credentials or if LDAP is enabled ensure PLAIN SASL mechanism is exclusively used on the PasswordAuthenticator (insecure) or TLS is used (recommended) "circuitBreaker":"DISABLED","coreId":"0xbf785c7500000001","remote":"10.30.142.109:11210","status":"UNKNOWN","type":"KV","xerror":"ref":"ae3ce600-7097-4077-9231-8ced290cd399" (com.couchbase.io:533)
[2021-12-02 11:50:19,580] WARN [com.couchbase.endpoint][EndpointConnectionFailedEvent][23ms] Connect attempt 9 failed because of AuthenticationFailureException: Authentication Failure - Potential causes: invalid credentials or if LDAP is enabled ensure PLAIN SASL mechanism is exclusively used on the PasswordAuthenticator (insecure) or TLS is used (recommended) "circuitBreaker":"DISABLED","coreId":"0xbf785c7500000001","remote":"10.30.142.109:11210","type":"KV" (com.couchbase.endpoint:523)
com.couchbase.client.core.error.AuthenticationFailureException: Authentication Failure - Potential causes: invalid credentials or if LDAP is enabled ensure PLAIN SASL mechanism is exclusively used on the PasswordAuthenticator (insecure) or TLS is used (recommended) "circuitBreaker":"DISABLED","coreId":"0xbf785c7500000001","remote":"10.30.142.109:11210","status":"UNKNOWN","type":"KV","xerror":"ref":"ae3ce600-7097-4077-9231-8ced290cd399"
        at com.couchbase.client.core.io.netty.kv.SaslAuthenticationHandler.failConnect(SaslAuthenticationHandler.java:488)
        at com.couchbase.client.core.io.netty.kv.SaslAuthenticationHandler.maybeFailConnect(SaslAuthenticationHandler.java:293)
        at com.couchbase.client.core.io.netty.kv.SaslAuthenticationHandler.channelRead(SaslAuthenticationHandler.java:250)
        at com.couchbase.client.core.io.netty.kv.MemcacheProtocolVerificationHandler.channelRead(MemcacheProtocolVerificationHandler.java:84)
        at java.lang.Thread.run(Thread.java:748)

它说明了一些关于身份验证的内容,但在直接给出凭据时可以正常工作。如果屏蔽不能正常工作,它如何用于 JDBC 连接器?

【问题讨论】:

请提供一些日志 添加了一些错误日志@IskuskovAlexander ConfigProvider 接口对所有连接器都是通用的。您的错误似乎特定于我没有使用过的 Couchbase。 S3错误是否类似? 是的,错误都是关于身份验证的。问题其实已经解决了,自己来回答吧。 【参考方案1】:

看起来问题是 pass.properties 文件中的引号。有趣的是,即使输入的凭据带或不带引号,JDBC 连接器也能正常工作。也许原因是它是文件中的第一行,但可能性很小。

因此,即使某些连接器以这种方式工作,也不要在密码文件中使用引号。

【讨论】:

出于好奇,您能否分享一个坏属性文件与好的属性文件的示例? 坏的:usr="admin" pass="admin" 好的:usr=admin pass=admin @dnault 谢谢。这看起来像是 JDBC 连接器中的一个错误——如果密码的第一个和最后一个字符实际上是引号怎么办?似乎 JDBC 连接器会忽略它们并使用错误的密码:-D @dnault 是的,屏蔽现在对我来说有点不可靠。包含 % 的密码也有问题。

以上是关于密码屏蔽仅适用于 JDBC 连接器的主要内容,如果未能解决你的问题,请参考以下文章

Android Geocoder 是不是仅适用于互联网连接?

AsyncSocket 连接仅适用于家庭网络

Apache重写规则仅适用于新连接

iphone 模拟器地理定位功能是不是仅适用于以太网/有线网络连接?

Mongo“身份验证失败”仅适用于远程连接。本地工作正常

一文学会JDBC(两万字,适用于新手)