oracle 11g ocp 笔记(6)-- oracle安全

1、创建和管理账号

用户、用户帐户、模式术语

用户、用户帐户、模式常替换使用,但这些术语并不完全相同.

用户通过建立到实例的会话连接到用户帐户,并基于用户帐户名登录。

模式(schema)是用户帐户拥有的一组对象。

用户账户的属性:

   用户名

  身份认证方式

  默认表空间

  表空间配额

  临时表空间

  用户配置文件

  状态

1)用户名: 字母开头、只能包含字母、数字、美元符$、下划线_,不能是保留字,字母自动转化成大写,不按规则则需要双引号指定,不能超过30个字符。一旦创建不能修改。

·身份验证方法:

2)默认表空间:如果没指定 则使用数据库的默认表空间,如果数据库也没有指定则使用system表空间。

alter database default tablespace tablespace_name;        -- 修改数据库的默认表空间

alter user username default tablespace tablespace_name;   -- 修改用户帐户的默认表空间

3)配额:select user_name,default_tablespace,temporary_tablespace from dba_users.

alter user    [username ]  quota 100M on [tablespace_name]

     alter user    [username ]  quota unlimited on [tablespace_name]

4)临时表空间

·临时表空间   alter user username temporary tablespace tablespace_name; -- 修改用户的临时表空间.用户不需要临时表空间上的配额.

5)配置文件

6)用户状态(dba_users.account_status)

OPEN: 打开

LOCKED: 锁定

EXPIRED: 过期

EXPIRED & LOCKED: 过期并锁定

EXPIRED(GRACE): 正常过期,在配置的时间段内,可以更改口令

LOCKED(TIMED): 登录尝试失败,帐户被锁定

EXPIRED & LOCKED(TIMED): 过期并超时锁定

EXPIRED(GRACE) & LOCKED(TIMED): 正常过期并超时锁定

alter user username account lock;                 -- 锁定帐户

alter user username account unlock;               -- 解锁帐户

alter user username password expire;              -- 强制用户更改口令

alter user username identified by password;       -- 更改用户口令

alter user username identified by value password; -- 更改用户口令(直接更改加密后的值).

身份认证方法:

对比用户名和密码

操作系统认证

口令文件认证

(1)操作系统和口令文件身份验证

要启用操作系统和口令文件身份验证(二者是相配的),必须为用户授予SYSDBA或SYSOPER权限:

grant [sysdba|sysoper] to username;

如果向用户授予这些权限之一或所有权限,则会将用户口令从数据字典复制到外部口令文件中,此时,即使数据库未处于打开状态,实例也可以读取口令。

select * from v$pwfile_users; -- 口令文件用户,查看哪些用户被授予SYSDBA或SYSOPER

-- 重建口令文件(口令文件默认位置:$ORACLE_HOME/dbs/orapwSID)

orapwd file=<fileName> passwod=<password> entries=<users>

操作系统身份验证:

connect / as [sysdba|sysoper];

口令文件身份验证

connect username/password[@db_alias] as [sysdba|sysoper];

(2)口令身份验证

connect username/password[@db_alias];

使用口令身份验证进行连接时,数据库必须处于打开状态,实例将验证数据字典中存储的用户口令。

不允许SYS用户以口令身份验证的方式进行连接,SYS只能使用口令文件、操作系统或LDAP身份验证。

任何用户都可以随时更改自己的用户帐户口令,有充足权限的用户(如SYSTEM)可以更改任何用户帐户口令。

alter user username identified by password;       -- 更改用户口令

(3)外部身份验证:

如果使用外部身份验证创建用户帐户,Oracle会将身份验证委托给外部服务。

启用Advanced Security选项: 可用外部服务: Kerberose服务器、Radius服务器、Windows本地身份验证服务.

未启用Advanced Security选项,只能使用操作系统身份验证,普通用户也适用.

普通用户使用操作系统身份验证:

使用与操作系统用户帐户同样的名称创建Oracle用户帐户,但创建的用户需要加上前缀ops$,前缀默认设置为参数os_authent_prefix的值:

select value from v$parameter where name=‘os_authent_prefix‘;

create user ops$username identified externally;

grant create session to ops$username;

以username身份登录linux,以操作系统身份登录Oracle数据库。

sqlplus /

(4)全局身份验证

使用LDAP服务器.

1.3 创建和删除用户帐户

创建用户帐户:

create user scott identified by tiger

default tablespace users temporary tablespace temp

quota 100m on users, quota unlimited on example

profile default

password expire

account unlock;

删除用户帐户:

drop user scott cascade;

------------------------------------------------------

5.授予和撤消权限

系统权限: 允许用户执行影响数据字典的操作.

对象权限: 允许用户执行影响数据的操作.

(1)系统权限

常用系统权限:

·CREATE SESSION

·RESTRICTED SESSION

·ALTER DATABASE

·ALTER SYSTEM

·CREATE TABLESPACE, ALTER TABLESPACE, DROP TABLESPACE

·CREATE TABLE

·GRANT ANY OBJECT PRIVILEGE

·CREATE ANY TABLE

·DROP ANY TABLE

·INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE

·SELECT ANY TABLE

用户的系统权限:

select privilege from dba_sys_privs where grantee=‘username‘;    -- 查看用户拥有的系统权限

授权与撤消语法:

grant privilege[,privilege...] to username [with admin option];  -- 授予权限

revoke privilege[,privilege...] from username;                   -- 撤消权限

grant create session, alter session, create table to username;

允许权限传递(with admin option),撤消权限时不会级联撤消.

connect system/oracle;

grant create table to scott with admin option;

connect scott/tiger;

grant create table to username;

connect system/oracle;

revoke create table from scott;

grant select any table to scott。any字样的会覆盖原来的权限,通常会带来恶劣的影响(比以前要好一些,不能查sys模式中的表)

(2)对象权限

·SELECT:  授权对象为表、视图、同义词、序列

·INSERT:  授权对象为表、视图、同义词

·UPDATE:  授权对象为表、视图、同义词

·DELETE:  授权对象为表、视图、同义词

·ALTER:   授权对象为表、序列

·EXECUTE: 授权对象为过程、函数、包、同义词

select grantee,privilege,grantor,grantable from dba_tab_privs; -- 查看表权限

授权与撤消语法:

grant privilege[,privilege...] on schema.object to username [with grant option];  -- 授予权限

revoke privilege[,privilege...] on schema.object from username;                   -- 撤消权限

grant select on hr.employees to scott;

grant update(salary) on hr.employees to scott;

grant all on hr.regions to scott;

允许权限传递(with grant option),撤消权限时级联撤消.

connect hr/hr;

grant select on employees to scott with grant option;

connect scott/tiger;

grant select on hr.employees to username;

connect hr/hr

revoke select on employees from scott;

------------------------------------------------------------------------------------------------

6.创建和管理角色

角色不是模式对象,不属于任何人,与用户共享同一命名空间,角色与用户不能同名。

预定义角色:

·CONNECT:             只有CREATE SESSION权限,11g前还具有创建数据存储对象的系统权限.

·RESOURCE:            可以创建数据对象和过程对象,12c前还有UNLIMITED TABLESPACE权限.

·DBA:                 拥有大多数系统权限,及多个对象权限和角色,可以管理数据库的所有方面,不能启动和关闭数据库.

·SELECT_CATALOG_ROLE

·SCHEDULER_ADMIN

·PUBLIC:              此角色将授予每个用户,比较特殊,不会出现在dba_roles视图中.

select role from dba_roles;     -- 查看角色

select * from dba_role_privs;   -- 查看角色权限

-------------------------------------------------------------------------------------

7.创建和管理配置文件

配置文件(profile)功能: 实施口令策略,限制会话可以占用的资源.

