使用 SASL 向 Kafka 进行身份验证
Kafka 支持使用简单身份验证和安全层 (SASL) 来对生产者和使用者进行身份验证。在使用大多数 Kafka 相关函数(如 KafkaSource)时,都可以使用 SASL 向 Kafka 进行 Vertica 身份验证。
Vertica 支持通过以下身份验证机制使用 SASL_PLAINTEXT 和 SASL_SSL 协议:
-
PLAIN
-
SCRAM-SHA-256
-
SCRAM-SHA-512
必须将 Kafka 群集配置为启用 SASL 身份验证。请参阅 Kafka 版本对应的 Kafka 文档以了解如何配置 SASL 身份验证。
注意
KafkaExport 目前不支持通过 SASL 身份验证使用 TLS/SSL。要在 Vertica 和 Kafka 之间使用 SASL 身份验证,请直接在 rdkafka 库中使用 kafka_conf 参数设置 SASL 相关配置选项。Vertica 使用此库来连接 Kafka。有关在 rdkafka 库中直接设置配置选项的详细信息,请参阅直接设置 Kafka 库选项。
相关配置选项有:
-
security.protocol
设置用于向 Kafka 进行身份验证的安全协议。 -
sasl.mechanism
设置安全机制。 -
sasl.username
设置要用于进行身份验证的 SASL 用户。 -
sasl.password
设置要用于进行 SASL 身份验证的密码。
有关所有 SASL 相关设置的列表,请参阅 rdkafka 配置文档。
以下示例演示了如何使用 SASL_PLAINTEXT
安全协议调用 KafkaCheckBrokers:
=> SELECT KafkaCheckBrokers(USING PARAMETERS
brokers='kafka01.example.com:9092',
kafka_conf='{"sasl.username":"dbadmin", "sasl.password":"pword", "sasl.mechanism":"PLAIN", "security.protocol":"SASL_PLAINTEXT"}'
) OVER ();
此示例演示了在通过 SSL 连接从 Kafka 复制数据时如何使用 SASL 身份验证。此示例假定 Vertica 和 Kafka 已经配置为使用 TLS/SSL 加密,如使用 Kafka 进行 TLS/SSL 加密所述:
=> COPY mytopic_table
SOURCE KafkaSource(
stream='mytopic|0|-2',
brokers='kafka01.example.com:9092',
stop_on_eof=true,
kafka_conf='{"sasl.username":"dbadmin", "sasl.password":"pword", "sasl.mechanism":"PLAIN", "security.protocol":"SASL_SSL"}'
)
FILTER KafkaInsertDelimiters(delimiter = E'\n')
DELIMITER ','
ENCLOSED BY '"';
有关在 rfkafka 库中使用 SASL 的详细信息,请参阅 rdkafka github 站点上的将 SASL 与 librdkafka 结合使用。