面是一个示例输出的一部分: PRIVILEGE GRANTEE ADM
--------------------------- ------------------------------ ---
ADMINISTER DATABASE TRIGGER EXFSYS NO
IMP_FULL_DATABASE NO
ADMINISTER RESOURCE MANAGER EXP_FULL_DATABASE NO
IMP_FULL_DATABASE NO
ALTER ANY MATERIALIZED VIEW DWETL NO
REPORTMAN NO
ALTER ANY OUTLINE REPORTMAN NO
ALTER ANY PROCEDURE IMP_FULL_DATABASE NO
QCO NO
ALTER ANY RULE CDC_PUB YES
ALTER ANY RULE SET CDC_PUB YES
ALTER ANY TABLE IMP_FULL_DATABASE NO
CNSMP NO
QCO NO
ALTER ANY TRIGGER IMP_FULL_DATABASE NO
QCO NO
VCHANG NO
ALTER ANY TYPE IMP_FULL_DATABASE NO
ALTER SYSTEM ORADBA NO
QCO NO
ALTER TABLESPACE QCO NO
ALTER USER QCO NO
SYSMAN NO
ANALYZE ANY AFFMAN NO
ARAO NO
CONCASTER NO
CREATE ANY SYNONYM ATHOTANG YES
ARUP YES
IMP_FULL_DATABASE NO
DB_MONITOR YES
QCO YES
RCHUNG YES
SPOT YES
CREATE ANY TABLE IMP_FULL_DATABASE NO
CNSMP NO
QCO NO
SYSMAN NO
DROP ANY TABLE ATHOTANG YES
IMP_FULL_DATABASE NO
CNSMP NO
QCO YES
_ and so on _
注意该输出的一些关键行。 某些清除权限(例如 DROP ANY TABLE)可能不应该授予任何人。 在本例中,让我们来看看哪些用户拥有该权限。
- IMP_FULL_DATABASE 是用于数据库完全导入的角色,通常授给 DBA 或在导入中需要的任何其他用户。 该权限可能是必需的。
- QCO 表示 Quest Central for Oracle,它是管理数据库的常用工具。 该权限可能是必需的。
- 用户 CNSMP 和 ATHOTANG 似乎不需要任何清除权限,除非他们是 DBA。 应该收回该权限。
结论 这是一个您无法立即执行的操作。 收回任何用户的任何权限之前,需要认真分析它的影响。
如果拿不准,最好的操作流程是与持有该用户 ID 的人员进行交流。 例如,ATHOTANG 并不是真的需要删除表,但却被假设成这样。 (不要奇怪,这样的假设是很常见的。)
操作计划 该任务需要一些规划,以便准备下一阶段的所有操作。 在此之前,收集所需的信息。
1.9 更改 DBSNMP 密码
背景 如您所知,Oracle Intelligent Agent 与 Oracle Enterprise Manager 通信,传递有关组件(例如数据库、监听程序以及服务器本身)的信息。 要获得关于数据库的数据,需要使用某个用户 ID 连接数据库。 默认情况下,使用的用户 ID 是 BSNMP。
创建数据库时,dbsnmp 的密码也被设置为 dbsnmp。 该用户有一些强大的权限,例如 UNLIMITED TABLESPACE、SELECT ANY DICTIONARY(允许用户从动态性能视图和数据字典视图中选择)和 ANALYZE ANY DICTIONARY(允许分析系统对象)。 很多入侵者使用该用户和密码作为进入数据库的后门入口点。 不用说,这是一个巨大的安全漏洞。 策略 您需要将该用户的密码 dbsnmp。 但是,您不能只是在数据库级别更改该密码,因为该密码还存储在代理配置文件中。 您还需要更新配置文件以使用新密码。 下面是在 Oracle 数据库 10g 中的操作过程。
- 首先,将用户 DBSNMP 的密码更改为别的内容(例如 TopSecret):
SQL> alter user dbsnmp identified by topsecret;
- 转至 Oracle Agent Home 的安装目录(不是 ORACLE_HOME),例如 /u01/app/oracle/10.1/gridc。
- 转至目录 <hostname>/sysman/emd,其中 <hostname> 是主机或服务器的名称。 例如,如果服务器的名称为 prolin1,则目录应为 prolin1/sysman/emd。
- 在这里,您会找到一个名为 targets.xml 的文件。复制该文件,为其取一个新名字(例如 targets.xml.old)。
- 打开文件 targets.xml,搜索“dbsnmp”一词;与以下内容类似
<Target TYPE="oracle_database" NAME="PROPRD1_prolin1">
<Property NAME="MachineName" VALUE="192.168.101" />
<Property NAME="OracleHome" VALUE="/u01/app/oracle/10.1/db1" />
<Property NAME="Port" VALUE="1521" />
<Property NAME="Role" VALUE="NORMAL" />
<Property NAME="SID" VALUE="PROPRD1" />
<Property NAME="ServiceName" VALUE="PROPRD" />
<Property NAME="UserName" VALUE="dbsnmp" />
<Property NAME="password" VALUE="3797cf30e7c4a9c6" ENCRYPTED="TRUE" />
<CompositeMembership>
<MemberOf TYPE="rac_database" NAME="PROPRD" ASSOCIATION="cluster_member" />
</CompositeMembership>
</Target>
- 注意这一行:
(编辑:aniston)
|