我目前正在构建一个必须符合SOX审核要求的应用程序。其中之一是,所有插入,更新和删除(但删除都可以忽略),需要留下一条难以(如果不是不可能)标准用户(或非DBA)更改的路径。
这意味着,我需要通过插入,更新和删除触发器在数据库级强制执行审计。
我的问题是;这是一个webapp ...典型的设计模式是将用户存储为“逻辑”,例如;在“用户”表中。我需要的是,应用程序在初次登录后实际以登录用户身份运行。
我的想法(可能不是最好的)是做以下事情:
这听起来像是确保以下内容的安全方式吗?
我真的很想听听别人对此事的看法;因为我在谷歌上找不到这个(或者我没有找到合适的条款)。用户登录的主流思维方式似乎是将它们存储为逻辑记录并具有全局连接用户。
答案 0 :(得分:1)
实现目标
所有插入,更新和删除都需要留下一条路径 标准用户即使不是不可能也很难改变。
你可以创建:
1)两个模式:一个用于公共表,一个用于安全性,如登录/传递(哈希)表,用户会话日志,更改日志表等。
2)两个用户:一个普通用户,只能在公共架构上使用dml(无ddl),一个超级用户。
3)登录功能,将检查提供的用户/通过登录/通过表并将成功/失败尝试记录到用户会话日志中(您需要SECURITY DEFINER
功能)
4)在公共模式表上设置一组审计触发器,用于检查用户权限并记录用户所做的任何更改(SECURITY DEFINER
函数也在此处)。