安全审计产品知识分享 - DB Session 与 Web Session
[toc]
1. Why - 为什么审计产品需要关注会话
一个安全审计产品是否能有效的呈现给客户,需要遵从数据--信息--报告的路线。 数据就是从网络封包或者服务器进程/内存内捕获到的数据,但是如何有效的把这些数据串联起来,其中一个很重要的就是需要依靠Session来串联起来,形成有效的信息:什么人-在什么时间-在什么地方-对什么数据-进行了什么操作。因此可以说,基本上没有Session, 一个审计产品甚至连第二步-信息 都不能有效的构建起来。
2. What - Session(会话)是什么
如果去检索百度或者其他技术文章,有可能会给出很抽象的定义。 简单来说Session是一种访问凭证。打个比方,今天你要去美联储的黄金存储地窖,你直接跑到地窖门口说你是特兰普他爹也没用,不会放你进去,所以你得跑到安保部证明你有权利进去,然后收到一张通行证
,拿这张通行证到地窖大门前“滴”一声大门就开了。
那么这张通行证就是你进入美联储黄金地窖的Session,你在地窖里面摸了多少次黄金,舔了多少块金砖,系统到时候拿你的通行证(Session)一刷全部列出来了。
这就是Session的意义。一个人在某个敏感的系统上,在什么时间做了什么操作,背后都需要通过Sessin的技术来串起来,形成一条条有用的Information。
3. How - 安全审计产品需要关注的Session及其来源
本章节阐述了DB Session和Web Session的数据来源。
updated on 2018-12-24 16:39:07
3.3.1 数据库会话描述 (DB Session )
不考虑connection pool的情况 一条DB Session的过程可以描述为如下:
- 使用pl/sql client login到DB instance中去( Session login);
- 执行select, update, delete, store procedure等操作;
- 关闭pl/sql client (Session logout)。
小结:1-3这个过程 就是DB Session的一个生命周期(life-cycle),对应会在SQL会话详情list页面产生一条Session报表。点击这个Session报表的详情页面链接,就可以看到上述2的具体操作(select, update, delete, store procedure等操作)。
3.3.2 应用会话描述-不使用连接池技术(Web Session without Connection Pool)
Web Session:
- user使用 帐号和密码成功登录web system(Web Session login)
- user在web system上做很多业务操作
- user 签退出web system (Web session logout)
小结:1-3是一条Web session的 life-cycle.
3.3.3 应用会话中-数据库会话-不使用连接池
本质上是没相关联关系,只有时间关系的。
- user使用 帐号和密码成功登录web system(Web Session login)
- user在web system上做很多业务操作
2.1 user query一张报表
2.2 web system调用凭证向DB请求数据
2.3 数据库验证凭证登录( DB Session login )
2.4 登录成功,则DB开始查询数据,返回tuple数据
2.5 Web获得数据,调用db.close()接口(DB Session logout)
2.6 Web展示出数据
- user 签退出web system (Web session logout)
小结:上述的 2.3 -2.5
DB Session产生的过程。需要注意的是,这里为了简化描述,只描述了一种状况。如果用户不仅查询了报表,还查询了用户个人信息等操作,这时候会产生多条DB Session的记录(而这段时间内,该用户产生的Web Session只有一条)。
3.3.4 应用会话中-数据库会话-使用连接池
根据1.2.4.3 小结描述,用户如果在登录上Web系统后,通常需要操作上百条甚至更多的数据查询记录,这时候数据库需要不断的被打开,操作完又马上被关闭,由于打开和关系的操作过程需要不断的占用系统的资源,为了简约这种资源损耗,连接池(connection pool)技术就在这种需求背景下诞生了。
- user使用 帐号和密码成功登录web system(Web Session login)
- user在web system上做很多业务操作
2.1 user query一张报表
2.2 web system调用凭证向DB请求数据
2.3 数据库登录注册( reg user login )
2.4 验证通过,Connection Pool下指令给DB查询数据
2.5 数据返回tuple数据
2.5 Web获得数据
2.7 Web展示出数据
2.8 User query一个用户信息
重复 2.4 --2.7的过程
- user 签退出web system (Web session logout)
小结:这时候的最大的不同是Web系统不再有能力主动开启和关闭数据库连接,这个动作全权交给了Connection Pool来管理。因此不论用户请求多少次,都可能只有一条DB Session去查询数据。