数智资源网
首页 首页 云计算 查看内容

云计算安全研究

木马童年 2018-7-21 11:14 525 0

摘 要 目前云计算当中的安全问题日益凸显,文章主要介绍了在Hadoop平台上使用Kerberos认证机制进行访问控制以避免恶意用户入侵,同时介绍对Hadoop进行灾难备份确保数据的安全性。 关键词 云计算安全;Kerberos;灾 ...

摘 要 目前云计算当中的安全问题日益凸显,文章主要介绍了在Hadoop平台上使用Kerberos认证机制进行访问控制以避免恶意用户入侵,同时介绍对Hadoop进行灾难备份确保数据的安全性。

关键词 云计算安全;Kerberos;灾难备份;Hadoop

中图分类号:TP309 文献标识码:A 文章编号:1671-7597(2014)17-0052-02

云计算在互联网极速发展,它是在分布式计算、网格计算、并行计算等先前技术发展的基础上提出的新型计算架构,是超大的分布式环境,其核心功能是提供数据大规模存储和围绕数据的服务。

IaaS,PaaS、SaaS是云计算的三个服务层次。IaaS是云计算平台的底层服务,为上层提供最基本的数据存储、计算等资源性服务。PaaS是云计算平台的中间层,它利用IaaS所提供的服务,为上层的SaaS提供服务,其核心技术是分布式处理。SaaS层面需要处理的安全问题主要有:数据隔离、客户化定制。

本文针对云计算平台的访问控制权限和数据的灾难备份两个方面做了相关研究。

1 Kerberos访问控制

Hadoop是目前主流的大数据分布式处理平台。在Hadoop早期的版本当中默认集群内所有节点都是可靠的,用户使用Hadoop与文件系统交互式不需要进行验证,这就给恶意用户侵入集群当中留下了机会。一旦入侵成功,攻击者就能修改权限,伪装成NameNode或TaskTracker接受任务等,其危害十分之大。

Kerberos是有MIT开发维护的可信的第三方认证机制。Kerberos认证机制的工作原理是管理员预先把集群中确定的机器添加到数据库中,在KDC(Key Distribution Center)上分别产生主机与各个节点的keytab(包含主机和对应节点的名字和他们之间的密钥),并将这些keytab分发到对应的节点上。通过这些keytab文件,节点可以从KDC上获得与目标节点通信的密钥,进而被目标节点所认证,提供相应的服务,防止被冒充的可能性。[1]

下面是在Hadoop上安装与配置Kerberos的过程。

1)安装Kerberos之前,先在机器上安装KDC环境,在Ubuntu环境中已经安装了apt-get管理工具,所以直接运行如下命令即可:

sudo apt-get install krb5-kdc

krb5-admin-server

在安装结束之后,KDC会要求为Kerberos和Admin服务器提供一个名字,任意命名即可。

2)之后运行kdb5_newrealm命令来创建一个新的realm:sudo krb5_newrealm

3)KDC的配置。

在配置过程中,对所有问题的设置,都会被保存在/etc/krb5.conf,如果在安装之后要进行调整,直接修改该文件并重新启动krb5-kdc即可。下面即为配置的详细过程。

①为KDC指定一个管理员:

sudo kadmin.local

Authenticating as principal root/admin@EXAMPLE.COM with password.

kadmin.local: addprinc steve/admin

WARNING: no policy specified for steve/admin@EXAMPLE.COM; defaulting to no policy

Enter password for principal "steve/admin@EXAMPLE.COM":

Re-enter password for principal "steve/admin@EXAMPLE.COM":

Principal steve/admin@EXAMPLE.COM created.

kadmin.local: quit

在上面的设置中,steve是KDC的主原则,而admin是该域下的一个实例,example.com是域。在实际操作中,应该将其变成自己要设置的值。

②接下来,要为新的管理员设置足够的权限(ACL, Access Control List),其ACL由 /etc/krb5kdc/kadm5.acl 文件控制,修改如下:steve/admin@EXAMPLE.COM

上述设置意为 steve/admin 具有最大权限。

③重启krb5-admin-server 以使ACL生效。

④sudo /etc/init.d/krb5-admin-server restart

新设置的管理员可以用kinit utility进行测试:

kinit steve/admin

steve/admin@EXAMPLE.COM’s Password:

输入密码后,可以用 klist 命令查看TGT信息:klist

Credentials cache: FILE:/tmp/krb5cc_1000 Principal: steve/admin@EXAMPLE.COM

Issued Expires Principal

Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/EXAMPLE.COM@EXAMPLE.COM

4)安装Kerberos Linux客户端。

为了能够正确的获得认证,需要安装如下包:   sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config

