大数据安全规范
大数据安全规范
一、概述
大数据的安全体系分为五个层次:周边安全、数据安全、访问安全(认证 - authentication和授权 - authorization)、访问行为可见、错误处理和异常管理。下面依次说明:
1.周边安全技术即传统意义上提到的网络安全技术,如防火墙等;
2.数据安全包括对数据的加解密,又可细分为存储加密和传输加密;还包括对数据的脱敏;
3.访问安全主要是对用户的认证和授权两个方面:
用户认证(Authentication)
即是对用户身份进行核对, 确认用户即是其声明的身份, 这里包括用户和服务的认证
用户授权(Authorization)
即是权限控制,对特定资源, 特定访问用户进行授权或拒绝访问。用户授权是建立再用户认证的基础上,没有可靠的用户认证谈不上用户授权。
访问安全还包括数据验证(data validation)
1> type. int string等
2> format. phone email等
3> length.
4> range.
5> precense or absence.
6> match in lookup tables.
7> other bussiness rules
4.访问行为可见多指记录用户对系统的访问行为(审计和日志):如查看哪个文件;运行了哪些查询;访问行为监控一方面为了进行实时报警,迅速处置危险的访问行为;另一方面为了事后调查取证,从长期的数据访问行为中分析定位特定的目的。
5.错误处理和异常管理
这个主要是针对错误发现,一般做法是建立并逐步完善的监控系统,对可能发生或已发生的情况进行预警或者告警。还包括异常攻击事件监测,目前发现的针对攻击的办法有:
1>攻击链分析,按照威胁检测的时间进行分析,描述攻击链条
2>相同类型的攻击事件进行合并统计
3>异常流量学习正常访问流量,流量异常时进行告警
在这五个层次中,第三层(访问安全)同业务的关系最为直接:应用程序的多租户,分权限访问控制都直接依赖这一层的技术实现,那么我们的重点也将放在这一层上。众所周知的是, hadoop本身提供的认证(主要是kerberos)不易维护,授权(主要是ACL)又很粗粒度,为此我们通过对两个重量级公司(Cloudera和Hortonworks)开源的关于安全的服务进行对比(参见博文)后决定使用Hortonworks开源的Ranger。 Ranger为企业级hadoop生态服务提供了许多安全套件,通过集中化权限管理为用户/组提供文件、文件夹、数据库、表及列的认证、授权控制,还可以提供审计(通过solr进行查询),新推出的RangerKMS还支持对hdfs数据加密等
二、大数据平台安全规范之访问安全
2.1用户身份认证
通过Ranger提供的用户/组同步功能实现认证,Ranger可以整合Unix或者LDAP进行用户认证管理
2.2 用户权限管理
2.2.1 账号管理
帐号分为运维帐号和开发用户帐号。
运维帐号按服务拆为多个账号,不同的账号操作不同的服务,具体如下:
服务 | 用户 |
Flume | flume |
HDFS | hdfs |
MapReduce | mapred |
HBase | hbase |
Hive | hive |
Kafka | kafka |
Oozie | oozie |
Ranger | ranger |
Spark | spark |
Sqoop | sqoop |
Storm | storm |
YARN | yarn |
ZooKeeper | zookeeper |
Ambari Metrics | ams |
开发用户账号,每个用户一个帐号,按团队分组,不同的账号或组操作不同的文件或表,如果需要操作别人的数据,需要运维进行授权
2.2.2 目录和文件规范
目录 | 规则 |
/source | 主要存储原始采集的日志,存储规则如下: /source/{业务名称}/{日期},其中: 业务名称: 比如发送记录等 日期: 格式统一为yyyyMMdd |
/data | 存储的规范和source一样, 数据仓库之前的文件临时目录 清理时间待定 |
/workspace | 工作空间,存储规则如下:/workspace/{团队名称}/{业务名称|产品名称} 对方 |
/user | 用户空间,存储用户私有数据,仅用户自己可以访问。按照开发人员 自己的习惯组织存储文件,用于存储用户的测试数据, 清理时间待定 |
/user/hive/warehouse | 存储hive仓库,按照团队创建库;公共日志按照业务名进行创建, 每个团队可以创建一个属于团队的hive库 |
/temp | 用来存储一些临时文件
每月清理一次 |
2.2.3 用户权限管理
权限管理有2种方案,ACL方案(粗粒度)和 ranger方案(细粒度),基于我们的数据需求,先考虑使用ranger提供的细粒度权限控制
使用Ranger UI界面进行权限的管理,目前各个服务提供的权限如下:
服务 | 服务详情 | 权限 |
HDFS | hdfs path | Read、Write、Execute |
HBase | table、column family、column | Read、Write、Create、Admin |
Hive | database、table|function、column | Select、Update、Create、Drop、Alter、Index、Lock、All |
YARN | queue | Submit-job、Admin-queue |
Kafka | topic | Publish、Consume、Configure、Describe、Kafka Admin |
团队权限分配
团队 | 团队成员组 | 服务 | 权限 |
dp(数据平台) | dp | HDFS | Read、Write、Execute |
HBase | Read、Write | ||
Hive | Select | ||
YARN | Submit-job | ||
Kafka | Publish、Consume、Configure、Describe | ||
dm(数据挖掘) | dm | HDFS | Read、Write、Execute |
HBase | Read、Write | ||
Hive | Select | ||
YARN | Submit-job | ||
da(数据应用) | da | HDFS | Read、Write、Execute |
HBase | Read、Write | ||
Hive | Select | ||
YARN | Submit-job | ||
op(运维) | hadoop管理员 | HDFS、HBase、Hive、YARN、Kafka | All |
个人帐号:在线上操作要精确到个人
申请权限流程:
每个团队的leader向管理员提出申请,经过评审通过后方可授予相应的权限