数据管理 1. 上传数据考虑因素
2. 下载数据如何审核及自动备份归档数据
3.数据访问的Audit 4. 数据分级及权限控制
数据上传在一个公司,内外网隔离的情况下,必然有大量的数据上传需求。如何实现
上传呢?这是一个大问题。我们设计了一个数据中转站,允许公司内的用户登录,将数据放入home目录下,然后每隔一个小时,内网服务器通过rsync去获取数据,并sync到内网。
这里主要的问题是:防火墙一定要严格过滤,只允许内网服务器sync中转站的某个模块数据。
Upload.sh #!/bin/bash
ProcNumber=`ps aux |grep rsync|grep -v grep|wc -l`
if [ $ProcNumber -eq 0 ];then
/usr/bin/rsync -acvz --delete --password-file=/root/rsync.pass root@10.x.x.100::home/exchange/upload/ >> /root/rsync.log
Fi
下载数据如何审核及自动归档对于下载数据,我们要求进行人工任何。分多个层级,每一步需要审核人写审核意见,批准还是拒绝。任何一步拒绝,都将无法完成。
主要实现是:用户准备数据,发邮件给ithelp,然后ithelp会根据情况,分配审核数据的人员,其审核完成后,将数据放在第一级审核的目录dirA,然后由第二级审核人进行二次审核,完毕后将数据放入预备下载目录dirB,最后程序自动先备份数据,然后sync到数据中转站,并删除本地数据。DirA和dirB通过ACL设置了用户的访问权限,只有审核人员可以进入。
以上步骤,还可以插入数据检查及核实的程序,比如查看是否下载了源代码数据。
数据访问Audit实现
使用audit实现任何人访问源代码都将被记录,通过程序每天统计一次用户的访问记录,排序统计后自动发送邮件给相关的人员。
目前测试环境实现了5万个源代码的控制,但是只能在本地文件系统实现。否则会带来性能的问题。这样可以实现某个人一直查看的记录追踪,以及一段时间内比如离职前一周或者某一天将所有允许查看的文件都copy到其他目录的行为,可以当天晚上发送邮件给其安全部门的人员。
[root@dcs004 audit]# cat audit.rules |wc -l 51573 [root@dcs004 audit]# cat audit.rules|more # This file contains the auditctl rulesthat are loaded -w/test/test/linux-4.3/.get_maintainer.ignore -p r
-k kernelfiles -w /test/test/linux-4.3/security/inode.c -pr
-k kernelfiles -w /test/test/linux-4.3/security/Makefile-p r
-k kernelfiles -w /test/test/linux-4.3/security/selinux/Makefile-p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/netlink.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/.gitignore -p r
-k kernelfiles -w /test/test/linux-4.3/security/selinux/hooks.c-p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/Kconfig -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/selinuxfs.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/nlmsgtab.c -p r
-k kernelfiles -w /test/test/linux-4.3/security/selinux/netnode.c-p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/netif.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/netport.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/netlabel.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/exports.c -p r
-k kernelfiles -w/test/test/linux-4.3/security/selinux/xfrm.c -p r
-k kernelfiles
Audit结果如下,通过分析处理后可以实现监控的目的。 ype=PATH msg=audit(11/03/201510:43:13.610:198339) : item=0 name=test/linux-4.3/drivers/infiniband/hw/cxgb4/t4fw_ri_api.hinode=73185587 dev=00:14 mode=file,664 ouid=root ogid=root rdev=00:00nametype=NORMAL type=CWD msg=audit(11/03/201510:43:13.610:198339) :
cwd=/tools type=SYSCALL msg=audit(11/03/201510:43:13.610:198339) : arch=x86_64 syscall=open success=yes exit=3 a0=0x181ede0a1=O_RDONLY|O_NOFOLLOW a2=0x0 a3=0x666e692f73726576 items=1 ppid=39759pid=40352 auid=root uid=root gid=root euid=rootsuid=root fsuid=root egid=root sgid=root fsgid=root tty=pts2 ses=13728 comm=mv exe=/bin/mv key=kernelfiles ---- type=PATH msg=audit(11/03/201510:43:13.617:198340) : item=0 name=(null) inode=73185587 dev=00:14mode=file,664 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=SYSCALL msg=audit(11/03/201510:43:13.617:198340) : arch=x86_64 syscall=flistxattr success=noexit=-95(Operation not supported) a0=0x3 a1=0x0 a2=0x0 a3=0x0 items=1ppid=39759 pid=40352 auid=root uid=root gid=root euid=root suid=root fsuid=rootegid=root sgid=root fsgid=root tty=pts2 ses=13728 comm=mv exe=/bin/mvkey=kernelfiles
数据分级及权限控制主要是通过NFS ACLv4来实现项目的权限控制,通过将特定人员加入访问许
可,项目经理可以自我控制任何公司的人员是否具有访问权限。但是,数据的分级,需要数据拥有人员去判断,IT只是提供一种手段,并不具有分级的能力。
IT提供合适的手段,让用户在系统内部,知道如何申请和如何控制权限即可。
以下是通过nfs v4设置权限示例:
$nfs4_setfacl -e /proj/xuesen ## Editing NFSv4 ACL for directory:/proj/xuesen A::OWNER@:rwaDxtTnNcCy A:g:GROUP@:tncy A::EVERYONE@:tncy A::projectmanagerA@powercore.com.cn:rwaDxtTnNcCy 添加下面行即可
A::username@powercore.com.cn:rxtncy ###read only### A::username@powercore.com.cn:rwaDxtTnNcy ###rwx### 这里的projectmanager是由管理员设置的某个项目经理的账号,username是你期望设置的用户名。
|