auth-client-config 包允许简单的PAM多源配置,libpam-ccreds 包则可以将证书进行缓存。

5)配置。

①在命令行终端中进行设置:

sudo dpkg-reconfigure krb5-config

②dpkg-reconfigure工具会在 /etc/

krb5.conf 添加对应到你的域的入口。设置之后,你的配置文件该会像如下这样:

[libdefaults]

default_realm = EXAMPLE.COM

[realms]

EXAMPLE.COM ={

kdc = 192.168.0.1

admin_server = 192.168.0.1 }

③配置完成后,你可以发一个ticket来测试:kinit steve@EXAMPLE.COM

Password for steve@EXAMPLE.COM:

2 Hadoop灾难备份

灾难备份是在重大灾难如服务器崩溃时保证数据完整性的重要方法[2]。本部分介绍了Hadoop对文件系统进行灾难备份的方法,并模拟了服务器节点奔溃以后的数据恢复。

1)编辑core-site,增加checkpoint相关配置:

fs.checkpoint.dir 是恢复文件存放目录;

fs.checkpoint.period 同步检查时间,缺省是3600秒,测试时设为20秒;

fs.checkpoint.size 当edit 日志文件大于这个字节数时,即使检查时间没到,也会触发同步。

2)将second namenode设置到另一台机器。

设置masters文件,这是指定seconde namenode启动的

机器。

编辑dfs.secondary.http.address,指定second namenode的http web UI 域名或IP到namenode Hadoop48不同的机器Hadoop47,而不是缺省的0.0.0.0。

3)测试时如果name node指定的目录没有初始化,需初始化:[zhouhh@Hadoop48 logs]$ hadoop namenode format

4)同步conf下的配置到Hadoop47/46,启动hadoop:

[zhouhh@Hadoop48 conf]$ start-all.sh[zhouhh@Hadoop48 conf]$ jps

9633 Bootstrap

10746 JobTracker

10572 NameNode

10840 Jps

[zhouhh@Hadoop47 ~]$ jps

23362 TaskTracker

23460 Jps

23250 SecondaryNameNode

5)编辑放置测试文件并放入HDFS:

[zhouhh@Hadoop48 hadoop-1.0.3]$ fs -put README.txt /user/zhouhh/README.txt

[zhouhh@Hadoop48 hadoop-1.0.3]$ fs -ls .

Found 1 items

-rw-rr 2 zhouhh supergroup 1381 2012-09-26 14:03 /user/zhouhh/README.txt

[zhouhh@Hadoop48 hadoop-1.0.3]$ cat test中文.txt

这是测试文件

test001 by zhouhh

http://baidu.com

6)杀死Namenode,模拟崩溃。

[zhouhh@Hadoop48 ~]$ jps

9633 Bootstrap

23006 Jps

19691 NameNode

19867 JobTracker

[zhouhh@Hadoop48 ~]$ kill -9 19691

[zhouhh@Hadoop48 ~]$ jps

9633 Bootstrap

23019 Jps

19867 JobTracker

[zhouhh@Hadoop47 hadoop-1.0.3]$ jps

1716 DataNode

3825 Jps

1935 TaskTracker

1824 SecondaryNameNode

7)将dfs.name.dir下的内容清空,模拟硬盘损坏,通过mv命令,采用改名的方式进行测试。

[zhouhh@Hadoop48 ~]$ cd /data/zhouhh/myhadoop/dfs/name/

[zhouhh@Hadoop48 name]$ ls

current image in_use.lock previous.checkpoint   [zhouhh@Hadoop48 name]$ cd ..

[zhouhh@Hadoop48 dfs]$ mv name name1

8)数据恢复,从second namenode 复制数据。

查看second namenode文件,并打包复制到namenode的fs.checkpoint.dir:

[zhouhh@Hadoop47 hadoop-1.0.3]$ cd /data/zhouhh/myhadoop/dfs/

[zhouhh@Hadoop47 dfs]$ ls

data namesecondary

[zhouhh@Hadoop47 dfs]$ cd namesecondary/

[zhouhh@Hadoop47 namesecondary]$ ls

current image in_use.lock

[zhouhh@Hadoop47 namesecondary]$ cd ..

[zhouhh@Hadoop47 dfs]$ scp sec.tar.gz Hadoop48:/data/zhouhh/myhadoop/dfs/

sec.tar.gz

[zhouhh@Hadoop48 dfs]$ ls

name1 sec.tar.gz

[zhouhh@Hadoop48 dfs]$ tar zxvf sec.tar.gz

namesecondary/

namesecondary/current/

namesecondary/current/VERSION

