大数据安全规范
一、概述
大数据的安全体系分为五个层次:周边安全、数据安全、访问安全(认证 - 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向管理员提出申请,经过评审通过后方可授予相应的权限