時間:2024-02-05 11:03作者:下載吧人氣:20
在oracle中我們可以通過設置FAILED_LOGIN_ATTEMPTS來限制用戶密碼登錄錯誤的次數,但是在postgresql中是不支持這個功能的。盡管PostgreSQL支持event trigger,可是event局限于DDL,對于登錄登出事件是沒辦法使用event trigger的。
不過像登錄新建會話觸發某個事件這個需求可以通過hook實現,不過該方法比較復雜,需要修改內核代碼,在客戶端認證中添加邏輯,判斷輸入密碼次數統計。這里推薦一種比較簡單的方法實現類似的功能。
這里我們要使用到session_exec這個插件,使用該插件會在登錄時執行一個指定的function。
https://github.com/okbob/session_exec
下載解壓之后需要進行以下配置:
該插件有以下特點:
利用該插件我們可以寫一個簡單的函數來實現限制用戶登錄錯誤次數的功能。
1、建立外部表記錄數據庫日志信息。
CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;
CREATE FOREIGN TABLE pglog (
log_time timestamp(3) with time zone,
user_name text,
database_name text,
process_id integer,
connection_from text,
session_id text,
session_line_num bigint,
command_tag text,
session_start_time timestamp with time zone,
virtual_transaction_id text,
transaction_id bigint,
error_severity text,
sql_state_code text,
message text,
detail text,
hint text,
internal_query text,
internal_query_pos integer,
context text,
query text,
query_pos integer,
location text,
application_name text,
backend_type text
) SERVER pglog
OPTIONS ( program ‘find $PGDATA/log -type f -name “*.csv” -mtime -1 -exec cat {} ;’, format ‘csv’ );
網友評論