• 沒有找到結果。

参考信息

10.2.4 准备安全认证

场景说明

在安全集群环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前 进行相互认证,以确保通信的安全性。

用户在提交Flink应用程序时,需要与Yarn、HDFS等之间进行通信。那么提交Flink的 应用程序中需要设置安全认证,确保Flink程序能够正常运行。

当前Flink系统支持认证和加密传输,要使用认证和加密传输,用户需要做如下准备:

应用开发指南 10 Flink 开发指南(安全模式)

安全认证

10-33 Flink 系统认证方式

Flink整个系统有三种认证方式:

● 使用kerberos认证:Flink yarn client与Yarn Resource Manager、JobManager与 Zookeeper、JobManager与HDFS、TaskManager与HDFS、Kafka与

TaskManager、TaskManager和Zookeeper。

● 使用security cookie进行认证:Flink yarn client与Job Manager、JobManager与 TaskManager、TaskManager与TaskManager。

● 使用YARN内部的认证机制:Yarn Resource Manager与Application Master(简 称AM)。

说明

● Flink的JobManager与YARN的AM是在同一个进程下。

● 如果用户安装安全模式需要使用kerberos认证和security cookie认证。

应用开发指南 10 Flink 开发指南(安全模式)

10-5 安全认证方式

安全认证方式 配置方法

Kerberos认证(当 前只支持keytab认 证方式)

1. 从FusionInsight Manager上下载用户keytab文件,并放置 到Flink客户端所在节点的某个目录下。

2. 在“flink-conf.yaml”上配置:

a. keytab路径。

security.kerberos.login.keytab: /home/flinkuser/keytab/flinkuser.keytab 说明“/home/flinkuser/keytab/”表示的是用户保存keytab文件的

目录。

b. principal名为用于运行作业的用户名。

security.kerberos.login.principal: flinkuser

c. 对于HA模式,如果配置了ZooKeeper,还需要设置ZK kerberos认证相关的配置。

zookeeper.sasl.disable: false

security.kerberos.login.contexts: Client

d. 如果用户对于Kafka client和Kafka broker之间也需要做 kerberos认证,配置如下:

security.kerberos.login.contexts: Client,KafkaClient

应用开发指南 10 Flink 开发指南(安全模式)

安全认证方式 配置方法 Security Cookie认

证 1. 用户需要获取SSL证书,放置到Flink客户端中。具体操作可 参考认证和加密。

2. 获取证书后,在Flink客户端的conf目录下配置文件“flink-conf.yaml”中将以下配置项进行赋值。

● 将配置项“security.ssl.key-password”、

“security.ssl.keystore-password”和

“security.ssl.truststore-password”设置为

<password>。

● 将配置项“security.ssl.keystore”设置为keystore文件的 相对路径如:ssl/flink.keystore。

● 将配置项“security.ssl.truststore”设置为truststore文 件的相对路径

如:ssl/flink.truststore。

● 将配置项“security.cookie”设置为一串密码,该密码可 以是一串随机规则密码。

说明

1. 认证和加密会将生成的flink.keystore、flink.truststore、

security.cookie自动填充到“flink-conf.yaml”对应配置项中。

2. “security.ssl.key-password”、“security.ssl.keystore-password”和“security.ssl.truststore-password”的值需要使 用Manager明文加密API进行获取:curl -k -i -u user

name:password -X POST -HContent-type:application/json -d '{"plainText":"password"}' 'https://x.x.x.x:

28443/web/api/v2/tools/encrypt';其中user name:password分别为当前系统登录用户名和密码;

"plainText"的password为调用“generate_keystore.sh”脚本 时的密码;x.x.x.x为集群Manager的浮动IP。

3. 打开“Security Cookie”开关,配置“security.enable:

true”,查看“security cookie”是否已配置成功,例如:

security.cookie:

ae70acc9-9795-4c48-ad35-8b5adc8071744f605d1d-2726-432e-88ae-dd39bfec40a9

YARN内部认证方

式 该方式是YARN内部的认证方式,不需要用户配置。

说明

当前一个Flink集群只支持一个用户,一个用户可以创建多个Flink集群。

应用开发指南 10 Flink 开发指南(安全模式)