oracle 11g ocp 筆記(6)-- oracle安全

來源:互聯網
上載者:User

標籤:使用者權限   XML   auth   evo   prefix   帳戶   exp   sqlplus   values   

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%‘;
    
二.Database Audit
    設定Database Audit之前,必須設定audit_trail參數,參數值:
    ·NONE(或者FALSE): 禁用Database Audit
    ·OS: 審計記錄會被寫至作業系統的審計跟蹤目錄(audit_file_dest所在目錄).
    ·DB:審計記錄會被寫入資料字典表sys.aud$.
    ·DB_EXTENDED: 與DB大體相同,不過包含產生審計記錄的、具有綁定變數的SQL語句.
    ·XML: 與OS的作用大體相同,但使用XML標記設定格式.
    ·XML_EXTENDED: 與XML大體相同,但使用SQL語句和綁定變數.
    設定audit_trail參數後,就可以使用Database Audit來捕獲登入嘗試、系統許可權與對象許可權的使用以及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
    
三.使用觸發器執行基於值的審計
    Database Audit可以捕獲到針對某個表執行一條命令的事實,但是沒有跟蹤受影響的行。例如,如果執行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

                

 

oracle 11g ocp 筆記(6)-- oracle安全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.