namesecondary/current/fsimage

namesecondary/current/edits

namesecondary/current/fstime

namesecondary/image/

namesecondary/image/fsimage

namesecondary/in_use.lock

[zhouhh@Hadoop48 dfs]$ ls

name1 namesecondary sec.tar.gz

若dfs.name.dir配置的name不存在,需创建name目录,此时name下面已经有数据,按Ctrl+C 结束

9)恢复成功,检查数据正确性。

[zhouhh@Hadoop48 dfs]$ start-all.sh

[zhouhh@Hadoop48 dfs]$ jps

23940 Jps

9633 Bootstrap

19867 JobTracker

23791 NameNode

[zhouhh@Hadoop48 dfs]$ hadoop fs -ls .

Found 2 items

-rw-rr 2 zhouhh supergroup 1381 2012-09-26 14:03 /user/zhouhh/README.txt

-rw-rr 2 zhouhh supergroup 65 2012-09-26 14:10 /user/zhouhh/test中文.txt

[zhouhh@Hadoop48 dfs]$ hadoop fs -cat test中文.txt

这是测试文件

test001 by zhouhh

http://baidu.com

[zhouhh@Hadoop48 dfs]$ hadoop fsck /user/zhouhh

FSCK started by zhouhh from /192.168.10.48 for path /user/zhouhh at Wed Sep 26 14:42:31 CST 2012

..Status: HEALTHY

恢复成功。

3 总结

云计算安全是目前云计算发展中遇到的瓶颈,本文介绍在大数据计算系统Hadoop平台下实现使用Kerberos进行访问控制确保安全性。另一方面,本文给出了对Hadoop进行灾难备份的步骤并模拟灾后恢复,证明灾难备份的有效性。

参考文献

[1]刘莎,谭良.Hadoop云平台中基于信任的访问控制模型[J].计算机科学,2014,41(5):155-163.

[2]张乐.基于单元集群的MapReduce中节点失效的改进[J].微型机与应用,2013,32(16):81-84.

云计算 数据 安全性 互联网 分布式计算
0
为您推荐
KVM虚拟机管理-KVM热迁移项目,老男孩KVM虚拟化基础管理视频教程下载

KVM虚拟机管理-KVM热迁移项目,老男孩KVM虚

课程名称KVM虚拟机管理-KVM热迁移项目 老男孩KVM虚拟化基础管理视频教程,KVM虚拟化课…...

JavaEE+物联云计算,资源教程下载

JavaEE+物联云计算,资源教程下载

课程名称JavaEE+物联云计算,资源教程下载课程目录day0910xmldom_sax_dom4j编程(梁桐)…...

从Docker到Kubernetes之技术实战,资源教程下载

从Docker到Kubernetes之技术实战,资源教程

课程介绍Openstack虽然目前仍然火热,但似乎距离我们的工作还是那么遥远,而Docker这…...

Docker基础入门到实战,Docker容器教程下载

Docker基础入门到实战,Docker容器教程下载

课程名称Docker基础入门到实战,Docker容器教程下载课程目录01.Docker基本概念和框架0…...

Vmware虚拟化vSAN实战课程 Vmware vSAN分布式集群教程下载

Vmware虚拟化vSAN实战课程 Vmware vSAN分布

课程目录:第1章-vSAN 6.7介绍第2章-vSAN 6.7常用术语第3章-vSAN 6.7存储策略以及部署…...

腾讯云大学 – 云端运维课程下载

腾讯云大学 – 云端运维课程下载

课程介绍本专业从云计算产品开始讲起,以“高效运维云端的业务应用系统”为中心进行讲…...

Hyper-V 3.0基础快速入门学习+HyperV集群部署与创建,资源教程下载

Hyper-V 3.0基础快速入门学习+HyperV集群部

课程名称Hyper-V 3.0基础快速入门学习+HyperV集群部署与创建,资源教程下载课程介绍Hy…...

使用Docker部署Jenkins,视频教程下载

使用Docker部署Jenkins,视频教程下载

课程介绍:Jenkins是开源持续集成系统,有上百个功能各异的插件。虽然Github上很多开…...

大神Kubernetes K8S从入门到精通实战视频 K8s精讲课程下载,26集K8S完美教学课程

大神Kubernetes K8S从入门到精通实战视频 K

课程名称大神Kubernetes K8S从入门到精通实战视频 K8s精讲课程 26集K8S完美教学课程课…...

云计算重量级课程,Openstack实战演练及开发入门系列教程下载

云计算重量级课程,Openstack实战演练及开

课程名称云计算重量级课程 OpenStack实战演练及开发入门系列教程课程目录1、课程介绍2…...