分类分类
2024-02-05 11:03作者:下载吧
在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’ );
相关文章