原文地址: https://debezium.io/blog/2019/12/13/externalized-secrets/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
使用 Debezium 连接器实现秘密外部化
十二月 13, 2019 作者: Jiri Pechanec
mysql 的 秘密示例
当 Debezium 连接器部署到 Kafka Connect 实例时,有时需要对 Connect API 的其他用户隐藏数据库凭据。
让我们回顾一下 MySQL Debezium 连接器的连接器注册请求:
{
“name”: “inventory-connector”,
“config”: {
“connector.class”: “io.debezium.connector.mysql.MySqlConnector”,
“tasks.max”: “1”,
“database.hostname”: “mysql”,
“database.port”: “3306”,
“database.user”: “debezium”,
“database.password”: “dbz”,
“database.server.id”: “184054”,
“database.server.name”: “dbserver1”,
“database.whitelist”: “inventory”,
“database.history.kafka.bootstrap.servers”: “kafka:9092”,
“database.history.kafka.topic”: “schema-changes.inventory”
}
}
和作为纯字符串传递给 API username。password更糟糕的是,任何有权访问 Kafka Connect 集群及其 REST API 的人都可以发出请求GET来获取连接器的配置,包括数据库凭据:
curl -s http://localhost:8083/connectors/inventory-connector | jq .
{
“name”: “inventory-connector”,
“config”: {
“connector.class”: “io.debezium.connector.mysql.MySqlConnector”,
“database.user”: “debezium”,
“database.server.id”: “184054”,
“tasks.max”: “1”,
“database.hostname”: “mysql”,
“database.password”: “dbz”,
“database.history.kafka.bootstrap.servers”: “kafka:9092”,
“database.history.kafka.topic”: “schema-changes.inventory”,
“name”: “inventory-connector”,
“database.server.name”: “dbserver1”,
“database.whitelist”: “inventory”,
“database.port”: “3306”
},
“tasks”: [
{
“connector”: “inventory-connector”,
“task”: 0
}
],
“type”: “source”
}
如果一个 Kafka Connect 集群由多个连接器/团队共享,那么出于安全原因,这种行为可能是不可取的。