国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle安全全接觸(完整版)二

2024-08-29 13:38:23
字體:
供稿:網(wǎng)友

  ·向密碼文件中增加、刪除用戶:
  
  當(dāng)初始化參數(shù)REMOTE_LOGIN_PASSWordFILE設(shè)置為EXCLUSIVE時(shí),系統(tǒng)答應(yīng)除INTERNAL/SYS以外的其他用戶以治理員身份從遠(yuǎn)端或本機(jī)登錄到Oracle數(shù)據(jù)庫系統(tǒng),執(zhí)行數(shù)據(jù)庫治理工作;這些用戶名必須存在于密碼文件中,系統(tǒng)才能識(shí)別他們。由于不管是在創(chuàng)建數(shù)據(jù)庫實(shí)例時(shí)自動(dòng)創(chuàng)建的密碼文件,還是使用工具ORAPWD.EXE手工創(chuàng)建的密碼文件,都只包含INTERNAL/SYS用戶的信息;為此,在實(shí)際操作中,可能需要向密碼文件添加或刪除其他用戶帳號(hào)。
  
  由于僅被授予SYSOPER/SYSDBA系統(tǒng)權(quán)限的用戶才存在于密碼文件中,所以當(dāng)向某一用戶授予或收回SYSOPER/SYSDBA系統(tǒng)權(quán)限時(shí),他們的帳號(hào)也將相應(yīng)地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件中增加或刪除某一用戶,實(shí)際上也就是對(duì)某一用戶授予或收回SYSOPER/SYSDBA系統(tǒng)權(quán)限。
  
  要進(jìn)行此項(xiàng)授權(quán)操作,需使用SYSDBA權(quán)限(或INTERNAL帳號(hào))連入數(shù)據(jù)庫,且初始化參數(shù)REMOTE_LOGIN_PASSWORDFILE的設(shè)置必須為EXCLUSIVE。具體操作步驟如下:
  
  創(chuàng)建相應(yīng)的密碼文件;
  
  設(shè)置初始化參數(shù)REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;
  
  使用SYSDBA權(quán)限登錄: CONNECT SYS/internal_user_passsword AS SYSDBA;
  
  啟動(dòng)數(shù)據(jù)庫實(shí)例并打開數(shù)據(jù)庫;
  
  創(chuàng)建相應(yīng)用戶帳號(hào),對(duì)其授權(quán)(包括SYSOPER和SYSDBA): 授予權(quán)限:GRANT SYSDBA TO user_name;
  
  收回權(quán)限:REVOKE SYSDBA FROM user_name;
  
  現(xiàn)在這些用戶可以以治理員身份登錄數(shù)據(jù)庫系統(tǒng)了;
  
  ·使用密碼文件登錄:
  
  有了密碼文件后,用戶就可以使用密碼文件以SYSOPER/SYSDBA權(quán)限登錄Oracle數(shù)據(jù)庫實(shí)例了,注重初始化參數(shù)REMOTE_LOGIN_PASSWORDFILE應(yīng)設(shè)置為EXCLUSIVE或SHARED。任何用戶以SYSOPER/SYSDBA的權(quán)限登錄后,將位于SYS用戶的Schema之下,以下為兩個(gè)登錄的例子:
  
  1. 以治理員身份登錄:
  
  假設(shè)用戶scott已被授予SYSDBA權(quán)限,則他可以使用以下命令登錄:
  
  CONNECT scott/tiger AS SYSDBA
  
  2. 以INTERNAL身份登錄:
  
  CONNECT INTERNAL/INTERNAL_PASSWORD
  
  ·密碼文件的維護(hù):
  
  1. 查看密碼文件中的成員:
  
  可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統(tǒng)權(quán)限的用戶的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用戶是否擁有相應(yīng)的權(quán)限。這些用戶也就是相應(yīng)地存在于密碼文件中的成員。
  
  2. 擴(kuò)展密碼文件的用戶數(shù)量:
  
  當(dāng)向密碼文件添加的帳號(hào)數(shù)目超過創(chuàng)建密碼文件時(shí)所定的限制(即ORAPWD.EXE工具的MAX_USERS參數(shù))時(shí),為擴(kuò)展密碼文件的用戶數(shù)限制,需重建密碼文件,具體步驟如下:
  
  a) 查詢視圖V$PWFILE_USERS,記錄下?lián)碛蠸YSOPER/SYSDBA系統(tǒng)權(quán)限的用戶信息;
  
  關(guān)閉數(shù)據(jù)庫;
  
  c) 刪除密碼文件;
  
  d) 用ORAPWD.EXE新建一密碼文件;
  
  e) 將步驟a中獲取的用戶添加到密碼文件中。
  
  3. 修改密碼文件的狀態(tài):
  
  密碼文件的狀態(tài)信息存放于此文件中,當(dāng)它被創(chuàng)建時(shí),它的缺省狀態(tài)為SHARED。可以通過改變初始化參數(shù)REMOTE_LOGIN_PASSWORDFILE的設(shè)置改變密碼文件的狀態(tài)。當(dāng)啟動(dòng)數(shù)據(jù)庫事例時(shí),Oracle系統(tǒng)從初始化參數(shù)文件中讀取REMOTE_LOGIN_PASSWORDFILE參數(shù)的設(shè)置;當(dāng)加載數(shù)據(jù)庫時(shí),系統(tǒng)將此參數(shù)與口令文件的狀態(tài)進(jìn)行比較,假如不同,則更新密碼文件的狀態(tài)。若計(jì)劃答應(yīng)從多臺(tái)客戶機(jī)上啟動(dòng)數(shù)據(jù)庫實(shí)例,由于各客戶機(jī)上必須有初始化參數(shù)文件,所以應(yīng)確保各客戶機(jī)上的初始化參數(shù)文件的一致性,以避免意外地改變了密碼文件的狀態(tài),造成數(shù)據(jù)庫登陸的失敗。
  
  4. 修改密碼文件的存儲(chǔ)位置:
  
  密碼文件的存放位置可以根據(jù)需要進(jìn)行移動(dòng),但作此修改后,應(yīng)相應(yīng)修改系統(tǒng)注冊(cè)庫有關(guān)指向密碼文件存放位置的參數(shù)或環(huán)境變量的設(shè)置。
  
  5. 刪除密碼文件:
  
  在刪除密碼文件前,應(yīng)確保當(dāng)前運(yùn)行的各數(shù)據(jù)庫實(shí)例的初始化參數(shù)REMOTE_LOGIN_PASSWORDFILE皆設(shè)置為NONE。在刪除密碼文件后,若想要以治理員身份連入數(shù)據(jù)庫的話,則必須使用操作系統(tǒng)驗(yàn)證的方法進(jìn)行登錄。
  
  但是治理員都覺得乏味,因?yàn)樵谥卫韱T中流行一種很簡(jiǎn)單的加密辦法--就是經(jīng)常,很頻繁地修改自己的密碼。
