‘壹’ 简述oracle安全加固从哪几个方面入手加固
1.安全加固的检查方向
2.安全加固检查safeCheck.sh
3.安全加固执行safeExec.sh
1.安全加固的检查方向
1.1.sysdba用户远程登录限制(查看Oracle登录认证方式)
检查:
show parameter remote_login_passwordfile
整改:
alter system set remote_login_passwordfile = NONE scope=spfile;
注:需要重启库生效。
1.2.是否开启了资源限制
show parameter resource_limit
alter system set resource_limit = true;
1.3.登录失败的帐号锁定策略
select * from dba_profiles order by 1;
关注FAILED_LOGIN_ATTEMPTS的设定值
1.4.数据库用户帐号检查
检查:
select username,profile from dba_users where account_status='OPEN';
整改:
锁定用户:alter user <用户名> lock;
删除用户:drop user <用户名> cascade;
1.5.范例数据库帐号
是否存在默认的范例数据库账号scott等,可以考虑删除scott账号
1.6.dba权限账户检查
select username,profile from dba_users where account_status='OPEN';
1.7.数据库账户口令加密存储
11g数据里面的账户口令本来就是加密存储的。
1.8.数据库密码安全性校验函数
select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';
1.9.设定信任IP集
只需在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行:
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…)
1.10.超时的空闲远程连接是否自动断开
根据实际需要设置合适的数值。
在$ORACLE_HOME/network/admin/sqlnet.ora中设置下面参数:
SQLNET.EXPIRE_TIME=10
2.安全加固检查safeCheck.sh
#!/bin/bash
#name:safeCheck.sh
#function:to create a safe check report.
#usage: oracle用户登录,执行 sh safeCheck.sh > /tmp/safeCheck.log
#logon database
sqlplus -S / as sysdba <<EOF
--format
prompt ============================
prompt == format
prompt ============================
prompt
set linesize 140 pagesize 50
col username for a30
col profile for a30
col resource_name for a30
col limit for a30
--check
prompt ============================
prompt == 1.sysdba用户远程登录限制
prompt ============================
prompt
show parameter remote_login_passwordfile
prompt 结果应为none.
prompt ======================
prompt == 2.resource_limit
prompt ======================
prompt
show parameter resource_limit
prompt 结果应为true.
prompt ===========================
prompt == 3.登录失败的帐号锁定策略
prompt ===========================
prompt
select * from dba_profiles order by 1;
prompt 关注FAILED_LOGIN_ATTEMPTS参数
prompt ===========================
prompt == 4.数据库用户帐号检查
prompt ===========================
prompt
select username,profile from dba_users where account_status='OPEN';
prompt 正常使用的用户列表
prompt ==========================
prompt == 5.范例数据库帐号
prompt ==========================
prompt
select * from all_users order by created;
prompt 关注有无示例账户scott
prompt ===========================
prompt == 6.dba权限账户检查
prompt ===========================
prompt
prompt ===========================
prompt == 7.数据库账户口令加密存储
prompt ===========================
prompt
prompt =============================
prompt == 8.数据库密码安全性校验函数
prompt =============================
prompt
select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';
prompt 结果应该不为null
--logoff database
EOF
# check the files
echo ===================
echo == 9.设定信任IP集
echo ===================
echo
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下
#tcp.validnode_checking = yes
#tcp.invited_nodes = (ip1,ip2…)
echo ===================================
echo == 10.超时的空闲远程连接是否自动断开
echo ===================================
echo
#根据实际需要设置合适的数值。
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下一行
#SQLNET.EXPIRE_TIME=10
3.安全加固执行safeExec.sh
#!/bin/bash
#name:safeExec.sh
#function:to execute the script for safe.
#usage: oracle用户登录,执行 sh safeExec.sh > /tmp/safeExec.log
#logon database
sqlplus -S / as sysdba <<EOF
--format
prompt ============================
prompt == format
prompt ============================
set linesize 140 pagesize 50
col username for a30
col profile for a30
col resource_name for a30
col limit for a30
--execute
prompt ============================
prompt == 1.sysdba用户远程登录限制
prompt ============================
alter system set remote_login_passwordfile=none scope=spfile;
prompt ======================
prompt == 2.resource_limit
prompt ======================
alter system set resource_limit=true;
prompt ===========================
prompt == 3.登录失败的帐号锁定策略
prompt ===========================
alter profile default limit FAILED_LOGIN_ATTEMPTS 10;
prompt ===========================
prompt == 4.数据库用户帐号检查
prompt ===========================
--select username,profile from dba_users where account_status='OPEN';
prompt I think I have nothing to do in this step.
prompt ===========================
prompt == 5.范例数据库帐号
prompt ===========================
prompt 是否删除范例scott用户?
--drop user scott cascade;
prompt ===========================
prompt == 6.dba权限账户检查
prompt ===========================
prompt I think I have nothing to do in this step.
prompt ===========================
prompt == 7.数据库账户口令加密存储
prompt ===========================
prompt 11g版本,数据库层面就是加密的嘛~
prompt =============================
prompt == 8.数据库密码安全性校验函数
prompt =============================
prompt 执行创建安全性校验函数的脚本
@?/rdbms/admin/utlpwdmg.sql
--logoff database
EOF
# check the files
echo ===================
echo == 9.设定信任IP集
echo ===================
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下
#tcp.validnode_checking = yes
#tcp.invited_nodes = (ip1,ip2…)
echo ===================================
echo == 10.超时的空闲远程连接是否自动断开
echo ===================================
#根据实际需要设置合适的数值。
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下一行
#SQLNET.EXPIRE_TIME=10
针对第9和第10步骤中的sqlnet.ora配置文件示例:
注意如果是ASM实例,sqlnet.ora配置文件是grid用户下$ORACLE_HOME/network/admin/sqlnet.ora的。
SQLNET.EXPIRE_TIME=10
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.99.*)
‘贰’ Oracle默认的用户名和密码是什么
在控制台用sqlplus / as sysdba登陆oracle系统时,所用的用户名和密码通常有四种。
用户名: internal 密码:oracle
2. 用户名:system 密码:manager
3. 用户名:sys 密码:change_on_install
4. 其中直接管理模式可以为sysdba的为后面三个,要是集群的话再去掉system。
(2)oracle数据库安全方案扩展阅读:
一:oracle sys密码的重置方法
在系统运行中输入:sqlplus /nolog
在命令窗口分别执行:conn /as sysdba
alter user scott identified by tiger;
alter user scott account unlock;
然后“scott”用户密码就修改为“tiger”了,用户可根据自己需求,重置密码。
二:ORACLE数据库安全解决方案
1.目前应用系统中对数据库的依赖程度与日俱增,应用数据库可以使应用系统开发更加方便,不再需要为烦琐的检索、查询、统计进行单独设计语法,同时交易的完整性又能得到可靠保证,但是数据库厂家的不断整合又为企业应用带来了新的考验:
(1)、Informix被IBM收购
(2)、Mysql被ORACLE收购
(3)、Sybase被SAP收购
被微软收购的更不计其数了,还有很多小数据库厂商被收购,开源的尤其多,追其根源,大厂商的数据库技术越来越庞大,但是体系架构又不适应灵活发展,面对中小数据库厂商的迅猛发展,他们惟有走收购之路,但是收购之后呢,他们不会让其发展,最终受伤的还是中小企业客户群。
2.安全历程
目前无论是银行综合业务系统,还是移动计费系统还是政权交易系统,都毫无例外的选择大型数据库进行交易,那么对于在911市贸悲剧后的安全方案究竟有什么特殊考虑呢?
数据库容灾无疑是目前脱颖而出的技术方案,应用系统数据的安全除了网络防火墙、防病毒以及权限设计之外就是数据库的备份工作了,可以说数据库备份经历了以下几个阶段:
单机版系统磁盘备份
数据磁带备份
局域网备份
双机热备/磁盘阵列RAID
磁带库备份
光盘塔备份
远程容灾备份
全球多点容灾备份
3.安全考虑
目前应用系统解决方案中多数应用目前主要还在考虑系统功能的建设,但是随着数据库容量的增加,历史数据查询审计需要加快,对历史数据的分析和对在线数据的实时可用已经变得越来越迫切。
客户不仅需要能够快速查询数据库,同时对目前应用系统的实时可用以及负载均衡都提出了更加明确的要求,为此在双机热备+磁带库冷备的多数解决方案外,很多大型金融证券企业都开始进行数据中心的建立,大型异地灾备中心开始提到议事日程。
4.比较完善
其实为客户提供安全解决方案,应该在应用系统的规划中就应该考虑,等到企业意思到安全的时候恐怕就需要耗费大量的人力、
物力来迁移数据,建立灾备中心,但是这仅仅是物理的,如何从数据库层面使从1BYTE的数据进入数据库就被安全的保护起来呢,无疑数据库同步热备的相关产品是我们应该考虑的。
因为即使不建立灾备中心,对数据实时热备也不需要太大的投入,只需要安装数据库同步产品,那么就可以轻松检验数据是否真正同步热备,当客户意识到需要建立灾备中心的时候,那仅仅是地点和网络的重新部署,
同步软件已经伴随客户成长,伴随数据成长,到时集成商为客户做的就是规划好灾备中心的设备和格局,这样一个完善的灾备方案就被你轻松建立了。并且随着数据逐渐增加,客户会对灾备中心提供的负载均衡功能更加依赖,不但减轻硬件的投入,还可以让查询对应用系统的资源占用减少到“0”。
5.产品分类
目前这块能够担当同步服务器功能的只有沃信科技的PAC数据库同步产品,因为包括ORACLE DATAGUARD、DSG、GOLDEN GATE、SHAREPLEX等厂家的产品必须安装在主数据库上,这样不只占用主库资源,同时也对应用系统的稳定性提出了更高要求,
但沃信科技的产品可以安装在独立于主备库的第三方服务器上,这样数据库同步软件不占用主库系统资源,同时避免了操作系统、数据库版本不一致的局限性。同时在所有产品中性价比最高,唯一提供免费试用,同时是唯一一家提供华军软件园下载的产品。
‘叁’ Oracle数据库提供的安全性措施有哪些
Oracle的安全措施主要有三个方面,一是用户标识和鉴定;二是授权和检查机制;三是审计技术(是否使用审计技术可由用户灵活选择);除此之外,Oracle还允许用户通过触发器灵活定义自己的安全性措施。
一、用户标识和鉴定
在Oracle中,最外层的安全性措施是让用户标识自己的名字,然后由系统进行核实。Oracle允许用户重复标识三次,如果三次未通过,系统自动退出。
二、授权与检查机制
Oracle的权限包括系统权限和数据库对象的权限两类,采用非集中的授权机制,即DBA负责授予与回收系统权限,每个用户授予与回收自己创建的数据库对象的权限。
Oracle允许重复授权,即可将某一权限多次授予同一用户,系统不会出错。Oracle也允许无效回收,即用户没有某种权限,但回收此权限的操作仍算成功。
1. 系统权限
Oracle提供了80多种系统权限,如创建会话、创建表、创建视图、创建用户等。DBA在创建一个用户时需要将其中的一些权限授予该用户。
Oracle支持角色的概念。所谓角色就是一组系统权限的集合,目的在于简化权限管理。Oracle除允许DBA定义角色外,还提供了预定义的角色,如CONNECT,RESOURCE和DBA。
具有CONNECT角色的用户可以登录数据库,执行数据查询和操纵。即可以执行ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等操作。
RESOURCE角色可以创建表,即执行CREATE TABLE操作。创建表的用户将拥有对该表的所有权限。
DBA角色可以执行某些授权命令,创建表,对任何表的数据进行操纵。它涵盖了前两种角色,此外还可以执行一些管理操作,DBA角色拥有最高级别的权限。
例如DBA建立一用户U1后,欲将ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等系统权限授予U1,则可以只简单地将CONNECT角色授予U1即可:
GRANT CONNECT TO U1;
这样就可以省略十几条GRANT语句。
2. 数据库对象的权限
在Oracle中,可以授权的数据库对象包括基本表、视图、序列、同义词、存储过程、函数等,其中最重要的是基本表。
对于基本表Oracle支持三个级别的安全性:表级、行级和列级。
(1)表级安全性
表的创建者或者DBA可以把表级权限授予其他用户,表级权限包括:
ALTER:修改表定义
DELETE:删除表记录
INDEX:在表上建索引
INSERT:向表中插入数据记录
SELECT:查找表中记录
UPDATE:修改表中的数据
ALL:上述所有权限
表级授权使用GRANT和REVOKE语句。
(2)行级安全性
Oracle行级安全性由视图实现。用视图定义表的水平子集,限定用户在视图上的操作,就为表的行级提供了保护。视图上的授权与回收与表级完全相同。
例如,只允许用户U2查看Student表中信息系学生的数据,则首先创建信息系学生的视图S_IS,然后将该视图的SELECT权限授予U2用户。
‘肆’ Oracle数据库安全性设计大家给点建议
Oracle数据库本身的安全性建设
从总体上而言,Oracle数据库是业界安全性方面最完备的数据库产品。在数据库安全性的国际标准中,Oracle通过了14项标准的测试,是所有数据库产品中通过安全性标准最多、最全面的产品。Oracle在C2级的操作系统上(如商用UNIX,VMS操作系统),不仅满足NCSC C2级安全标准,而且已经正式通过了NCSC C2标准的测试。在B1级的操作系统上不仅满足NCSC B1级安全标准,而且已经通过了NCSC B1级标准的测试。
Oracle提供的主要安全性措施如下:
�8�9 身份认证功能(Authentication):识别访问个体的身份
�8�9 数据访问的机密性(Confidentialty):保证敏感数据访问的机密性。
�8�9 数据完整性(Integrity):保证数据不被篡改。
�8�9 授权能力(Authorization):保证被授权用户对数据的查询和修改能力。
�8�9 访问控制(Access Control):确定对指定数据的访问能力。
�8�9 审计能力(Auditing):提供监测用户行为的能力。
�8�9 私有性(Privacy):提供对敏感数据访问的私密性。
�8�9 高可用性(Availability):保证数据和系统提供不间断服务的能力。
�8�9 代理管理能力(Delegated Administration):提供对用户帐号的集中管理功能。
下面将就应用系统本身对于Oracle提供的安全性措施作更深入的探讨。
$PageTitle= Oracle的安全性领域}
三、 Oracle的安全性领域
�8�5 Profile控制
Oracle利用profile机制来管理会话资源占用,同时也管理用户密码的安全策略。
通过profile我们可以实现:
某个特定用户最多只能占用系统百分之几的CPU时间?
某个特定用户连接到数据库之后能存活多长时间?
某个特定用户连接到数据库之后多长时间处于非活跃状态就将被系统中断连接?
用户登录密码输入错误多少次之后就将自动锁定用户?
用户密码的长度和包含的字符必须符合什么样的规则?
用户密码在多少天后将自动失效并要求设定新密码?
�8�5 用户权限控制 (Privilage)
Oracle通过角色(Role),权限(Privilage)等的一系列授予(Grant)和回收(Revoke)操作可以有效的进行用户的权限控制。
通过权限控制我们可以实现:
某个特定用户只能读取而不能修改另一个用户的表数据。
某个特定用户只能运行Oracle数据库系统的几个存储过程或者函数。
某个特定用户自己能够拥有修改某些数据的权力,但是却无法给其它不拥有这个权限的用户授予修改该数据的权力。
某个特定用户可以读取数据但是无法创建新的表空间。
�8�5 虚拟专用数据库(VPD)
虚拟专用数据库 (VPD) 也称为细粒度访问控制,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎。
VPD 的工作方法是,通过透明地更改对数据的请求,基于一系列定义的标准向用户提供表的局部视图。在运行时,所有查询都附加了谓词,以便筛选出准许用户看到的行。
也就是通过VPD的设置,我们可以做到行级安全性控制,特定的用户即使对一张表有读取权限,那么也只能看到符合自身权限的记录。
注意,在Oracle10g版本中,VPD得到增强,已经可以实现字段级的安全性控制了。
实例及搭建步骤参看:利用VPD细粒度访问策略实现行级安全性 Step By Step
�8�5 Orace Label Security
基于对由客户提交的行级安全性的严格要求,Oracle Label Security(Oracle 数据库企业版的选件之一)利用多级安全性概念解决了世界上政府和商业用户在实际中遇到的数据安全和隐私问题。
OLS 通过利用数据敏感度标签(例如“敏感”和“公司机密”)与用户标签授权,提供了完善的行级安全性控制。
OLS 使用政策概念来存储标签定义和授权。该政策可直接在数据库中进行管理,或在 Oracle 身份管理中进行集中管理。
�8�5 Oracle Database Valut
通常数据库管理员如果具有了DBA权限,那么就很难防止这样的管理员查看应用程序数据。而Oracle Database Valut则解决了必须保护涉及合作伙伴、员工和顾客的敏感业务信息或隐私数据的客户最为担心的问题。
Oracle Database Vault 可防止高权限的应用程序 DBA 访问其他的应用程序、执行其权限之外的任务。Oracle Database Vault 可在不影响应用程序功能的前提下快速而高效地保护现有程序。
Oracle Database Vault 可通过下列方法解决一些最为常见的安全问题和内部威胁:
1. 限制 DBA 和其他授权用户访问应用程序数据。
2. 防止DBA 操纵数据库和访问其他应用程序。Oracle Database Vault 提供了强大的职责划分控制功能,可防止擅自更改数据库。比如说如果一个用户具有 CREATE USER 权限,但不具备正确的用户管理权限,则 Oracle Database Vault 将阻止该 DBA 创建新用户。
3. 更好的控制何人、何时、何地可以访问应用程序。如日期时间、数据库客户端在网络上的位置之类的因素。
Oracle Database Valut是新的Oracle Database 10g企业版的选件。目前已经有Linux X86以及Solaris SPARC 64bit的版本可以下载使用了。
�8�5 用户访问审计
审计是Oracle安全性的另一个重要领域,我们还必须小心地计划审计方案。有几种方式可在Oracle中进行审计:
1. SQL审计命令(标准审计)
通过AUDIT语句我们可以对成功或者不成功的特定对象的读取,更新操作进行审计。
标准审计只会记录较少的跟踪信息,比如发出该语句的用户、时间、终端标识号等等。
该审计对于系统性能的影响更多地取决于对象的繁忙程度。
2. 用对象触发器进行审计(也就是DML审计)
此类审计通常由客户自行开发放置于特定数据库对象上的触发器,由于是自行开发,所以相对于标准审计则能够更自由地记录更多感兴趣的跟踪信息。比如更新操作将某个字段从什么原始值更新到了什么新值。
该审计对于系统性能的影响更多地取决于对象的繁忙程度和触发器的编写水平。
3. 用系统级触发器进行审计(记录用户登录和退出)
当用户登录数据库或者离开数据库时,都可以通过自定义的触发器来记录用户名称,操作时间,终端标识号等信息。
由于触发器触发几率小,所以该审计对于系统性能影响并不大。
4. 用LogMiner进行审计(也就是DML和DDL)
Oracle数据库将所有的更新操作都记录在重作日志中,而Oracle提供了LogMiner工具用于挖掘重作日志中的所有操作,相比起上述的各种审计方法来说,该种审计可能是信息最为完善,对于应用系统性能影响最小的方法。
此处稍微延展开来说一下,LogMiner是双刃剑,既然可以用来审计,也就能够被恶意使用作为数据窃取的工具。所以在数据本身的加密方面,Oracle同样提供了多种解决方案,比如DBMS_OBFUSCATION_TOOLKIT,DBMS_CRYPTO和最新的透明数据加密,甚至在数据备份方面 Oracle也推出了Secure Backup来应对磁带数据的加密,但是要注意到数据加密不应用作访问控制的替代项,存储加密的数据并不会在存储介质本身提供额外的保护层,只是有助于在发生介质遭窃时保护诸如信用卡号之类的敏感数据。本文不再作更多的介绍。
5. 细精度审计(FGA)
细粒度审计 (FGA),是在 Oracle 9i 中引入的,能够记录 SCN 号和行级的更改以重建旧的数据,但是它们只能用于 select 语句,而不能用于 DML,如 update、insert 和 delete 语句。因此,对于 Oracle 数据库 10g 之前的版本,使用触发器虽然对于以行级跟踪用户初始的更改是没有吸引力的选择,但它也是唯一可靠的方法。
而Oracle10g种FGA功能的增强使其不但能够支持select操作,同时也支持DML操作。在 Oracle 10g 中,审计已经从一个单纯的“操作记录者”成长为一个“事实记录机制”,它能以一个非常详细的级别来捕获用户的行为,这可以消除您对手动的、基于触发器的审计的需要。它还结合了标准审计和 FGA 的跟踪,这使其更易于跟踪数据库访问,而不用考虑它是如何生成的。
通过细粒度审计我们可以记录:
在早上九点到下午六点之间或在星期六和星期日对某个表进行了访问。
使用了公司网络外部的某个 IP 地址。
选定或更新了特定列。
使用了该列的特定值。
‘伍’ 两个oracle数据库如何设计容灾方案
在企业灾备预算中,最常见的问题就是按原套设备去做预算,费用往往高得吓人,所以很多企业想做灾备,最后都会卡在预算上。今天,英方工程师分享一个案例,如何将灾备预算成倍下降,提升企业的灾备幸福感。
1、AIX+Oracle双机要做灾备
案例需求:客户AIX+Oracle双机规划灾备建设,确保业务数据安全与业务连续。
灾备规划方案一:在本地灾备中心按照生产环境AIX+Oracle双机的配置进行规划,价格太高,超出了预算范围。主要原因是客户相当于花双倍价钱,买两套同样的设备,但是只有一套设备在生产,性价比太低,并且后续的运维成本也很高,所以方案被毙掉。
灾备规划方案二:利用云计算的资源,将灾备中心寄托于云计算上。私有云造价昂贵,对客户体量不适合;公有云是很好的选择,但是经过计算,客户发现在数据库采购、服务费用、云设施按需购买等综合费用也比方案一少不了几个钱,并且公有云的安全性没有私有云的高,方案整体的稳定性、可控性差,所以方案也被毙掉。
2、方案涉及到的操作系统的知识点
本案涉及生产环境的操作系统与数据库配置,我们先简单介绍AIX、UNIX、Linux的知识点。
首先是AIX,它是IBM基于AT&TUnixSystemV开发的一套“类UNIX”操作系统,运行在IBM专有的Power系列芯片设计的小型机硬件系统之上。那么,什么是UNIX操作系统呢?
UNIX操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
Linux是一套免费使用和自由传播的“类Unix”操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议,支持32位和64位硬件。
3、简单跨平台,Linux+i2轻松灾备
针对上面客户提到的灾备需求,很显然,理想与现实的距离总是那么遥远。但是不要灰心,英方工程师有办法。针对这种情况,我们首先需要跳出传统容灾备份的思路,特别是英方新灾备技术方案对于操作系统与数据库等进行跨平台灾备的创新,在窄带宽、长距离、平台异构(操作系统与存储方式)、低成本、安全性、稳定性等方面有诸多的优势。
‘陆’ 如何消除Oracle数据库的安全隐患
但由于计算机软、硬件故障、口令泄密、黑客攻击等等因素,都可导致数据库系统不能正常运转,造成大量数据信息丢失,数据被恶意篡改,甚至使数据库系统崩溃。忽视Oracle数据库的安全问题,必将给用户带来巨大的损失。如何保证数据库的安全运行是数据库管理员日常工作中的首要问题。下面提出几条防范措施供大家参考:一、用户角色的管理与口令保密 这是保护数据库系统安全的重要手段之一。它通过建立不同的用户组和用户口令验证,可以有效地防止非法的Oracle用户进入数据库系统,造成不必要的麻烦和损坏;另外在Oracle数据库中,可以通过授权来对Oracle用户的操作进行限制,即允许一些用户可以对Oracle服务器进行访问,也就是说对整个数据库具有读写的权利,而大多数用户只能在同组内进行读写或对整个数据库只具有读的权利。在此,特别强调对SYS和SYSTEM两个特殊账户的保密管理。Oracle的数据库管理员都知道,数据库系统典型安装后,一般sys和system以及internal这三个用户具有默认的口令,数据库安装成功后,系统管理员作的第一件工作就是修改这些用户的口令,保证数据库的安全性。 为了加强数据库在网络中的安全性,对于远程用户,应使用加密方式通过密码来访问数据库,加强网络上的DBA权限控制,如拒绝远程的DBA访问等。
二、数据保护 数据库的数据保护主要是数据库的备份,当计算机的软硬件发生故障时,利用备份进行数据库恢复,以恢复破坏的数据库文件或控制文件或其他文件。
‘柒’ oracle数据库的安全控制机制有哪些
固定长度或者有一定生成规律的只读数组可以用table values语句来实现,或者用with表达式来实现更复杂一点的逻辑. 不过这也只能解决一部分问题.
select * from table(values(1),(2),(3)) as t(a)
with t(a) as ( values 1 union all select t.a + 1 from t where t.a<99) select * from t;
但要在这个数组里面做删除,改变元组的操作就不适用了.
‘捌’ 在IT项目建设中,如何保证数据库安全性
#云原生背景#
云计算是信息技术发展和服务模式创新的集中体现,是信息化发展的重要变革和必然趋势。随着“新基建”加速布局,以及企业数字化转型的逐步深入,如何深化用云进一步提升云计算使用效能成为现阶段云计算发展的重点。云原生以其高效稳定、快速响应的特点极大地释放了云计算效能,成为企业数字业务应用创新的原动力,云原生进入快速发展阶段,就像集装箱加速贸易全球化进程一样,云原生技术正在助力云计算普及和企业数字化转型。
云原生计算基金会(CNCF)对云原生的定义是:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式编程API。
#云安全时代市场发展#
云安全几乎是伴随着云计算市场而发展起来的,云基础设施投资的快速增长,无疑为云安全发展提供土壤。根据 IDC 数据,2020 年全球云安全支出占云 IT 支出比例仅为 1.1%,说明目前云安全支出远远不够,假设这一比例提升至 5%,那么2020 年全球云安全市场空间可达 53.2 亿美元,2023 年可达 108.9 亿美元。
海外云安全市场:技术创新与兼并整合活跃。整体来看,海外云安全市场正处于快速发展阶段,技术创新活跃,兼并整合频繁。一方面,云安全技术创新活跃,并呈现融合发展趋势。例如,综合型安全公司 PaloAlto 的 Prisma 产品线将 CWPP、CSPM 和 CASB 三个云安全技术产品统一融合,提供综合解决方案及 SASE、容器安全、微隔离等一系列云上安全能力。另一方面,新兴的云安全企业快速发展,同时,传统安全供应商也通过自研+兼并的方式加强云安全布局。
国内云安全市场:市场空间广阔,尚处于技术追随阶段。市场规模上,根据中国信通院数据,2019 年我国云计算整体市场规模达 1334.5亿元,增速 38.6%。预计 2020-2022 年仍将处于快速增长阶段,到 2023 年市场规模将超过 3754.2 亿元。中性假设下,安全投入占云计算市场规模的 3%-5%,那么 2023 年中国云安全市场规模有望达到 112.6 亿-187.7 亿元。技术发展上,中国在云计算的发展阶段和云原生技术的程度上与海外市场还有一定差距。国内 CWPP 技术应用较为广泛,对于 CASB、CSPM 一些新兴的云安全技术应用较少。但随着国内公有云市场的加速发展,云原生技术的应用越来越广泛,我们认为CASB、SCPM、SASE 等新兴技术在国内的应用也将越来越广泛。
#云上安全呈原生化发展趋势#
云原生技术逐渐成为云计算市场新趋势,所带来的安全问题更为复杂。以容器、服务网格、微服务等为代表的云原生技术,正在影响各行各业的 IT 基础设施、平台和应用系统,也在渗透到如 IT/OT 融合的工业互联网、IT/CT 融合的 5G、边缘计算等新型基础设施中。随着云原生越来越多的落地应用,其相关的安全风险与威胁也不断的显现出来。Docker/Kubernetes 等服务暴露问题、特斯拉 Kubernetes 集群挖矿事件、Docker Hub 中的容器镜像被“投毒”注入挖矿程序、微软 Azure 安全中心检测到大规模 Kubernetes 挖矿事件、Graboid 蠕虫挖矿传播事件等一系列针对云原生的安全攻击事件层出不穷。
从各种各样的安全风险中可以一窥云原生技术的安全态势,云原生环境仍然存在许多安全问题亟待解决。在云原生技术的落地过程中,安全是必须要考虑的重要因素。
#云原生安全的定义#
国内外各组织、企业对云原生安全理念的解释略有差异,结合我国产业现状与痛点,云原生与云计算安全相似,云原生安全也包含两层含义:“面向云原生环境的安全”和“具有云原生特征的安全”。
面向云原生环境的安全,其目标是防护云原生环境中的基础设施、编排系统和微服务的安全。这类安全机制,不一定具备云原生的特性(比如容器化、可编排),它们可以是传统模式部署的,甚至是硬件设备,但其作用是保护日益普及的云原生环境。
具有云原生特征的安全,是指具有云原生的弹性敏捷、轻量级、可编排等特性的各类安全机制。云原生是一种理念上的创新,通过容器化、资源编排和微服务重构了传统的开发运营体系,加速业务上线和变更的速度,因而,云原生系统的种种优良特性同样会给安全厂商带来很大的启发,重构安全产品、平台,改变其交付、更新模式。
#云原生安全理念构建#
为缓解传统安全防护建设中存在的痛点,促进云计算成为更加安全可信的信息基础设施,助力云客户更加安全的使用云计算,云原生安全理念兴起,国内外第三方组织、服务商纷纷提出以原生为核心构建和发展云安全。
Gartner提倡以云原生思维建设云安全体系
基于云原生思维,Gartner提出的云安全体系覆盖八方面。其中,基础设施配置、身份和访问管理两部分由云服务商作为基础能力提供,其它六部分,包括持续的云安全态势管理,全方位的可视化、日志、审计和评估,工作负载安全,应用、PaaS 和 API 安全,扩展的数据保护,云威胁检测,客户需基于安全产品实现。
Forrester评估公有云平台原生安全能力
Forrester认为公有云平台原生安全(Public cloud platform native security, PCPNS)应从三大类、37 个方面去衡量。从已提供的产品和功能,以及未来战略规划可以看出,一是考察云服务商自身的安全能力和建设情况,如数据中心安全、内部人员等,二是云平台具备的基础安全功能,如帮助和文档、授权和认证等,三是为用户提供的原生安全产品,如容器安全、数据安全等。
安全狗以4项工作防护体系建设云原生安全
(1)结合云原生技术的具体落地情况开展并落实最小权限、纵深防御工作,对于云原生环境中的各种组成部分,均可贯彻落实“安全左移”的原则,进行安全基线配置,防范于未然。而对于微服务架构Web应用以及Serverless应用的防护而言,其重点是应用安全问题。
(2)围绕云原生应用的生命周期来进行DevSecOps建设,以当前的云原生环境的关键技术栈“K8S + Docker”举例进行分析。应该在容器的全生命周期注重“配置安全”,在项目构建时注重“镜像安全”,在项目部署时注重“容器准入”,在容器的运行环境注重云计算的三要素“计算”“网络”以及“存储”等方面的安全问题。
(3)围绕攻击前、中、后的安全实施准则进行构建,可依据安全实施准则对攻击前、中、后这三个阶段开展检测与防御工作。
(4)改造并综合运用现有云安全技术,不应将“云原生安全”视为一个独立的命题,为云原生环境提供更多支持的主机安全、微隔离等技术可赋能于云原生安全。
#云原生安全新型风险#
云原生架构的安全风险包含云原生基础设施自身的安全风险,以及上层应用云原生化改造后新增和扩大的安全风险。云原生环境面临着严峻的安全风险问题。攻击者可能利用的重要攻击面包括但不限于:容器安全、编排系统、软件供应链等。下面对重要的攻击面安全风险问题进行梳理。
#云原生安全问题梳理#
问题1:容器安全问题
在云原生应用和服务平台的构建过程中,容器技术凭借高弹性、敏捷的特性,成为云原生应用场景下的重要技术支撑,因而容器安全也是云原生安全的重要基石。
(1)容器镜像不安全
Sysdig的报告中提到,在用户的生产环境中,会将公开的镜像仓库作为软件源,如最大的容器镜像仓库Docker Hub。一方面,很多开源软件会在Docker Hub上发布容器镜像。另一方面,开发者通常会直接下载公开仓库中的容器镜像,或者基于这些基础镜像定制自己的镜像,整个过程非常方便、高效。然而,Docker Hub上的镜像安全并不理想,有大量的官方镜像存在高危漏洞,如果使用了这些带高危漏洞的镜像,就会极大的增加容器和主机的入侵风险。目前容器镜像的安全问题主要有以下三点:
1.不安全的第三方组件
在实际的容器化应用开发过程当中,很少从零开始构建镜像,而是在基础镜像之上增加自己的程序和代码,然后统一打包最终的业务镜像并上线运行,这导致许多开发者根本不知道基础镜像中包含多少组件,以及包含哪些组件,包含的组件越多,可能存在的漏洞就越多。
2.恶意镜像
公共镜像仓库中可能存在第三方上传的恶意镜像,如果使用了这些恶意镜像来创建容器后,将会影响容器和应用程序的安全
3.敏感信息泄露
为了开发和调试的方便,开发者将敏感信息存在配置文件中,例如数据库密码、证书和密钥等内容,在构建镜像时,这些敏感信息跟随配置文件一并打包进镜像,从而造成敏感信息泄露
(2)容器生命周期的时间短
云原生技术以其敏捷、可靠的特点驱动引领企业的业务发展,成为企业数字业务应用创新的原动力。在容器环境下,一部分容器是以docker的命令启动和管理的,还有大量的容器是通过Kubernetes容器编排系统启动和管理,带来了容器在构建、部署、运行,快速敏捷的特点,大量容器生命周期短于1小时,这样一来容器的生命周期防护较传统虚拟化环境发生了巨大的变化,容器的全生命周期防护存在很大变数。对防守者而言,需要采用传统异常检测和行为分析相结合的方式,来适应短容器生命周期的场景。
传统的异常检测采用WAF、IDS等设备,其规则库已经很完善,通过这种检测方法能够直观的展示出存在的威胁,在容器环境下,这种方法仍然适用。
传统的异常检测能够快速、精确地发现已知威胁,但大多数未知威胁是无法通过规则库匹配到的,因而需要通过行为分析机制来从大量模式中将异常模式分析出来。一般来说,一段生产运营时间内的业务模式是相对固定的,这意味着,业务行为是可以预测的,无论启动多少个容器,容器内部的行为总是相似的。通过机器学习、采集进程行为,自动构建出合理的基线,利用这些基线对容器内的未知威胁进行检测。
(3)容器运行时安全
容器技术带来便利的同时,往往会忽略容器运行时的安全加固,由于容器的生命周期短、轻量级的特性,传统在宿主机或虚拟机上安装杀毒软件来对一个运行一两个进程的容器进行防护,显示费时费力且消耗资源,但在黑客眼里容器和裸奔没有什么区别。容器运行时安全主要关注点:
1.不安全的容器应用
与传统的Web安全类似,容器环境下也会存在SQL注入、XSS、RCE、XXE等漏洞,容器在对外提供服务的同时,就有可能被攻击者利用,从而导致容器被入侵
2.容器DDOS攻击
默认情况下,docker并不会对容器的资源使用进行限制,默认情况下可以无限使用CPU、内存、硬盘资源,造成不同层面的DDOS攻击
(4)容器微隔离
在容器环境中,与传统网络相比,容器的生命周期变得短了很多,其变化频率也快很多。容器之间有着复杂的访问关系,尤其是当容器数量达到一定规模以后,这种访问关系带来的东西向流量,将会变得异常的庞大和复杂。因此,在容器环境中,网络的隔离需求已经不仅仅是物理网络的隔离,而是变成了容器与容器之间、容器组与宿主机之间、宿主机与宿主机之间的隔离。
问题2:云原生等保合规问题
等级保护2.0中,针对云计算等新技术、新应用领域的个性安全保护需求提出安全扩展要求,形成新的网络安全等级保护基本要求标准。虽然编写了云计算的安全扩展要求,但是由于编写周期很长,编写时主流还是虚拟化场景,而没有考虑到容器化、微服务、无服务等云原生场景,等级保护2.0中的所有标准不能完全保证适用于目前云原生环境;
通过安全狗在云安全领域的经验和具体实践,对于云计算安全扩展要求中访问控制的控制点,需要检测主机账号安全,设置不同账号对不同容器的访问权限,保证容器在构建、部署、运行时访问控制策略随其迁移;
对于入侵防范制的控制点,需要可视化管理,绘制业务拓扑图,对主机入侵进行全方位的防范,控制业务流量访问,检测恶意代码感染及蔓延的情况;
镜像和快照保护的控制的,需要对镜像和快照进行保护,保障容器镜像的完整性、可用性和保密性,防止敏感信息泄露。
问题3:宿主机安全
容器与宿主机共享操作系统内核,因此宿主机的配置对容器运行的安全有着重要的影响,比如宿主机安装了有漏洞的软件可能会导致任意代码执行风险,端口无限制开放可能会导致任意用户访问的风险。通过部署主机入侵监测及安全防护系统,提供主机资产管理、主机安全加固、风险漏洞识别、防范入侵行为、问题主机隔离等功能,各个功能之间进行联动,建立采集、检测、监测、防御、捕获一体化的安全闭环管理系统,对主机进行全方位的安全防护,协助用户及时定位已经失陷的主机,响应已知、未知威胁风险,避免内部大面积主机安全事件的发生。
问题4:编排系统问题
编排系统支撑着诸多云原生应用,如无服务、服务网格等,这些新型的微服务体系也同样存在着安全问题。例如攻击者编写一段代码获得容器的shell权限,进而对容器网络进行渗透横移,造成巨大损失。
Kubernetes架构设计的复杂性,启动一个Pod资源需要涉及API Server、Controller、Manager、Scheler等组件,因而每个组件自身的安全能力显的尤为重要。API Server组件提供的认证授权、准入控制,进行细粒度访问控制、Secret资源提供密钥管理及Pod自身提供安全策略和网络策略,合理使用这些机制可以有效实现Kubernetes的安全加固。
问题5:软件供应链安全问题
通常一个项目中会使用大量的开源软件,根据Gartner统计至少有95%的企业会在关键IT产品中使用开源软件,这些来自互联网的开源软件可能本身就带有病毒、这些开源软件中使用了哪些组件也不了解,导致当开源软件中存在0day或Nday漏洞,我们根本无法获悉。
开源软件漏洞无法根治,容器自身的安全问题可能会给开发阶段带的各个过程带来风险,我们能做的是根据SDL原则,从开发阶段就开始对软件安全性进行合理的评估和控制,来提升整个供应链的质量。
问题6:安全运营成本问题
虽然容器的生命周期很短,但是包罗万象。对容器的全生命周期防护时,会对容器构建、部署、运行时进行异常检测和安全防护,随之而来的就是高成本的投入,对成千上万容器中的进程行为进程检测和分析,会消耗宿主机处理器和内存资源,日志传输会占用网络带宽,行为检测会消耗计算资源,当环境中容器数量巨大时,对应的安全运营成本就会急剧增加。
问题7:如何提升安全防护效果
关于安全运营成本问题中,我们了解到容器安全运营成本较高,我们该如何降低安全运营成本的同时,提升安全防护效果呢?这就引入一个业界比较流行的词“安全左移”,将软件生命周期从左到右展开,即开发、测试、集成、部署、运行,安全左移的含义就是将安全防护从传统运营转向开发侧,开发侧主要设计开发软件、软件供应链安全和镜像安全。
因此,想要降低云原生场景下的安全运营成本,提升运营效率,那么首先就要进行“安全左移”,也就是从运营安全转向开发安全,主要考虑开发安全、软件供应链安全、镜像安全和配置核查:
开发安全
需要团队关注代码漏洞,比如使用进行代码审计,找到因缺少安全意识造成的漏洞和因逻辑问题造成的代码逻辑漏洞。
供应链安全
可以使用代码检查工具进行持续性的安全评估。
镜像安全
使用镜像漏洞扫描工具持续对自由仓库中的镜像进行持续评估,对存在风险的镜像进行及时更新。
配置核查
核查包括暴露面、宿主机加固、资产管理等,来提升攻击者利用漏洞的难度。
问题8:安全配置和密钥凭证管理问题
安全配置不规范、密钥凭证不理想也是云原生的一大风险点。云原生应用会存在大量与中间件、后端服务的交互,为了简便,很多开发者将访问凭证、密钥文件直接存放在代码中,或者将一些线上资源的访问凭证设置为弱口令,导致攻击者很容易获得访问敏感数据的权限。
#云原生安全未来展望#
从日益新增的新型攻击威胁来看,云原生的安全将成为今后网络安全防护的关键。伴随着ATT&CK的不断积累和相关技术的日益完善,ATT&CK也已增加了容器矩阵的内容。ATT&CK是对抗战术、技术和常识(Adversarial Tactics, Techniques, and Common Knowledge)的缩写,是一个攻击行为知识库和威胁建模模型,它包含众多威胁组织及其使用的工具和攻击技术。这一开源的对抗战术和技术的知识库已经对安全行业产生了广泛而深刻的影响。
云原生安全的备受关注,使ATTACK Matrix for Container on Cloud的出现恰合时宜。ATT&CK让我们从行为的视角来看待攻击者和防御措施,让相对抽象的容器攻击技术和工具变得有迹可循。结合ATT&CK框架进行模拟红蓝对抗,评估企业目前的安全能力,对提升企业安全防护能力是很好的参考。
‘玖’ 如何保证oracle数据库的安全性
数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失
以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。本文围绕数据
库的安全性问题提出了一些安全性策略,希望对数据库管理员有所帮助,不再
夜夜恶梦。数据库安全性问题应包括两个部分:
一、数据库数据的安全
它应能确保当数据库系统DownTime时,当数据库数据存储媒体被破
坏时以及当数据库用户误操作时,数据库数据信息不至于丢失。
二、数据库系统不被非法用户侵入
它应尽可能地堵住潜在的各种漏洞,防止非法用户利用它们侵入数据
库系统。
对于数据库数据的安全问题,数据库管理员可以参考有关系统双机
热备份功能以及数据库的备份和恢复的资料。
以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。
组和安全性:
在操作系统下建立用户组也是保证数据库安全性的一种有效方法。
Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,
另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,
关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的
几种方法:
(1) 在安装Oracle Server前,创建数据库管理员组(DBA)而且
分配root和Oracle软件拥有者的用户ID给这个组。DBA能执
行的程序只有710权限。在安装过程中SQL*DBA系统权限命令
被自动分配给DBA组。
(2) 允许一部分Unix用户有限制地访问Oracle服务器系统,增加
一个由授权用户组的Oracle组,确保给Oracle服务器实用例
程Oracle组ID,公用的可执行程序,比如SQL*Plus,SQL*Fo
rms等,应该可被这组执行,然后该这个实用例程的权限为
710,它将允许同组的用户执行,而其他用户不能。
(3) 改那些不会影响数据库安全性的程序的权限为711。
注:在我们的系统中为了安装和调试的方便,Oracle数据库中
的两个具有DBA权限的用户Sys和System的缺省密码是manager。
为了您数据库系统的安全,我们强烈建议您该掉这两个用户的
密码,具体操作如下:
在SQL*DBA下键入:
alter user sys indentified by password;
alter user system indentified by password;
其中password为您为用户设置的密码。
Oracle服务器实用例程的安全性:
以下是保护Oracle服务器不被非法用户使用的几条建议:
(1) 确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle
软件拥有者所有;
(2) 给所有用户实用便程(sqiplus,sqiforms,exp,imp等)711权
限,使服务器上所有的用户都可访问Oracle服务器;
(3) 给所有的DBA实用例程(比如SQL*DBA)700权限。Oracle服务器
和Unix组当访问本地的服务器时,您可以通过在操作系统下把
Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服
务器的安全性,这种方法适应于本地访问。
在Unix中指定Oracle服务器角色的格式如下:
ora_sid_role[_dla]
其中
sid 是您Oracle数据库的oracle_sid;
role 是Oracle服务器中角色的名字;
d (可选)表示这个角色是缺省值;
a (可选)表示这个角色带有WITH ADMIN选项,
您只可以把这个角色授予其他角色,不能是其他用户。
以下是在/etc/group文件中设置的例子:
ora_test_osoper_d:NONE:1:jim,narry,scott
ora_test_osdba_a:NONE:3:pat
ora_test_role1:NONE:4:bob,jane,tom,mary,jim
bin: NONE:5:root,oracle,dba
root:NONE:7:root
词组“ora_test_osoper_d”表示组的名字;词组“NONE”表示这
个组的密码;数字1表示这个组的ID;接下来的是这个组的成员。前两
行是Oracle服务器角色的例子,使用test作为sid,osoper和osdba作
为Oracle服务器角色的名字。osoper是分配给用户的缺省角色,osdba
带有WITH ADMIN选项。为了使这些数据库角色起作用,您必须shutdown
您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中
os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色
有connect internal权限,运行orapwd为这些角色设置密码。当您尝
试connect internal时,您键入的密码表示了角色所对应的权限。
SQL*DBA命令的安全性:
如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权
限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些
命令被授予了特殊的系统权限。
(1) startup
(2) shutdown
(3) connect internal
数据库文件的安全性:
Oracle软件的拥有者应该这些数据库文件
($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的
拥有者可读可写,同组的和其他组的用户没有写的权限。
Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加
安全性,建议收回同组和其他组用户对这些文件的可读权限。
网络安全性:
当处理网络安全性时,以下是额外要考虑的几个问题。
(1) 在网络上使用密码
在网上的远端用户可以通过加密或不加密方式键入密码,
当您用不加密方式键入密码时,您的密码很有可能被非法用
户截获,导致破坏了系统的安全性。
(2) 网络上的DBA权限控制
您可以通过下列两种方式对网络上的DBA权限进行控制:
A 设置成拒绝远程DBA访问;
B 通过orapwd给DBA设置特殊的密码。
建立安全性策略:
系统安全性策略
(1) 管理数据库用户
数据库用户是访问Oracle数据库信息的途径,因此,
应该很好地维护管理数据库用户的安全性。按照数据库系统
的大小和管理数据库用户所需的工作量,数据库安全性管理
者可能只是拥有create,alter,或drop数据库用户的一个
特殊用户,或者是拥有这些权限的一组用户,应注意的是,只
有那些值得信任的个人才应该有管理数据库用户的权限。
(2) 用户身份确认
数据库用户可以通过操作系统,网络服务,或数据库进行
身份确认,通过主机操作系统进行用户身份认证的优点有:
A 用户能更快,更方便地联入数据库;
B 通过操作系统对用户身份确认进行集中控制:如果操作
系统与数据库用户信息一致,那么Oracle无须存储和管
理用户名以及密码;
C 用户进入数据库和操作系统审计信息一致。
(3) 操作系统安全性
A 数据库管理员必须有create和delete文件的操作系统权限;
B 一般数据库用户不应该有create或delete与数据库相关文
件的操作系统权限;
C 如果操作系统能为数据库用户分配角色,那么安全性管理者
必须有修改操作系统帐户安全性区域的操作系统权限。
数据的安全性策略:
数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数
据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该
有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。
用户安全性策略:
(1) 一般用户的安全性
A 密码的安全性
如果用户是通过数据库进行用户身份的确认,那么建议
使用密码加密的方式与数据库进行连接。这种方式的设置方
法如下:
在客户端的oracle.ini文件中设置
ora_encrypt_login数为true;
在服务器端的initORACLE_SID.ora文件中设置
dbling_encypt_login参数为true。
B 权限管理
对于那些用户很多,应用程序和数据对象很丰富的数据
库,应充分利用“角色”这个机制所带的方便性对权限进行
有效管理。对于复杂的系统环境,“角色”能大大地简化权
限的管理。
(2) 终端用户的安全性
您必须针对终端用户制定安全性策略。例如,对于一个有
很多用户的大规模数据库,安全性管理者可以决定用户组分类,
为这些用户组创建用户角色,把所需的权限和应用程序角色授
予每一个用户角色,以及为用户分配相应的用户角色。当处理
特殊的应用要求时,安全性管理者也必须明确地把一些特定的
权限要求授予给用户。您可以使用“角色”对终端用户进行权
限管理。
数据库管理者安全性策略:
(1) 保护作为sys和system用户的连接
当数据库创建好以后,立即更改有管理权限的sys和system用
户的密码,防止非法用户访问数据库。当作为sys和system用户
连入数据库后,用户有强大的权限用各种方式对数据库进行改动。
(2) 保护管理者与数据库的连接
应该只有数据库管理者能用管理权限连入数据库,当以sysdba
或startup,shutdown,和recover或数据库对象(例如create,
drop,和delete等)进行没有任何限制的操作。
(3) 使用角色对管理者权限进行管理
应用程序开发者的安全性策略:
(1) 应用程序开发者和他们的权限
数据库应用程序开发者是唯一一类需要特殊权限组完成自己
工作的数据库用户。开发者需要诸如create table,create
procere等系统权限,然而,为了限制开发者对数据库的操作,
只应该把一些特定的系统权限授予开发者。
(2) 应用程序开发者的环境
A 程序开发者不应与终端用户竞争数据库资源;
B 用程序开发者不能损害数据库其他应用产品。
(3) free和controlled应用程序开发
应用程序开发者有一下两种权限:
A free development
应用程序开发者允许创建新的模式对象,包括table,index,
procere,package等,它允许应用程序开发者开发独立于其
他对象的应用程序。
B controlled development
应用程序开发者不允许创建新的模式对象。所有需要table,
indes procere等都由数据库管理者创建,它保证了数据
库管理者能完全控制数据空间的使用以及访问数据库信息的
途径。但有时应用程序开发者也需这两种权限的混和。
(4) 应用程序开发者的角色和权限
数据库安全性管理者能创建角色来管理典型的应用程序开
发者的权限要求。
A create系统权限常常授予给应用程序开发者,以到于
他们能创建他的数据对象。
B 数据对象角色几乎不会授予给应用程序开发者使用的
角色。
(5) 加强应用程序开发者的空间限制
作为数据库安全性管理者,您应该特别地为每个应用程
序开发者设置以下的一些限制:
A 开发者可以创建table或index的表空间;
B 在每一个表空间中,开发者所拥有的空间份额。应用程
序管理者的安全在有许多数据库应用程序的数据库系统
中,您可能需要一应用程序管理者,应用程序管理者应
负责以下的任务:
C 为每一个应用程序创建角色以及管理每一个应用程序
的角色;
D 创建和管理数据库应用程序使用的数据对象;
E 需要的话,维护和更新应用程序代码和Oracle的存储
过程和程序包。