配置文件的口令策略始终实施,而配置文件的资源限制只有在实例参数resource_limit=true时才实施。

select username,profile from dba_users;             -- 为用户帐户分配的配置文件,默认的配置文件为DEFAULT

select * from dba_profiles where profile=‘DEFAULT‘; -- 配置文件的内容

口令限制:

·FAILED_LOGIN_ATTEMPTS    登录时口令允许连续错误次数

·PASSWORD_LOCK_TIME       到达FAILED_LOGIN_ATTEMPTS后,锁定帐户的天数

·PASSWORD_LIFT_TIME       口令过期前的天数

·PASSWORD_GRACE_TIME      口令过期后第一次成功登录后的天数

·PASSWORD_REUSE_TIME      可以重新使用口令前的天数

·PASSWORD_REUSE_MAX       允许重新使用口令的次数

·PASSWORD_VERIFY_FUNCTION 检验口令的复杂程度的函数

资源限制:

·SESSIONS_PER_USER

·CPU_PER_SESSION

·CPU_PER_CALL

·LOGICAL_READS_PER_SESSION

·LOGICAL_READS_PER_CALL

·PRIVATE_SGA

·CONNECT_TIME

·IDLE_TIME

·COMPOSITE_LIMIT

打开实例参数设置的资源限制参数

alter system set resource_limit=true;

配置文件的创建和分配

create profile dba_profile limit sessions_per_user unlimited

password_lift_time 7 password_grace_time 1;

alter user sys profile dba_profile;

alter user system profile dba_profile;

alter profile default limit sessions_per_user 1;  -- 修改配置文件

启用更高级口令管理的方式,运行脚本:

$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

删除配置文件,重新分配DEFAULT配置文件.

drop profile profile_name cascade;

---------------------------------------------------------------------

最小化原则:

-------------------------------------------------------------------------

使用标准数据库审核

一.审计SYSDBA活动

启用审计SYSDBA活动,作为SYSDBA或SYSOPER连接数据库的用户所发布的每条语句都会被写入操作系统的审计跟踪,从而能够给出dba所进行操作的完整记录。

审计跟踪必须受到保护,如果dba能够删除审计记录,那么创建这些审计记录就毫无意义。因此,dba不应该拥有操作系统的超级用户权限。

关于审计的参数:

audit_sys_operations  -- 是否启用审计SYSDBA活动,默认情况为TRUE

audit_file_dest       -- 审计跟踪文件所在目录

select name,value from v$parameter where name like ‘audit%‘;

二.数据库审计

设置数据库审计之前,必须设置audit_trail参数,参数值:

·NONE(或者FALSE): 禁用数据库审计

·OS: 审计记录会被写至操作系统的审计跟踪目录(audit_file_dest所在目录).

·DB:审计记录会被写入数据字典表sys.aud$.

·DB_EXTENDED: 与DB大体相同,不过包含生成审计记录的、具有绑定变量的SQL语句.

·XML: 与OS的作用大体相同,但使用XML标记设置格式.

·XML_EXTENDED: 与XML大体相同,但使用SQL语句和绑定变量.

设置audit_trail参数后,就可以使用数据库审计来捕获登录尝试、系统权限与对象权限的使用以及SQL命令的执行,还可以指定当这些事件成功和/或因权限控制而失败时是否对它们进行审计。审计对没有成功执行的命令特别有用,此时生成的任何记录都会说明用户试图违反自己的访问权限。

使用audit命令可以配置数据库审计:

SQL> audit create any trigger;

SQL> audit select any table by session;

SQL> audit select any table by access;

-- by session审计会为违反审计条件的每个会话生成一条审计记录,不考虑违反条件的次数.

-- by access为每次违反条件的情况生成一条记录。

SQL> audit insert on ar.hz_parties whenever successful;  -- 在指定表插入一行就会生成审计记录

