flink1.12怎么通过kerberos认证读取kafka数据

发布时间:2021-06-28 14:48:34 作者:chen
来源:亿速云 阅读:1389
# Flink 1.12 如何通过 Kerberos 认证读取 Kafka 数据

## 前言

在大数据生态系统中,安全认证是生产环境不可或缺的一环。Apache Flink 作为流处理框架,与 Kafka 集成时经常需要配置 Kerberos 认证。本文将详细介绍 Flink 1.12 如何通过 Kerberos 认证读取 Kafka 数据。

---

## 环境准备

在开始配置前,请确保以下条件已满足:

1. **Flink 1.12** 集群已部署
2. **Kafka 集群** 已启用 Kerberos 认证
3. 已获取以下关键文件:
   - `keytab` 文件(如 `user.keytab`)
   - `krb5.conf` Kerberos 配置文件
   - Kafka 的 JAAS 配置文件

---

## 核心配置步骤

### 1. 配置 Kerberos 环境

将 `krb5.conf` 文件放置到 Flink 所有节点的 `/etc/` 目录下(或通过 `java.security.krb5.conf` 参数指定路径):

```bash
cp krb5.conf /etc/krb5.conf

2. 准备 JAAS 配置文件

创建 JAAS 文件(如 kafka_client_jaas.conf),内容如下:

KafkaClient {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/path/to/user.keytab"
  principal="user@YOUR-REALM.COM";
};

3. 配置 Flink 启动参数

flink-conf.yaml 中添加以下参数:

security.kerberos.login.keytab: /path/to/user.keytab
security.kerberos.login.principal: user@YOUR-REALM.COM
security.kerberos.login.contexts: KafkaClient

或在提交作业时通过命令行指定:

-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
-Djava.security.krb5.conf=/etc/krb5.conf

Kafka Source 示例代码

Properties props = new Properties();
props.setProperty("bootstrap.servers", "kafka-broker:9092");
props.setProperty("group.id", "flink-consumer");
props.setProperty("security.protocol", "SASL_PLNTEXT");
props.setProperty("sasl.mechanism", "GSSAPI");
props.setProperty("sasl.kerberos.service.name", "kafka");

FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(
    "your-topic",
    new SimpleStringSchema(),
    props
);

DataStream<String> stream = env.addSource(consumer);

常见问题排查

1. 认证失败(GSSException)

2. 连接超时

3. 权限不足


完整部署流程

  1. keytabjaas 文件分发到所有 TaskManager 节点
  2. 通过以下方式启动 Flink 作业:
    
    ./bin/flink run \
     -Djava.security.auth.login.config=/path/to/jaas.conf \
     -Dyarn.security.credentials.hdfs.enabled=true \
     -c com.YourJob /path/to/your-job.jar
    

总结

通过正确配置 Kerberos 和 JAAS,Flink 1.12 可以安全地接入启用 Kerberos 的 Kafka 集群。关键点包括: - 确保所有节点有统一的 Kerberos 配置 - 正确传递安全参数到 JVM - 在代码中指定 SASL 协议

生产环境中建议结合密钥管理系统(如 HashiCorp Vault)动态管理 keytab 文件,进一步提升安全性。 “`

注:实际部署时需根据具体环境调整以下参数: - YOUR-REALM.COM - /path/to/ 文件路径 - Kafka broker 地址和服务名 - 具体的 topic 和 consumer group 配置

推荐阅读:
  1. 三、hadoop用户认证--kerberos
  2. 为kafka开启kerberos

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kafka kerberos flink

上一篇:Android如何抓取CSDN首页极客头条内容

下一篇:Spring boot中怎么实现Nosql功能

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》