Oracle
Oracle 12c - 根據機器資訊觸發登錄
我想創建一個登錄觸發器。觸發器將執行以下操作:
它將根據某些使用者和某些機器資訊阻止對數據庫的訪問。然後它會給使用者一個資訊消息,並將這個會話資訊插入到一個表中。
例如;
使用者: 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://pmdba.wordpress.com/2020/02/18/how-to-limit-a-user-connection-to-a-specific-ip-address/
- https://pmdba.wordpress.com/2021/07/20/what-problem-are-you-trying-to-solve/
也可以看看:
- https://pmdba.wordpress.com/2015/02/01/whitelist-for-oracle/
- https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections
- https://pmdba.files.wordpress.com/2013/03/deploying-an-oracle-11gr2-connection-manager.pdf(適用於 12c - 19c)
- https://pmdba.wordpress.com/2021/10/15/shared-application-accounts-revisited/
- https://www.oracle.com/technical-resources/articles/approles.html