SQL> audit all on ar.ra_interface_lines_all;             -- 审计针对指定表执行DDL语句的每个会话.

-- whenever successful 审计记录限制为操作成功的记录

-- whenever not successful

SQL> audit session whenever not successful;              -- 审计登录

如果要审计操作系统(audit_trail参数设置为OS或XML),使用适当的编辑器,查看在操作系统审计跟踪中创建的文件,查看审计结果。

如果审计针对数据库(audit_trail参数设置为DB或DB_EXTENDED),审计记录写入数据字典表sys.aud$中,但一般使用视图dba_audit_trail查看审计结果。

审计视图

dba_audit_trail

dba_audit_object

dba_audit_statement

dba_audit_session

三.使用触发器执行基于值的审计

数据库审计可以捕获到针对某个表执行一条命令的事实,但是没有跟踪受影响的行。例如,如果执行audit insert on
hr.employees命令,只要在指定表中插入一行就会生成一条审计记录,但是该审计记录不会包含插入行的实际值。有些时候,我们希望捕获这些实际值,此时就需要使用数据库触发器。

CREATE OR REPLACE TRIGGER system.creditrating_audit

AFTER UPDATE OF creditrating

ON oe.customers

REFERENCING NEW AS NEW OLD AS OLD

FOR EACH ROW

BEGIN

IF :old.creditrating != :new.creditrating THEN

INSERT INTO system.creditrating_audit
VALUES(sys_context(‘userenv‘,‘os_user‘),sys_context(‘userenv‘,‘ip_address‘),:new.cust_id||‘
credite trating changed from ‘||:old.creditrating||‘ to
‘||:new.creditrating);

END IF;

END;

/

四.细粒度审计(fine-grained auditing,FGA)

细粒度审计可以被配置为只在访问特定行或特定行的特定列时生成审计记录,此外还可以被配置为在违反审计条件时运行一个PL/SQL代码块.

配置细粒度审计需要使用程序包dbms_fga.创建审计策略使用过程add_policy.

过程add_policy的参数:

·object_schema

·object_name

·policy_name

·audit_condition

·audit_column

·handler_schema     -- 达到审计条件时所运行过程的用户名

·handler_module     -- 达到审计条件时所运行的PL/SQL过程

·enable             -- TRUE/FALSE,启用和禁用

·statement_types    -- 审计的语句类型: SELECT、INSERT、UPDATE、DELETE

·audit_trail

·audit_column_opts  -- DBMS_FGA_ANY_COLUMNS/DBMS_FGA_ALL_COLUMNS

创建审计策略例子:

dbms_fga.add_policy(object_schema => ‘HR‘,

object_name => ‘EMPLOYEES‘,

policy_name => ‘POL1‘,

audit_condition = ‘department_id=80‘,

audit_column => ‘SALARY‘);

审计视图:

dba_audit_trail

dba_fga_audit_trail

dba_common_audit_trail

创建角色:

create role rolename;

grant create session to rolename [with admin option|with grant option];

revoke rolename from rolename2;

grant select on hr.regions to rolename;

grant rolename to rolename2 with admin option;

revoke rolename from rolename2

原文地址:https://www.cnblogs.com/hezt1114/p/8975317.html

时间: 2024-11-05 20:47:32

oracle 11g ocp 笔记(6)-- oracle安全的相关文章

oracle 11g ocp 笔记(2)-- 安装和创建数据库

1.了解 数据库管理工具 1.2  OUI(Oracle Universal Installer) ·OUI产品清单(inventory)位置 Windows: %SystemRoot\Program files\Oracle\Inventory HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\inst_loc Liunx:   /etc/oraInst.loc Solaris  /var/opt/oracle/oraInst.loc AIX:????? ·在Linux或U

oracle 11g ocp 笔记(3)-- 实例管理

