问题描述
我正在尝试在HANA中开发一个过程,该过程可以激活和停用特殊的数据库用户,并记录这方面的所有信息。
我喜欢用户在激活后始终具有相同的初始密码-但在登录时被迫更改它。
您是否知道如何实现此目的?
当前,由于密码政策,我失败了。我不想触碰这项政策,它说不允许使用最后5个密码。
是否可以通过随机功能为用户提供五次密码,第六次为默认密码?
欢迎就实施,改进和进一步的想法提供任何反馈。
谢谢。
解决方法
您要求反馈:
-
解决可能已设置的安全策略 目的不是一个好主意
-
自己实施日志记录似乎不是一个好主意 要么。 SAP HANA提供审核这一功能。代替 编写日志记录代码,请考虑设置适当的审核策略
-
让用户使用与 那么需要改变的是相当不安全的。字面上就像 把房子的钥匙和门一起放在门外 进入后交换锁的指令。这不是 安全工作。
-
在
COMMIT
之后不需要手动ALTER USER
-
看到您的代码期望一个完整的用户列表,看起来一个潜在的使用场景可能是测试或培训用户。如果是这种情况,建议不要完全重新打扰用户。
要么创建永久的一次性账户(例如TRAIN01-2020-01 ... TRAIN01-2020-01),或者每当有一组新的 用户应使用帐户。这样可以避免“跳舞 周围”,共5个最后一个密码策略。 -
请为清楚明确的程序选择名称,该代码应该做什么。
"START"
/"STOP"
与代码无关。 -
将已停用帐户的状态保留在表中的目的是什么? HANA跟踪当前状态,包括停用时间戳记。
-
回到“仅使用5个随机密码”的想法,然后再将密码设置为众所周知的密码:在以前生成随机密码的情况下,代码中没有任何内容可以处理。另外:通常,密码策略还会限制每天更改密码的频率-正是为了避免此类策略。
但是希望这会有所帮助。
,我认为当有人尝试重新发明轮子和变通方法安全策略时,给出任何建议是很糟糕的,因为其他人将需要支持这种可怕的解决方案。
但是无论如何,如果最终要设置一个所需的密码,为什么还要输入任何随机密码呢?只需循环输入6个预定义的密码,然后一个接一个地设置即可。 对于审核,您可以为该用户创建审核策略,并使用支持的标准工具来跟踪更改。
编辑: 这是有关“循环遍历6个预定义密码”的代码:
do( in iv_base_pwd nvarchar(20) => 'qwe')
begin
declare lv_pwd_count int;
declare lv_i int := 0;
select value
into lv_pwd_count
from m_password_policy
where property = 'last_used_passwords';
while lv_i <= lv_pwd_count do
execute immediate 'alter user myuser password ''' || iv_base_pwd || '_' || lv_i | '''';
lv_i := lv_i + 1;
end while;
execute immediate 'alter user myuser password ''' || iv_base_pwd || '''';;
end;