我目前正在建设一个与SOX审计要求,以符合应用。 其中一个原因是,所有插入,更新和删除(但删除了可以忽略),需要留下痕迹,那是困难的,如果不是不可能的标准用户(或者非DBA)来改变。
这意味着,我需要通过触发器来强制执行插入,更新在数据库级别的审核和删除。
我的问题是; 这是一个web应用...的典型设计模式是用户存储为“逻辑”,例如; 在“用户”表。 我需要什么,是应用程序实际运行作为登录的用户在首次登录后。
我的想法(这很可能不是最好的)是做到以下几点:
- 通过一个标准的用户名加载登录页(Web应用程序)
- 检查一个名为“stored_users”为自己的逻辑的用户名/密码表。
- 如果输入正确的用户名/密码; 检索数据库的用户名,生成会话密码(存储在Redis的KVSession),更新Postgres的数据库用户,并用它登录。
- 定义的非活动时间后,破坏了密码会话,用户重置密码数据库和日志出来。
这是否听起来像一个安全的方式,以确保以下?
- 我的用户始终使用的是Postgres用户; 这样我就可以通过强制执行等CURRENT_USER触发器..
- 通过始终以随机的,临时密码再生postgres用户的密码安全
我很想听听别人怎么在这个问题上说的; 因为我实在找不到这对谷歌(或者我不是寻找合适的条件)。 这似乎为用户登录的普遍心态是将它们存储为逻辑记录,并具有全球连接的用户。