更新时间:2024-08-01 GMT+08:00
分享

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加密传输。

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作为大数据计算和分析平台,对客户输入的数据是否包含敏感信息无法感知,因此需要客户保证输入数据是脱敏的。
  • 客户可以根据应用环境,权衡配置安全与否。
  • 任何与安全有关的问题,请联系运维人员。

相关文档