Flink安全认证机制说明
Flink认证和加密
- Flink集群中,各部件支持认证。
- Flink集群内部各部件和外部部件之间,支持和外部部件如YARN、HDFS、ZooKeeprer进行Kerberors认证。
- Flink集群内部各部件之间,如Flink client和JobManager、JobManager和TaskManager、TaskManager和TaskManager之间支持security cookie认证。
- Flink集群中,各部件支持SSL加密传输;集群内部各部件之间,如Flink client和JobManager、JobManager和TaskManager、TaskManager和TaskManager之间支持SSL加密传输。
详情可参考配置Flink认证和加密。
ACL控制
在HA模式下,支持ACL控制。
Flink在HA模式下,支持用ZooKeeper来管理集群和发现服务。ZooKeeper支持SASL ACL控制,即只有通过SASL(kerberos)认证的用户,才有往ZK上操作文件的权限。如果要在Flink上使用SASL ACL控制,需要在Flink配置文件中设置如下配置:
high-availability.zookeeper.client.acl: creator zookeeper.sasl.disable: false
具体配置项介绍请参考HA。
Web安全
Flink Web安全加固,支持白名单过滤,Flink Web只能通过YARN代理访问,支持安全头域增强。在Flink集群中,各部件的监测端口支持范围可配置。
- 编码规范:
- 说明:Web Service客户端和服务器间使用相同的编码方式,是为了防止出现乱码现象,也是实施输入校验的基础。
- 安全加固:web server响应消息统一采用UTF-8字符编码。
- 支持IP白名单过滤:
- 说明:防止非法用户登录,需在web server侧添加IP Filter过滤源IP非法的请求。
- 安全加固:支持IP Filter实现Web白名单配置,配置项是“jobmanager.web.allow-access-address”,默认情况下只支持YARN用户接入。
安装客户端之后需要将客户端节点IP追加到jobmanager.web.allow-access-address配置项中。
- 禁止将文件绝对路径发送到客户端:
- 说明:文件绝对路径发送到客户端会暴露服务端的目录结构信息,有助于攻击者遍历了解系统,为攻击者攻击提供帮助。
- 安全加固:Flink配置文件中所有配置项中如果包含以/开头的,则删掉第一级目录。
- 同源策略:
- 说明:如果两个URL的协议,主机和端口均相同,则它们同源;如果不同源,默认不能相互访问;除非被访问者在其服务端显示指定访问者的来源。
- 安全加固:响应头“Access-Control-Allow-Origin”头域默认配置为YARN集群ResourceManager的IP地址,如果源不是来自YARN的,则不能互相访问。
- 防范敏感信息泄露:
- 说明:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜现象。
- 安全加固:添加“Cache-control”、“Pragma”、“Expires”安全头域,默认值为:“Cache-Control:no-store”,“Pragma :no-cache”,“Expires : 0”。实现了安全加固,Flink和web server交互的内容将不会被缓存。
- 防止劫持:
- 说明:由于点击劫持(ClickJacking)和框架盗链都利用到框架技术,所以需要采用安全措施。
- 安全加固:添加“X-Frame-Options”安全头域,给浏览器提供允许一个页面可否在“iframe”、“frame”或“object”网站中的展现页面的指示,如果默认配置为“X-Frame-Options: DENY”,则确保任何页面都不能被嵌入到别的“iframe”、“frame”或“object”网站中,从而避免了点击劫持 (clickjacking) 的攻击。
- 对Web Service接口调用记录日志:
- 说明:对“Flink webmonitor restful”接口调用进行日志记录。
- 安全加固:“access log”支持配置:“jobmanager.web.accesslog.enable”,默认为“true”。且日志保存在单独的“webaccess.log”文件中。
- 跨站请求(CSRF)伪造防范:
- 说明:在B/S应用中,对于涉及服务器端数据改动(如增加、修改、删除)的操作必须进行跨站请求伪造的防范。跨站请求伪造是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
- 安全加固:现有请求修改的接口有2个post,1个delete,其余均是get请求,非get请求的接口均已删除。
- 异常处理:
- 说明:应用程序出现异常时,捕获异常,过滤返回给客户端的信息,并在日志中记录详细的错误信息。
- 安全加固:默认的错误提示页面,进行信息过滤,并在日志中记录详细的错误信息。新加四个配置项,默认配置为FusionInsight提供的跳转URL,错误提示页面跳转到固定配置的URL中,防止暴露不必要的信息。
表1 四个配置项参数介绍 参数
描述
默认值
是否必选配置
jobmanager.web.403-redirect-url
web403页面,访问若遇到403错误,则会重定向到配置的页面。
-
是
jobmanager.web.404-redirect-url
web404页面,访问若遇到404错误,则会重定向到配置的页面。
-
是
jobmanager.web.415-redirect-url
web415页面,访问若遇到415错误,则会重定向到配置的页面。
-
是
jobmanager.web.500-redirect-url
web500页面,访问若遇到500错误,则会重定向到配置的页面。
-
是
- HTML5安全:
- 说明:HTML5是下一代的Web开发规范,为开发者提供了许多新的功能并扩展了标签。这些新的标签及功能增加了攻击面,存在被攻击的风险(例如跨域资源共享、客户端存储、WebWorker、WebRTC、WebSocket等)。
- 安全加固:添加“Access-Control-Allow-Origin”配置,如运用到跨域资源共享功能,可对HTTP响应头的“Access-Control-Allow-Origin”属性进行控制。
Flink不涉及如客户端存储、WebWorker、WebRTC、WebSocket等安全风险。
安全声明
- Flink的安全都为开源社区提供和自身研发。有些是需要用户自行配置的安全特性,如认证、SSL传输加密等,这些特性可能对性能和使用方便性造成一定影响。
- Flink作为大数据计算和分析平台,对客户输入的数据是否包含敏感信息无法感知,因此需要客户保证输入数据是脱敏的。
- 客户可以根据应用环境,权衡配置安全与否。
- 任何与安全有关的问题,请联系运维人员。