Complete Reference - Oracle 基本安全

          Oracle 利用create user、create role、grant命令控制數據訪問。
          • Database system privilege
          • Database object privilege

          SYS用戶擁有Oracle用來管理數據庫的核心內部表;

          SYSTEM用戶則擁有其他的表和視圖 - 可以使用SYSTEM用戶登錄,創建其他用戶。

          create user username identified
                      {
          by password | externally | globally as 'extnm'};
          -- 創建用戶
          create user Dora identified by avocado;
          -- 修改密碼
          alter user Dora identified by psyche;
          -- 不給用戶CREATE SESSION權限,則用戶無法登錄
          grant CREATE SESSION to Dora;


          • 密碼會過期 - 由分配給賬戶的配置文件決定
          • 用戶有可能會由于多次連續失敗而被鎖定
          • 修改密碼之后,需要維護密碼歷史記錄,防止重用以前的密碼

          配置文件由DBA管理 - create profile命令創建。

          關于密碼和賬戶的訪問,配置文件規定了一下內容:

          • 密碼的生存期 Lifetime,決定了多長時間必須更改密碼
          • 密碼的“過期日期”后的寬限期,在此期間可以修改密碼
          • 在賬戶自動“鎖定”之前允許連續失敗的次數
          • 賬戶保持鎖定狀態的天數
          • 在重用一個密碼前必須經過的天數
          • 在重用一個密碼前必須經歷的更改次數

          數據庫管理員可以利用password命令修改任何用戶的密碼;其他用戶只能修改自己的密碼。

          在SQL*Plus中使用password命令修改密碼,輸入的新密碼不會顯示在屏幕上。

          SQL> conn wpeng/exigen@server03
          Connected.
          SQL
          > password
          Changing password 
          for WPENG
          Old password:
          New password:
          Retype new password:
          Password changed

          可以使用配置文件管理密碼的過期、重用和復雜性。

          可以設定一個密碼的生存期,鎖定密碼使用太久的賬戶,降低密碼的復雜性,將多次失敗登陸的賬戶鎖定...

          密碼過期機制

          -- 創建LIMITED_PROFILE配置文件
          create profile LIMITED_PROFILE limit
          FAILED_LOGIN_ATTEMPTS 
          5;
          -- 交由JANE使用
          create user JANE identified by EYRE
          profile LIMITED_PROFILE;
          grant create SEESION to JANE;

          -- JANE 5次連續失敗
          connect jane/eyre
          ERROR:
          ORA
          -28000: the account is locked
          -- 解鎖
          alter user JANE account unlock;
          -- 鎖住指定賬戶
          alter user JANE account lock;

          -- 在超過配置文件的PASSWORD_LOCK_TIME值,自動解鎖

          -- 通過PASSWORD_LIFE_TIME設置密碼的最大壽命
          --
           強制30天修改一次密碼
          alter profile LIMITED_PROFILE limit
          PASSWORD_LIFE_TIME 
          30;

          -- 為到期密碼設置一個寬限期 PASSWORD_GRACE_TIME
          "鎖定"賬戶,可以在一定時間之后,自動解鎖;
          “過期”賬戶,則需要DBA手工設置才能重新生效。
          SQL> alter user wpeng password expire;
          User altered.

          SQL
          > conn wpeng/exige@server03
          ERROR:
          ORA
          -28001: the password has expired

          Changing password 
          for wpeng
          New password:
          Retype new password:
          Password changed
          Connected.
          可以強制用戶在第一次登陸的時候,修改自己的密碼:
          -- 使用create user 的子句 passowed expire
          create user *** identified by ***
          password expire;

          可以通過查詢DBA_USERS視圖的EXPIRY_DATE,得到任意賬戶密碼的到期日期。


          密碼重用機制
          為了防止密碼被重用,可以使用配置文件中的兩個參數(相互排斥的,設置其中一個,另一個必須被設置為UNLIMITED):
          • PASSWORD_REUSE_MAX - 指定一個密碼重用前密碼必須變化的次數
          • PASSWORD_REUSE_TIME - 指定一個密碼可以重用前必須間隔的天數

          alter profile LIMITED_PROFILE limit
          PASSWORD_REUSE_MAX 
          3
          PASSWORD_REUSE_TIME UNLIMITED;

          -- 試圖使用一個近期的密碼,則:
          ORA-280007: the password cannot be reused.


          標準角色
          應用程序中用戶通過角色來獲得權限。
          可以根據應用程序的需要,將系統權限和對象訪問融入到角色當中。

          CONNECT, RESOURCE, DBA是為了向后兼容,所以不應該再使用。
          為了替換CONNECT, RESOURCE, DBA,應當創建自己的角色以便有權限執行特定的系統權限。

          -- 可以將任何系統權限賦予其他用戶和角色,或則授予public
          --
           with admin option 可以保證被授權者可以將權限或角色授予其他用戶或角色
          --
           all子句授予用戶或角色除SELECT ANY DICTIONARY系統權限以外的所有權限
          grant {system privilege | role | all [privileges] } 
          [, {system privilege | role | all [privileges]} ...]
          to {user | role} [, {user | role}]  ...
          [identified by password]
          [with admin option]

          -- 撤銷用戶或角色權限
          revoke {system privilege | role | all [privileges] } 
          [, {system privilege | role | all [privileges]]
          from {user | role} [, {user | role}]  

          -- 刪除一個用戶
          --
           cascade可以刪除一個用戶及其擁有的所有對象,其中包括參照完整性約束
          --
           使用引用已刪除用戶模式中的對象的視圖、同義詞、存儲過程、函數或程序包失效

          -- 如果不是用cascade,并且用戶擁有的對象仍然存在,則Oracle不會刪除該用戶,相反返回一個錯誤信息
          drop user username [cascade];

          用戶可以給他所擁有的任何對象授權;
          數據庫管理員可以授予任何系統權限。

          -- Dora 擁有COMFORT表并且是數據庫管理員
          --
           ======系統權限=====
          create user Judy identified by sarah;
          grant create SESSION to Judy;

          create user Bob identified by carolyn;
          grant create SEESION, create TABLEcreate VIEWcreate SYNONYM to Bob;

          alter user Bob
          default tablespace users
          quota 5m 
          on users;

          -- ======對象權限=====
          --
           with grant option,則Bob可以將從Dora的表上得到的權限再授予其他用戶。
          grant select on COMFORT to Bob;
          如果打算基于另外一個用戶的表創建視圖,并且把視圖的訪問權限授予其他用戶,則必須擁有對基表的with grant option權限。


          除非同義詞,否則表名必須跟在表的擁有者的用戶名之后;
          否則Oracle會認為這個表不存在。
          select * from Dora.COMFORT;

          可以使用任何約束或任何計算來創建視圖,然后把訪問視圖的而不是訪問基表的權限,授予其他用戶。



          創建同義詞
          創建一個視圖,使它包含其他用戶的整個表或視圖的另一種方法就是創建同義詞。
          create synonym LITTLECONFORT for Dora.SOMECOMFORT;


          創建角色
          為了創建角色,必須擁有CREATE ROLE系統權限
          create role role_name
          [not identified
          | identified {by password | using [schema.
          ]package 
          |externally | globally}];

          create role CLERK;
          create role MANAGER;

          grant select on COMFORT to CLERK;

          grant CREATE SESSION to CLERK;
          grant CREATE SESSION, CREATE VIEW to MANAGER;
          -- 不可以進行循環授權
          grant CLERK to MANAGER;
          使用with admin option子句,那么被授權者有權將這個角色授予其他的用戶或角色。
          被授權者也能更改和刪除這個角色。

          角色可以看做命名的一組權限。
          對視圖、過程、函數、程序包或者外鍵進行操作時,不能使用通過角色授予用戶權限。
          在創建這些類型的數據庫對象后,必須依靠所需權限直接的授權。

          grant CLERK to Bob;

          grant MANAGER to Dora with admin option;



          為角色添加密碼
          使用alter role命令達到:更改啟用角色所需的權限。
          在默認情況下,角色不具有相關聯的密碼。為了使一個角色就有安全性,應該在alter role命令中使用identified關鍵字。
          alter role MANAGER identified by cygnusxi;
          -- 角色也可以綁定到操作系統權限。
          alter role MANAGER identified externally;

          -- 刪除角色密碼
          alter role MANAGER no identified;

          在用戶的賬戶被更改時,可以通過alter user命令的default role子句來為該用戶創建默認角色列表。這個命令的默認的動作是:將用戶的所有角色設置為默認角色,每當用戶登錄啟用所有的角色。
          在任何時候,用戶可以啟用的角色最大數目是通過MAX_ENABLED_ROLES數據庫初始化參數設置的。
          -- Bob在登錄時,啟用CLERK角色
          alter user Bob
          default role CLERK;
          -- 啟用一個非默認角色
          set role CLERK;

          -- =====查看當前用戶,已經啟用的角色,可以從SESSION_ROLES數據字典視圖中選相關信息
          --
           =====查詢SEESION_PRIVS可以知道當前啟動的系統權限

          set role all;
          set role all except CLERK;

          -- 如果一個角色有相關密碼,則必須通過identified by 指定
          set role MANAGER identified by cygnusxi;

          -- 在會話中,禁用某一個角色 - 此命令在當前會話中,禁用所有角色
          set role none;

          -- 撤銷角色的權限
          revoke SELECT on COMFORT from CLERK;

          -- 刪除角色
          drop role CLERK;
          drop role MANAGER;
          系統和對象權限的grant和revoke操作會立即生效。
          而角色的grant和revoke操作僅當前用戶發出set role或啟用一個新的用戶會話時才生效。

          -- =====給指定的列授予UPDATE權限
          grant update(Noon, Midnight) on COMFORT to Judy;


          revoke all : 將刪除以前列出的所有權限,從SELECT到INDEX;



          創建一個其where子句中包含User(偽列)的一個視圖:
          -- 當查詢MY_CHECKOUT時,將依賴于偽列User的記錄
          create or replace view MY_CHECKOUT as
            
          select * from BOOKSHELF_CHECKOUT
              
          where SUBSTR(name, 1, INSTR(name, ' ')-1= User;



          給公眾授予訪問權:
          grant select on MY_CHECKOUT to public;
          創建public同義詞,可以簡化使用,不必使用模式所有者
          create public synonym MY_CHECKOUT for Practice.MY_CHECKOUT;

          -- 有限資源的授權
          --
           ===== create user 或者 alter user參數
          alter user Bob
          quota 100M 
          on USERS;

          -- =====想撤銷一個用戶的空間限額,將UNLIMITED TABLESPACE系統權限授予該用戶

          posted on 2012-11-21 15:45 鹽城小土包 閱讀(237) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案(14)

          文章分類(18)

          文章檔案(18)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 逊克县| 濮阳县| 陇西县| 荆州市| 澜沧| 江永县| 竹北市| 宜兴市| 邹城市| 中西区| 海林市| 温州市| 阳信县| 宝丰县| 凤凰县| 平顶山市| 郓城县| 无为县| 博客| 资中县| 安福县| 增城市| 界首市| 马龙县| 湛江市| 通榆县| 安塞县| 阜南县| 富宁县| 肥西县| 长垣县| 凤庆县| 襄汾县| 垦利县| 三门峡市| 井研县| 大方县| 云南省| 西宁市| 奇台县| 家居|