forked from pgaudit/pgaudit
-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Overview
- Filters do not work correctly in the Japanese object name.
(Below, it is written in Japanese.)
概要
- 日本語オブジェクト名によるフィルタ機能が正しく動作しない。
- たとえば、
object_name = 'テストスキーマ.テストテーブル'といったフィルタをルールに記述して、そのテーブルにアクセスするSQL文を実行しても、監査ログに出力されない。
設定ファイル
[output]
logger = 'serverlog'
[option]
log_parameter = on
[rule]
class = 'CONNECT'
database = 'テストデータベース'
[rule]
class = 'READ,WRITE,MISC'
object_name = 'テストスキーマ.テストテーブル'
実行したSQL文
CREATE SCHEMA テストスキーマ;
CREATE TABLE テストスキーマ.テストテーブル ("識別子" integer, "データ" text);
PREPARE 準備文1(int, text) AS
INSERT INTO テストスキーマ.テストテーブル VALUES ($1, $2);
EXECUTE 準備文1(1, 'あああ');
PREPARE 準備文2(int, text) AS
SELECT * FROM テストスキーマ.テストテーブル WHERE "識別子" = $1 AND "データ" = $2;
EXECUTE 準備文2(1, 'あああ');
PREPARE prep3(int, text) AS
SELECT * FROM テストスキーマ.テストテーブル WHERE "識別子" = $1 AND "データ" = $2;
EXECUTE prep3(1, 'あああ');
DROP TABLE テストスキーマ.テストテーブル;
DROP SCHEMA テストスキーマ;
SET ROLE フー;
SELECT 1;
RESET ROLE;
監査ログ
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,,,[local],[unknown],,0,00000,connection received: host=[local],,,,,
LOG: connection received: host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],[unknown],2/7,0,00000,connection authorized: user=postgres database=テストデータベース,,,,,
LOG: connection authorized: user=postgres database=テストデータベース
LOG: AUDIT: SESSION,1,1,MISC,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,2/11,2492,,,EXECUTE,,,"EXECUTE 準備文1(1, 'あああ');",<none>
LOG: AUDIT: SESSION,2,1,MISC,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,2/13,0,,,EXECUTE,,,"EXECUTE 準備文2(1, 'あああ');",<none>
LOG: AUDIT: SESSION,3,1,MISC,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,2/15,0,,,EXECUTE,,,"EXECUTE prep3(1, 'あああ');",<none>
LOG: AUDIT: SESSION,4,1,MISC,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,2/18,0,,,SET,,,SET ROLE フー;,<none>
LOG: AUDIT: SESSION,5,1,MISC,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,2/20,0,,,RESET,,,RESET ROLE;,<none>
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,テストデータベース,postgres,[local],psql,,0,00000,disconnection: session time: 0:00:00.041 user=postgres database=テストデータベース host=[local],,,,,
LOG: disconnection: session time: 0:00:00.041 user=postgres database=テストデータベース host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,,,[local],[unknown],,0,00000,connection received: host=[local],,,,,
LOG: connection received: host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,テストデータベース,バー,[local],[unknown],2/21,0,00000,connection authorized: user=バー database=テストデータベース,,,,,
LOG: connection authorized: user=バー database=テストデータベース
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,テストデータベース,バー,[local],psql,,0,00000,disconnection: session time: 0:00:00.004 user=バー database=テストデータベース host=[local],,,,,
LOG: disconnection: session time: 0:00:00.004 user=バー database=テストデータベース host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:15 JST,,,[local],[unknown],,0,00000,connection received: host=[local],,,,,
LOG: connection received: host=[local]
LOG: connection authorized: user=postgres database=postgres
LOG: disconnection: session time: 0:00:00.134 user=postgres database=postgres host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:16 JST,,,[local],[unknown],,0,00000,connection received: host=[local],,,,,
LOG: connection received: host=[local]
LOG: connection authorized: user=postgres database=postgres
LOG: disconnection: session time: 0:00:00.007 user=postgres database=postgres host=[local]
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:49:16 JST,,,[local],[unknown],,0,00000,connection received: host=[local],,,,,
LOG: connection received: host=[local]
LOG: connection authorized: user=postgres database=postgres
LOG: disconnection: session time: 0:00:00.005 user=postgres database=postgres host=[local]
- 日本語データベース名によるフィルタリングは正しく動作している。
object_name = 'テストスキーマ.テストテーブル'のフィルタをはずすと、監査ログは出力される。
LOG: AUDIT: SESSION,,,CONNECT,2017-03-07 20:58:33 JST,テストデータベース,postgres,[local],[unknown],2/7,0,00000,connection authorized: user=postgres database=テストデータベース,,,,,
LOG: connection authorized: user=postgres database=テストデータベース
LOG: AUDIT: SESSION,1,1,WRITE,2017-03-07 20:58:33 JST,テストデータベース,postgres,[local],psql,2/10,0,,,PREPARE,,,"PREPARE 準備文1(int, text) AS
INSERT INTO テストスキーマ.テストテーブル VALUES ($1, $2);",<none>
LOG: AUDIT: SESSION,2,1,WRITE,2017-03-07 20:58:33 JST,テストデータベース,postgres,[local],psql,2/11,0,,,INSERT,TABLE,"""テストスキーマ"".""テストテーブル""","PREPARE 準備文1(int, text) AS
INSERT INTO テストスキーマ.テストテーブル VALUES ($1, $2);",1 あああ
-
このときに監査ログに出力されたobject_nameを見ると、
"""テストスキーマ"".""テストテーブル"""のように展開されている。 -
しかし、設定ファイルのobject_nameに二重引用符を含めようとすると、設定ファイル誤りと判断されてしまう。
-
設定ファイル
[rule]
class = 'READ,WRITE,MISC'
object_name = '"テストスキーマ"."テストテーブル"'
- 起動時のエラーログ
FATAL: invalid format parameter ""テストスキーマ"."テストテーブル"" of field "object_name" in rule section
LOG: database system is shut down
Metadata
Metadata
Assignees
Labels
No labels