Oracle

Oracle 12c - 根據機器資訊觸發登錄

  • November 7, 2021

我想創建一個登錄觸發器。觸發器將執行以下操作:

它將根據某些使用者和某些機器資訊阻止對數據庫的訪問。然後它會給使用者一個資訊消息,並將這個會話資訊插入到一個表中。

例如;

使用者: mike, john, eric, daisy, albert

機器: NEWMACH%

**給使用者的消息:**您不能從機器 ‘||MACHINE|| 登錄 ‘使用’|| 使用者名

**它將插入到表中的資訊:**使用者名、osuser、機器、埠、終端、程序、模組、instance_id、sid、serial#

表名: DBADMINISTRATOR.LOGON_TBL

我有一個觸發想法如下;

CREATE OR REPLACE TRIGGER DBADMINISTRATOR.LOGON_FILTER
AFTER LOGON
ON DATABASE
DECLARE
USERNAME varchar2 (200);
MACHINE varchar2 (200);
begin
...
...
if
...
then
raise_application_error(-20001,'You are not allowed to logon from machine '||MACHINE|| ' using '|| USERNAME);
end if;
end;
/

你能幫忙編寫腳本嗎?它會導致任何性能問題嗎?

最好的祝福,

這將很快成為維護的噩夢。如果您老闆今天早上拿到的新筆記型電腦需要為 5 分鐘後開始的會議執行數據庫報告,但您還沒有時間更新白名單,會發生什麼情況?此外,如果使用者知道自己在做什麼,則您可以檢查的所有系統資訊都可能被使用者欺騙,因此對於增強安全性並沒有太大作用。

如果您想限制訪問,請使用作業系統防火牆或 Oracle 連接管理器(如果您有企業版)將客戶端限製到特定的網路子網(絕不是單獨的 IP 地址)。否則,使用角色、配置文件和權限控制使用者可以在數據庫中執行的操作。您始終可以控制使用者連接後可以執行的操作*;限制它們的連接方式要困難得多。*

如果您需要更多詳細資訊,我在去年發布了幾篇關於這類事情的部落格文章,在這裡,靈感來自 Stack Exchange 論壇上的先前文章:

也可以看看:

引用自:https://dba.stackexchange.com/questions/302245