1.设置初始化参数文件:  查询参数可以从v$parameter  (从实例中取得数值) 和v$spparameter(从参数文件取值.) 两个参数文件: 1.pfile(parameter file,参数文件)     pfile是文本格式的参数文件,实例启动时只加载一次,通常认为是静态的.    新版本Oracle已逐步取消pfile文件了   默认名称: initSID.ora 默认位置: $ORACLE_HOME/dbs/ /u01/app/oracle/product/12.1.0/d

oracle 11g ocp 笔记(15)--使用rman进行备份

一.备份的术语 关闭与打开(冷备和热备 一致性备份和非一致性备份) 打开的备份只能是归档模式下 全部与局部  局部备份只能是归档模式下. 完整备份和增量备份   增量备份分为 累计增量备份和差异增量备份. rman 能备份的文件有:数据文件.归档文件.控制文件.spfile,备份集片 不能备份的文件有:redo log 临时文件.口令文件.pfile,oracle net文件. rman可以分三类 备份集.压缩备份集和影像副本.    备份集是增量或者是完整的,镜像只能是完整的, 备份集 存储库

Oracle 11g学习笔记2 Oracle数据库的体系结构

Oracle数据库的体系结构主要有4种: 物理存储结构 逻辑存储结构 内存结构 进程结构 一.物理存储结构 Oracle数据库在物理上是由存储在磁盘中的系统文件所组成的,这些文件就是Oracle的物理存储结构. 1.1数据文件 数据文件指存储在数据库中数据的文件,通常是*.dbf格式.包括系统数据.数据字典数据.索引数据. 1.2控制文件 通常是*. ctl格式,用于记录数据的物理结构. 1.3 重做日志文件 重做日志文件用于记录数据库中所有修改信息的文件,通常是* .LOG格式. 二.逻辑存储

oracle 11g rac 笔记(VMware 和esxi主机都可以使用)

这个只是笔记,防止丢失,没事见整理 在vmware安装目录 创建磁盘: vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 D:\VMWARE\racsharedisk\ocr.vmdk vmware-vdiskmanager.exe -c -s 1000Mb -a lsilogic -t 2 D:\VMWARE\racsharedisk\ocr2.vmdk vmware-vdiskmanager.exe -c -s 1000Mb -a l

关于oracle 11g 安装笔记记录

安装ORACLE 11G 64位报错 报错信息: 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2012-07-25_03-10-02PM. 请稍候...[[email protected] database]$ ## An unexpected error has been detected by HotSpot Virtual Machine:# # SIGSEGV (0xb) at pc=0x00000034c9c14d70, pi

Oracle 11g 安装笔记

安装前注意事项: 1. 关闭网络 2. 关闭防火墙(控制面板-windows防火墙-左侧列表"打开或关闭防火墙",把两个网络位置的防火墙都关掉,这样就可以侧底关掉了) 3. 退出安全保护软件:eg.360安全卫士,腾讯电脑管家之类的软件.... 双击"setup.exe" 等待 忽略,点击下一步 管理口令:orcl 确认口令: 管理口令(P):[INS-30011] 输入的 ADMIN 口令不符合 Oracle 建议的标准. 原因 - Oracle 建议输入的口令应

Oracle 11g学习笔记1

一.Oracle服务管理 在Windows操作系统环境下,Oracle数据库服务器以系统服务的方式运行.所有的Oracle服务名称都以Oracle开头.其中主要的Oracle服务有一下3种: Oracle<ORACLE_HOME_NAME>TNSListener: 监听程序服务. OracleDBConsoleorcl:本地OEM控制. OracleService<SID>:Oracle数据库实例服务,是Oracle数据库的主要服务. 二.Oracle默认用户 在安装Oracle时

Oracle 11g Articles

发现一个比较有意思的网站,http://www.oracle-base.com/articles/11g/articles-11g.php Oracle 11g Articles Oracle Database 11g: New Features For Administrators OCP Exam Articles Oracle Database 11g Release 1: Miscellaneous Articles Oracle Database 11g Release 2: Misc