zoukankan      html  css  js  c++  java
  • [ORACLE] ORACLE 安全性 【用户管理 权限管理 配置文件 数据库审计】

    1. 用户账号的管理与创建
    2. 用户权限的授予与撤销
    3. 角色的创建与管理
    4. 配置文件的管理与创建
    5. 安全管理的原则--最小权限原则
    6. 数据库审核

    1.用户账号的管理与创建

      账号的属性 :用户名/身份验证方法/默认表空间/表空间配额/临时表空间/配置文件/账号状态

      用户名: <30 字母/数字/$/_  创建后不可更改用户名

    create user pan identified by pw44wo$d default tablespace TEST temporary tablespace TEMP; 

      默认表空间和配额

    select username,DEFAULT_TABLESPACE,temporary_TABLESPCE from dba_users where username='pan'
    
    alter user pan quota 10m on users;
    alter user pan quota unlimited on example;
    select tablespace_name,bytes,max_bytes from dba_ts_quotas where username='pan'
    select property_name,property_value from database_proerties where proerty_name like'%tablespace'
    
    alter user pan temporary tablespace temp;  #用户不需要临时表空间配额

      账号状态: OPEN/LOCKED/EXPIRED/EXPIRED &lOCKED/EXPIRED GRACE/LOCKED TIMED/EXPIRTED & LOCKED TIMES/EXPIRED GRACE &LOCKED TIMED)

    alter user pan account lock
    alter user pan password expire
    alter user pan account unlock

      身份验证方法

    grant [sysdba|sysoper] to username #操作系统和口令文件身份验证
      #v$pwfile_users 查询授予sysdba 和sysoper 的用户 connect username
    / password [@db_alias] as [sysdba|sysoper] #口令文件身份验证 connect / as [sysdba| sysoper] #操作系统 不需要口令 connect username / password [@db_alias] # 口令身份验证 select value from v$parameter where name ='os_authent_prefix';# 查询OPS$ 字符串的值,如果值为空字符串,则允许数据库管理员和OS账号管理员在使用外部身份验证使用相同的用户名。 create user ops$pan identified externally; grant create sesion to ops$pan sqlplus / #linux外部身份验证登录 creeate user "OPS$TTpan" identified externally;# windows 外部身份验证登录 TT是域名,pan账号

      账号管理

    create user pan identified by tiger
    default tablespace users temporary tablespace temp
    quota 100 on users,quota unlimited on example
    profile devloper_profile
    password expire
    account unlock;
    
    alter user pan profile product_profile;
    drop user pan cascade;

    2.用户权限的授予与撤销

      grant/revoke/grantor/grantee

      系统权限(撤销不可级联)   数据字典: system_privilege_map  dba_sys_privs session_privs role_sys_privs

        create session

        restricted session

        alter database

        alter system

        create tablespace

        create database link

        create table

        create any table

        grant any object privilege

        create any table

        drop any table

        insert any table/update any table/delete any table

        select any table

        audit system

        create any index

        create profile

        create procedure

        create user

        create view

        create synonym

        create any synonym

        create public sysnonym

    grant create session ,alter session,create table,create view,create synonym,create cluster,craete database link,create sequence,
    create tigger,create type,create procedure,create operator to user with admin option;#允许被授权人将权限传递给第三方 #dba_sys_privs

      对象权限(撤销将会级联) 数据字典: dba_tab_privs dba_col_privs session_privs role_tab_privs

        ANY权限针对数据库中的每个用户账号中的每个对象授权,是系统权限,而不是对象权限。

        在列级别授权是一种错误的做法,如需要限制用户对特定列的访问权限,创建只显示这些列的视图是更好的替代做法

        SELECT/INSERT/UPDATE/DELETE on table/view/sequence

        ALTER on table and  sequence

        EXECUTE on 过程/函数/包/同义词

    grant select on store.customers to scott;
    grant  update (order_status) on store.orders to scott;
    grant on store.regions to scott
    with grant option #使用户将其对象传给第三方

     3.角色的创建与管理

      角色的创建与授予

    create role hr_manager;
    grant create session to hr_manager;
    grant select on hr.regions to hr_manager with admin option;

      预定义角色

        connect/resource/dba/select_catalog_role/scheduler_admin/public

      启用角色

    create role rolename identified using procedure_name;

    4.配置文件的管理与创建

      profile 的功能:实施口令策略并限制会话可以占用的资源

      口令策略(强制实施)  linux: $ORACLE_HOME/rdbms/admin/utlpwdmg.sql  windows: %ORACLE_HOME% dbmsadminutlpwdmg.sql 这个脚本会创建VERIFY_FUNCTION和VERIFY_FUNCTION_11G 函数

        FAILED_LOGIN_ATTEMPTS

        PASSWORD_LOCK_TIME

        PASSWORD_LIFE_TIME

        PASSWORD_GRACE_TIME

        PASSWORD_REUSE_TIME

        PASSWORD_REUSE_MAX

        PASSWORD_VERIFY_FUNCTION

      资源限制(resource_limit=true) ALTER SYSTEM SET RESOURCE_LIMITED=TRUE

        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 #以服务为单位划分的总资源成本,作为CPU_PER_SESSION/CONNECT_TIME/LOGICAL_READS_PER_SESSION 和PRIVATE_SGA 的组合加权和  resource_cost

      配置文件的创建和分配

    select username,profile from dba_users;
    select * from dba_profiles where profile='DEFAULT';
    
    alter profile default limit session_per_user 1;
    
    create profile dba_profile limit sessions_per_user unlimited
    password_life_time 10 passsword_grace_time 1;
    alter user system profile dba_profile;
    drop profile dba_profile cascade;

    #默认情况下所有的资源成本为0
    select * from resource_cost;
    alter rescource cost cpu_per_session 50 connect_time 2;

    5. 安全管理的原则--最小权限原则

      最小权限原则 :用户应当只拥有执行其任务所需的最小权限,并且禁止所有未被特别允许的权限。SYS 和system 拥有所有权限

      PUBLIC权限

    select table_name from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name like'UTL%';
    revoke execute on utl_file from public;
    #UTL_FILE 这个包允许用户读写OS oracle 所有者可以访问的任何文件和目录,其中包括所有的数据库文件和ORALCE_HOME目录
    #UTL_TCP 这个包允许用户为了连接网络中所有可访问的地址而打开服务器的TCP端口
    #UTL_SMTP允许用户发送邮件的
    #UTL_HTTP

      对安全性至关重要的实例参数,需要重启实例才可以更改

        UTL_FILE_DIR default is null,允许PL/SQL 通过UTL_FILE包来访问服务器计算机的文件系统。

    alter system set utl_file_dir ='oracle/tmp','oracle/innterface' scope=spfile;

        REMOTE_OS_AUTHENT default is FALSE,控制某个用户是否能够不需要口令的情况下从远程计算机上连接数据库

        OS_AUTHENT_PREFIX default is "OPS$"

    alter system set os_authent_prefix='' scope=spfile

        O7_DICTIONARY_ACCESSIBILITY default is FALSE :ANY 权限不被授予SYS拥有的对象、

        REMOTE_LOGIN_PASSWORDFILE default is NON,有SYSDBA和SYSOPER 权限的用户不可通过网络连接实例,

        REMOTE_LOGIN_PASSWORDFILE 参数值为SHARED时,多个数据库共享一个秘密文件,但只有SYS用户使用密码文件来验证身份,并且不可以改变SYS密码。

        REMOTE_LOGIN_PASSWORDFILE 参数值为EXCLUSIV时,将密码文件只绑定到一个数据库,并且其他数据库用户账号可以存在于密码文件中。一但创建密码文件,使用这个值可最大化SYSDBA和SYSDOPER连接的安全性。

          uninx: $ORACLE_HOME/dbs/orapwinstance_name.ora

          windows:%ORACLE_HOME%databasePWDinstance_name.ora

    6 标准数据库审核

      SYSDBA审核:实例参数AUDIT_SYS_OPERATIONS =TRUE.作为SYSDBA 或SYSOPER连接数据库的用户所发布的每一条语句都会被写入OS的审核跟踪。

      审计(Audit)用于监视用户所执行的数据库操作,审计信息可存储于数据字典表,称为审计记录。审计记录存储在SYSTEM表空间中的SYS.AUD$表中,可通过视图DBA_AUDIT_TRAIL查看。审计记录也可以存储在操作系统文件中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)。若审计表不存在,则可以通过脚本$ORACLE_HOME/rdbms/admin/cataudit.sql来创建。审计的内容主要包括对数据库连接、SQL语句执行以及数据库对象访问等操作的跟踪记录。Oracle系统对任何用户所做的登录、操作数据库对象进行自动记录,以便使DBA在事后可以进行监督和检查。Oracle 11g默认启用审计,AUDIT_TRAIL参数的缺省值为DB,这意味着审计数据将记录在数据库中的AUD$审计字典基表上。

      数据库审计的一些数据字典

    DBA_PRIV_AUDIT_OPTS;
    DBA_STMT_AUDIT_OPTS;
    DBA_OBJ_AUDIT_OPTS;
    DBA_FGA_AUDIT_TRAIL;
    DBA_AUDIT_OBJECT;
    DBA_AUDIT_SESSION;
    SYS.AUD$;
    DBA_AUDIT_TRAIL;
    ALL_DEF_AUDIT_OPTS;
    DBA_AUDIT_POLICIES;

    名称

    说明

    SYS.AUD$

    唯一保留审计结果的表,其它均为视图。

    STMT_AUDIT_OPTION_MAP

    包含有关审计选项类型代码的信息,由SQL.BSQ脚本在CREATE DATABASE时创建。

    AUDIT_ACTIONS

    包含审计跟踪动作类型代码的描述,例如INSERT、DROP VIEW、DELETE、LOGON和LOCK。

    ALL_DEF_AUDIT_OPTS

    包含默认对象审计选项。

    USER_OBJ_AUDIT_OPTS

    描述当前用户拥有的所有对象上的审计选项。

    DBA_AUDIT_TRAIL

    包含标准审计跟踪条目,USER_AUDIT_TRAIL只包含已连接用户的审计行。

    USER_AUDIT_TRAIL

    显示与当前用户有关的审计跟踪条目。

    DBA_AUDIT_OBJECT

    包含系统中所有对象的审计跟踪记录。

    DBA_AUDIT_SESSION

    列出涉及CONNECT和DISCONNECT的所有审计记录。

    USER_AUDIT_SESSION

    列出涉及当前用户的CONNECT和DISCONNECT的所有审计跟踪记录。

    DBA_AUDIT_STATEMENT

    列出涉及数据库全部的GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM语句的审计跟踪记录。

    DBA_AUDIT_EXISTS

    列出BY AUDIT NOT EXISTS产生的审计跟踪条目。

    DBA_AUDIT_POLICIES

    记录了数据库中的细粒度审计策略定义。

    DBA_FGA_AUDIT_TRAIL

    列出基于值的审计跟踪记录。

    DBA_STMT_AUDIT_OPTS

    对语句生效的审计选项。

    DBA_PRIV_AUDIT_OPTS

    对系统权限生效的审计选项。

    DBA_OBJ_AUDIT_OPTS

    对数据库生效的审计选项。

      处理SYSDBA审核外,ORACLE提供了下列三种审核技术

        数据库审核 实例参数AUDIT_TRAIL view DBA_AUDIT_TRAIL(子集DBA_AUDIT_OBJECT,DBA_AUDIT_STATEMENT,DBA_AUDIT_SESSION)

          NONE/FALSE 禁用数据库审核

          OS:审核记录写入OS的审核跟踪(windows :windows Application log 文件夹,Linux :AUDIT_FILE_DEST 目录)

          DB:审核记录写入SYS.AUT$

          DB_EXTENDED:与DB作用大体相同,不过包含具有绑定变量的SQL语句

          XML:与OS相同,但使用XML标记设置格式

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

    audit create any trigger;
    audit select any table by session;
    audit insert on hr.regions whenever successful;
    audit all on hr.regionsl;
    autid session whenever not successful;

        使用触发器执行基于值的审核

        细粒度审核(fine-grained auditing)FGA 视图DBA_FGA_AUDIT_TRAIL  ##DBA_COMMON_AUDIT_TRAIL 显示OS审核和FGA审核

        涉及包DBMS_FGA,ADD_POLICY的参数(OBJECT_SCHEMA,OBJECT_NAME.POLICY_NAME,AUDIT_CONDITION,AUDIT_COLUM,HANDLER_SCHEMA,HANDLER_MODULE,ENABLE,STATEMENT_TYPES,AUDIT_TRAIL,AUDIT_COLUMN_OPTS)

    execute dbms_fga.add_policy(object_schema=>'HR',object_name=>'employees',policy_name=>'POL1',audit_condition=>‘department_id=90',audit_column='SALARY');  
    每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
  • 相关阅读:
    tail,more查看日志(定点和翻页)
    Python:浅拷贝和深拷贝
    mybatis sql查子list
    mybatis在insert中获取到id
    mvn安装jar到本地仓库
    微信支付wxpay -- 移动端app第二章节 -- java 后端代码
    微信支付wxpay -- 移动端app第一章节 -- 注意点
    java字符串大小写转化
    Zxing图片右下角生成二维码
    switchTap、navigateTo、switchTap
  • 原文地址:https://www.cnblogs.com/tingxin/p/12538653.html
Copyright © 2011-2022 走看看