如何记录尝试登录我的 Amazon RDS for PostgreSQL 数据库实例但却遭遇失败的情况?

1 分钟阅读
0

我想记录 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 数据库实例连接失败的次数。

解决方法

PostgreSQL 每小时生成一次新的日志文件。要跟踪尝试登录运行 PostgreSQL 的数据库实例但遭遇失败的情况,请启用 log_connections 参数。该参数位于与该数据库实例关联的自定义参数组中。然后,一旦用户尝试使用错误的凭证登录您的数据库实例,日志中就会有这些失败尝试的记录。登录失败时,日志中会出现类似于这样的内容:“error/postgresql.log.2018-04-19-10”。 有关更多信息,请参阅使用参数组

请参阅以下登录失败示例:

2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"

您也可以使用 PostgreSQL log_connections 参数来记录成功登录运行 PostgreSQL 的数据库实例的情况。

请参阅以下成功登录示例:

2018-04-19 10:19:20 UTC:123.45.67.8(6789):[unknown]@[unknown]:[17196]:LOG: connection received: host=123.45.67.8 port=12345
2018-04-19 10:19:20 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: connection authorized: user=test_user database=Test_DB SSL enabled (protocol=xxxx, cipher=xxxx, compression=off)

使用 log_connectionslog_disconnections 参数来记录用户会话的持续时间。

有关会话持续时间,请参阅以下示例:

2018-04-19 10:19:43 UTC:123.45.67.8(6789):test_user@Test_DB:[17196]:LOG: disconnection: session time: 0:00:23.753 user=test_user database=Test_DB host=123.45.67.8 port=12345

**注意:**客户端计算机的 IP 地址为 123.45.67.8,6789 是提供给 PostgreSQL 数据库进程的 PID(进程 ID)。

解析日志文件

使用 AWS 命令行界面(AWS CLI)或 Amazon RDS 控制台下载日志。然后,使用 grep 实用程序搜索连接失败的情况:

**注意:**如果运行 AWS CLI 命令时出现错误,请确保您使用的是最新版本的 AWS CLI

$ grep -B 1 "authentication failed" postgresql.log.2018-04-19-10
2018-04-19 10:12:31 UTC:123.45.67.8(6789):[unknown]@[unknown]:[12507]:LOG: connection received: host=123.45.67.8port=12345
2018-04-19 10:12:31 UTC:123.45.67.8(6789):test_user@Test_DB:[12507]:FATAL: password authentication failed for user "test_user"

注意:****- B 1 参数告知 grep 还需显示与您正在搜索的模式匹配的行的上一行。在此示例中,模式为身份验证失败

您也可以使用 PostgreSQL 的 log_fdw 扩展名,以外部表的形式访问这些日志。如果您希望 PostgreSQL 日志文件的保留时间超过原保留期,请向 Amazon CloudWatch Logs 发布 Amazon RDS for PostgreSQL 日志

相关信息

如何使用 Amazon RDS 为 PostgreSQL 启用查询日志记录?

RDS for PostgreSQL 数据库日志文件

将日志数据导出到 Amazon S3

向 CloudWatch Logs 发布兼容 Aurora PostgreSQL 的日志