
# Flink安全认证机制说明
#### Flink认证和加密
- Flink集群中，各部件支持认证。
  - Flink集群内部各部件和外部部件之间，支持和外部部件如YARN、HDFS、ZooKeeper进行Kerberos认证。
  
  - Flink集群内部各部件之间，如Flink client和JobManager、JobManager和TaskManager、TaskManager和TaskManager之间支持security cookie认证。
   

- Flink集群中，各部件支持SSL加密传输；集群内部各部件之间，如Flink client和JobManager、JobManager和TaskManager、TaskManager和TaskManager之间支持SSL加密传输。 详情可参考[配置Flink认证和加密](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1583.html)。
  
 
#### 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](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0592.html#mrs_01_0592__section1546125184115)。
#### 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用户接入。
    ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
    安装客户端之后需要将客户端节点IP追加到jobmanager.web.allow-access-address配置项中。
    
   
- 禁止将文件绝对路径发送到客户端：
  - 说明：文件绝对路径发送到客户端会暴露服务端的目录结构信息，有助于攻击者遍历了解系统，为攻击者攻击提供帮助。
  
  - 安全加固：Flink配置文件中所有配置项中如果包含以/开头的，则删掉第一级目录。
   
- 同源策略： 适用于MRS 3.x及之后版本。
  - 说明：如果两个URL的协议，主机和端口均相同，则它们同源；如果不同源，默认不能相互访问；除非被访问者在其服务端显示指定访问者的来源。
  
  - 安全加固：响应头"Access-Control-Allow-Origin"头域默认配置为YARN集群ResourceManager的IP地址，如果源不是来自YARN的，则不能互相访问。
   
- 防范敏感信息泄露： 适用于MRS 3.x及之后版本。
  - 说明：带有敏感数据的Web页面都应该禁止缓存，以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜现象。
  
  - 安全加固：添加"Cache-control"、"Pragma"、"Expires"安全头域，默认值为："Cache-Control：no-store"，"Pragma ：no-cache"，"Expires ： 0"。实现了安全加固，Flink和web server交互的内容将不会被缓存。
   
- 防止劫持： 适用于MRS 3.x及之后版本。
  - 说明：由于点击劫持（ClickJacking）和框架盗链都利用到框架技术，所以需要采用安全措施。
  
  - 安全加固：添加"X-Frame-Options"安全头域，给浏览器提供允许一个页面可否在"iframe"、"frame"或"object"网站中的展现页面的指示，如果默认配置为"X-Frame-Options: DENY"，则确保任何页面都不能被嵌入到别的"iframe"、"frame"或"object"网站中，从而避免了点击劫持 (clickjacking) 的攻击。
   
- 对Web Service接口调用记录日志： 适用于MRS 3.x及之后版本。
  - 说明：对"Flink webmonitor restful"接口调用进行日志记录。
  
  - 安全加固："access log"支持配置："jobmanager.web.accesslog.enable"，默认为"true"。且日志保存在单独的"webaccess.log"文件中。
   
- 跨站请求（CSRF）伪造防范： 适用于MRS 3.x及之后版本。
  - 说明：在B/S应用中，对于涉及服务器端数据改动（如增加、修改、删除）的操作必须进行跨站请求伪造的防范。跨站请求伪造是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
  
  - 安全加固：现有请求修改的接口有2个post，1个delete，其余均是get请求，非get请求的接口均已删除。
   
- 异常处理： 适用于MRS 3.x及之后版本。
  - 说明：应用程序出现异常时，捕获异常，过滤返回给客户端的信息，并在日志中记录详细的错误信息。
  
  - 安全加固：默认的错误提示页面，进行信息过滤，并在日志中记录详细的错误信息。新加四个配置项，默认配置为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安全： 适用于MRS 3.x及之后版本。
  - 说明：HTML5是下一代的Web开发规范，为开发者提供了许多新的功能并扩展了标签。这些新的标签及功能增加了攻击面，存在被攻击的风险（例如跨域资源共享、客户端存储、WebWorker、WebRTC、WebSocket等）。
  
  - 安全加固：添加"Access-Control-Allow-Origin"配置，如运用到跨域资源共享功能，可对HTTP响应头的"Access-Control-Allow-Origin"属性进行控制。
    ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
    Flink不涉及如客户端存储、WebWorker、WebRTC、WebSocket等安全风险。
    
   
 
#### 安全声明
- Flink的安全都为开源社区提供和自身研发。有些是需要用户自行配置的安全特性，如认证、SSL传输加密等，这些特性可能对性能和使用方便性造成一定影响。
- Flink作为大数据计算和分析平台，对客户输入的数据是否包含敏感信息无法感知，因此需要客户保证输入数据是脱敏的。
- 客户可以根据应用环境，权衡配置安全与否。
- 任何与安全有关的问题，请联系运维人员。
 
