方法 4.该方法涉及由 OS 验证的用户。(在第 2 阶段您对其已经有所了解。)简单地说,如果有一个名为 ananda 的 *nix 用户,则可以使用以下语句创建一个 Oracle 用户: create user ops$ananda identified externally;
此处,用户可以使用以下命令登录数据库 sqlplus /
注意,以上命令没有用户 ID 和口令。数据库实际上并不验证用户;它假设用户 ananda 已经在 OS 级别得到了正确地验证。尽管这不并是一个很棒的实践,但却是一个极具吸引力的实践 - 例如,对于 shell 脚本来说。您的脚本可能如下所示: sqlplus -s / @script.sql
由于未传递用户名和口令,因此不存在通过 ps 命令将其曝露的风险。
可能的影响 无;使用口令管理系统替换硬编码的口令不会影响脚本的功能,只会影响提供口令的方式。但请确保备份口令文件或保存其副本,并且不断对其进行更新。
操作项目
- 使用硬编码的口令标识脚本。
- 为实施挑选一种方法:
- 在 SQL 脚本内部使用 Connect 命令
- 在 shell 脚本内部使用 Connect 命令(无 SQL 脚本)
- 使用口令文件
- 使用 OS 验证的帐户
- 修改脚本以删除口令。
3.2 从 RMAN 中删除口令
背景 硬编码的口令并不局限于脚本。恢复管理器 (RMAN) 脚本容易受到相同不良习惯的影响。
下面是一个用于备份的脚本内部的典型 RMAN 命令: rman target=/ rcvcat=catowner/catpass@catalog_connect_string
在该命令中,connect 字符串 catalog_connect_string 中引用了目录数据库,该目录的用户 ID 和口令分别是 catowner 和 catpass。如前所述,如果某人执行 ps 命令,则会清楚地看到该用户 ID 和口令。
删除这些硬编码的口令有两种方法:
方法 1.在该方法中,请在 RMAN 脚本内部使用 connect 字符串,如下所示: connect target /
connect catalog catowner/catpass@catalog_connect_string
run {
allocate channel ...
... 等等...
这显然是首选方法 - 不仅是因为它从过程列表中隐藏了口令,还因为它使得检查目录 connect 字符串中的错误更加容易了。
方法 2.另一种方法是对目录连接使用 OS 验证。但是您需要进行一些额外的更改。首先,目录可能位于不同的数据库中,而不是位于正被备份的数据库中。要在这种情况下启用 OS 验证,您需要对目录数据库启用远程 OS 验证。
在目录数据库上,添加下列初始化参数,然后重新启动。
(编辑:aniston)
|