可是,每次修改都跟打一次仗似的--因?yàn)楦鲁绦虿⒉皇敲總€(gè)人都愿意做的事情。
  
  那么有沒有什么簡(jiǎn)單點(diǎn)的辦法呢?請(qǐng)往下看:
  
  模型:Oracle7.3;開發(fā)工具:Develope2000。收費(fèi)系統(tǒng)(在數(shù)據(jù)庫中的名稱是SFYY),其Client端分散在市區(qū)的數(shù)個(gè)營(yíng)業(yè)點(diǎn),通過城域網(wǎng)與主機(jī)(小型 機(jī))相連。
  
  過程:
  
  ·在收費(fèi)小型機(jī)Oracle系統(tǒng)的system用戶(DBA)下,創(chuàng)建新用戶test;
  create user test
  identified by carton
  default tablespace dataspace1
  quota 100K
  
  ·對(duì)test用戶授以權(quán)限;
  
  grant create session to test;
  grant resource to test;
  
  ·在test用戶下建立一個(gè)存儲(chǔ)函數(shù)mmtranslate,它其實(shí)是一個(gè)加密程序。下面是一個(gè)簡(jiǎn)單的例子。
  
  function mmtranslate(m varchar2)
  return varchar2
  as
  i number(2);
  kk varchar2(10);
  begin
  kk:=′′;
  i:=1;
  loop
  if i
  if instr(′1234567890′,substr(m,i,1),1,1)>0 then
  kk:=kkchr(100+to_number(substr(m,i,1)));
  elseif instr(‘wxyz‘,substr(m,i,1),1,1)>0 then
  kk:=kkchr(-8+ascii(substr(m,i,1)));
  else
  kk:=kkchr(4+ascii(substr(m,i,1)));
  end if;
  else
  exit;
  end if;
  i:=i+1;
  end loop;
  return kk;
  exception
  when others then
  return ′-1′;
  end;
  
  ·在test用戶下建表mmtest并插入記錄:
  
  create table mmtest
  (usnamevarchar2(6),------用戶名稱
  mimavarchar2(6)------加密前的密碼);
  insert into mmtest values( ‘sfyy‘,‘eds2‘);
  commit;
  
  ·執(zhí)行以下語句
  
  SQL>select mmtranslate(‘eds2‘) from dual;
  MMTRANSLATE(‘EDS2‘)
  ----------------------------------------
  ihwf
  
  利用DBA權(quán)限更改sfyy的密碼為上面語句的執(zhí)行結(jié)果:
  
  alter user sffy
  identified by ihwf; ;
  
  ·修改應(yīng)用程序,對(duì)于開發(fā)環(huán)境是Develope2000的程序來說,主要是修改主程序的on-lo gon觸發(fā)器:
  
  declare
  mm varchar2(6);
  begin
  logon(‘test‘,‘carton‘);
  select mima into mm from mmtest where usname=‘sfyy‘;
  mm:=mmtranslate(mm);
  logout;
  logon(‘sfyy‘,mm);
  end;
  
  然后再利用觸發(fā)器WHEN-NEW-FROM-INSTANCE執(zhí)行Callfrom或Newform等 命令,進(jìn)入業(yè)務(wù)處理程序。這個(gè)主程序應(yīng)當(dāng)僅僅由治理員來把握,編譯之后將執(zhí)行文件下發(fā) 到各收費(fèi)點(diǎn)的Clien端。
  
  ·在System用戶下,利用Oracle提供的pupbld.sql,建立表PRodUCtuserprofile,執(zhí)行下面這樣的命令,限制在非開發(fā)狀態(tài)Sql命令的使用,例如
  
  insert into productuserprofile
  (product,userid,attribute,charvalue) values
  (‘SQL*Plus‘,‘TEST‘,‘CONNECT‘,‘DISABLED‘);
  insert into productuserprofile
  (product,userid,attribute,charvalue) values
  
  (‘SQL*Plus‘,‘SFYY‘,‘DELETE‘,‘DISABLED‘);這樣,在SQL狀態(tài)下,根本無法連接到TEST用戶,而在 sfyy用戶下,delete命令將不能執(zhí)行。當(dāng)然,DBA可以改變這些設(shè)置。
  
  當(dāng)然了,這個(gè)僅僅是屬于一種“應(yīng)用技巧”,但是足可以把那些天天忙于更新系統(tǒng)的治理員舒適好幾天了。但是另一方面,還要加強(qiáng)對(duì)源程序的治理,在Client端只存放執(zhí)行程序。加強(qiáng)審計(jì),發(fā)現(xiàn)異常現(xiàn)象,及時(shí)處理。這樣才可以做到更高一層的“安全”。
  
  在下面,我主要是向大家介紹一個(gè)REM對(duì)GHXXB制立數(shù)據(jù)庫觸發(fā)子,密碼的加密程序。

  
  REM 對(duì)GHXXB制立數(shù)據(jù)庫觸發(fā)子(當(dāng)INSERT OR UPDATE GHXXB時(shí)觸發(fā))
  
  drop trigger scjmmm;
  create or replace trigger scjmmm
  before insert or update of mm On ghxxb For each Row
  Begin
  :new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,‘SS‘));
  End;
  /
  ---------------------------密碼的加密程序ENCRYPT----------------------
  Create or Replace
  Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2)
  Return Varchar2 Is
  bcs varchar2(20);
  bcs1 number;
  cs number;
  jg number;
  m_gh VARCHAR2(4);
  m_mm VARCHAR2(20);
  Begin
  m_gh:=IN_GH;
  m_mm:=INPASS;
  cs:=TO_NUMBER(IN_SS);
  If cs
  bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);
  If bcs
  m_gh:=substr(m_gh,2);
  Loop EXIT WHEN nvl(length(m_gh),0)=0 ;
  bcs:=bCSSubstr(to_ch

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武安市| 灌阳县| 定日县| 吉木萨尔县| 牟定县| 四会市| 南康市| 平安县| 师宗县| 鲁甸县| 湟中县| 宣汉县| 巫溪县| 名山县| 宜丰县| 天镇县| 鸡泽县| 胶南市| 静乐县| 新蔡县| 宜兴市| 宁南县| 呼图壁县| 淅川县| 会宁县| 阿坝县| 麻江县| 文山县| 盐山县| 佛山市| 兴和县| 闵行区| 东山县| 巴林左旗| 清远市| 台安县| 湖北省| 麻江县| 拉萨市| 佛山市| 广宁县|