diff --git a/contrib/pg_audit/expected/pg_audit.out b/contrib/pg_audit/expected/pg_audit.out index 7cfa47ea3dc4b780eec92caa9e47e820d64ac8b2..886bd99d536a4c332f8323590b35f4f1c874bc62 100644 --- a/contrib/pg_audit/expected/pg_audit.out +++ b/contrib/pg_audit/expected/pg_audit.out @@ -12,11 +12,11 @@ create extension pg_audit; -- STATEMENT - The statement being logged -- PARAMETER - If parameter logging is requested, they will follow the -- statement +select current_user \gset -- --- Create a superuser role that we know the name of for testing -CREATE USER super SUPERUSER; -ALTER ROLE super SET pg_audit.log = 'Role'; -ALTER ROLE super SET pg_audit.log_level = 'notice'; +-- Set pg_audit parameters for the current (super)user. +ALTER ROLE :current_user SET pg_audit.log = 'Role'; +ALTER ROLE :current_user SET pg_audit.log_level = 'notice'; CREATE FUNCTION load_pg_audit( ) RETURNS VOID LANGUAGE plpgsql @@ -31,7 +31,7 @@ $function$; -- being loaded from shared_preload_libraries. Otherwise, the hooks -- won't be set up and called correctly, leading to lots of ugly -- errors. -\connect - super; +\connect - :current_user; select load_pg_audit(); load_pg_audit --------------- @@ -70,7 +70,7 @@ DROP TABLE test; NOTICE: AUDIT: SESSION,2,1,DDL,DROP TABLE,TABLE,public.test,DROP TABLE test;,<not logged> -- -- Create second test user -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -241,7 +241,7 @@ UPDATE test3 WARNING: AUDIT: OBJECT,6,1,WRITE,INSERT,TABLE,public.test2,<previously logged>,<previously logged> -- -- Change permissions of user 2 so that only object logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -328,7 +328,7 @@ DROP TABLE test3; DROP TABLE test4; -- -- Change permissions of user 1 so that session logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -376,7 +376,7 @@ INSERT INTO account (id, name, password, description) VALUES (1, 'user1', 'HASH1', 'blah, blah'); -- -- Change permissions of user 1 so that only object logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -435,7 +435,7 @@ NOTICE: AUDIT: OBJECT,2,1,WRITE,UPDATE,TABLE,public.account,"UPDATE account SET password = 'HASH2';",<not logged> -- -- Change permissions of user 1 so that session relation logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -546,7 +546,7 @@ NOTICE: AUDIT: SESSION,5,1,WRITE,UPDATE,TABLE,public.account,"UPDATE account SET password = 'HASH2';",<not logged> -- -- Change back to superuser to do exhaustive tests -\connect - super +\connect - :current_user select load_pg_audit(); load_pg_audit --------------- @@ -751,12 +751,12 @@ NOTICE: AUDIT: SESSION,26,1,READ,SELECT,TABLE,public.test,"SELECT (0 rows) SELECT 1, - current_user; + substring('Thomas' from 2 for 3); NOTICE: AUDIT: SESSION,27,1,READ,SELECT,,,"SELECT 1, - current_user;",<none> - ?column? | current_user -----------+-------------- - 1 | super + substring('Thomas' from 2 for 3);",<none> + ?column? | substring +----------+----------- + 1 | hom (1 row) DO $$ @@ -1054,3 +1054,18 @@ GRANT user1 TO user2; NOTICE: AUDIT: SESSION,59,1,ROLE,GRANT ROLE,,,GRANT user1 TO user2;,<none> REVOKE user1 FROM user2; NOTICE: AUDIT: SESSION,60,1,ROLE,REVOKE ROLE,,,REVOKE user1 FROM user2;,<none> +DROP TABLE test.account_copy; +DROP TABLE test.test_insert; +DROP SCHEMA test; +DROP TABLE foo.bar; +DROP TABLE foo.baz; +DROP SCHEMA foo; +DROP TABLE hoge; +DROP TABLE account; +DROP TABLE account_role_map; +DROP USER user2; +NOTICE: AUDIT: SESSION,61,1,ROLE,DROP ROLE,,,DROP USER user2;,<none> +DROP USER user1; +NOTICE: AUDIT: SESSION,62,1,ROLE,DROP ROLE,,,DROP USER user1;,<none> +DROP ROLE auditor; +NOTICE: AUDIT: SESSION,63,1,ROLE,DROP ROLE,,,DROP ROLE auditor;,<none> diff --git a/contrib/pg_audit/sql/pg_audit.sql b/contrib/pg_audit/sql/pg_audit.sql index 0722b96d14b0a607b2d35d643fcf4a43ee3d53ff..c5ddd5ff1448408517a9e1427508f2ae207480e7 100644 --- a/contrib/pg_audit/sql/pg_audit.sql +++ b/contrib/pg_audit/sql/pg_audit.sql @@ -14,11 +14,12 @@ create extension pg_audit; -- PARAMETER - If parameter logging is requested, they will follow the -- statement +select current_user \gset + -- --- Create a superuser role that we know the name of for testing -CREATE USER super SUPERUSER; -ALTER ROLE super SET pg_audit.log = 'Role'; -ALTER ROLE super SET pg_audit.log_level = 'notice'; +-- Set pg_audit parameters for the current (super)user. +ALTER ROLE :current_user SET pg_audit.log = 'Role'; +ALTER ROLE :current_user SET pg_audit.log_level = 'notice'; CREATE FUNCTION load_pg_audit( ) RETURNS VOID @@ -35,7 +36,7 @@ $function$; -- being loaded from shared_preload_libraries. Otherwise, the hooks -- won't be set up and called correctly, leading to lots of ugly -- errors. -\connect - super; +\connect - :current_user; select load_pg_audit(); -- @@ -58,7 +59,7 @@ DROP TABLE test; -- -- Create second test user -\connect - super +\connect - :current_user select load_pg_audit(); CREATE USER user2; @@ -168,7 +169,7 @@ UPDATE test3 -- -- Change permissions of user 2 so that only object logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); alter role user2 set pg_audit.log = 'NONE'; @@ -243,7 +244,7 @@ DROP TABLE test4; -- -- Change permissions of user 1 so that session logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); alter role user1 set pg_audit.log = 'DDL, READ'; \connect - user1 @@ -271,7 +272,7 @@ INSERT INTO account (id, name, password, description) -- -- Change permissions of user 1 so that only object logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); alter role user1 set pg_audit.log = 'none'; alter role user1 set pg_audit.role = 'auditor'; @@ -310,7 +311,7 @@ UPDATE account -- -- Change permissions of user 1 so that session relation logging will be done -\connect - super +\connect - :current_user select load_pg_audit(); alter role user1 set pg_audit.log_relation = on; alter role user1 set pg_audit.log = 'read, WRITE'; @@ -372,7 +373,7 @@ UPDATE account -- -- Change back to superuser to do exhaustive tests -\connect - super +\connect - :current_user select load_pg_audit(); SET pg_audit.log = 'ALL'; SET pg_audit.log_level = 'notice'; @@ -486,7 +487,7 @@ SELECT FROM test; SELECT 1, - current_user; + substring('Thomas' from 2 for 3); DO $$ DECLARE @@ -644,3 +645,16 @@ drop table bar; SET pg_audit.log = 'role'; GRANT user1 TO user2; REVOKE user1 FROM user2; + +DROP TABLE test.account_copy; +DROP TABLE test.test_insert; +DROP SCHEMA test; +DROP TABLE foo.bar; +DROP TABLE foo.baz; +DROP SCHEMA foo; +DROP TABLE hoge; +DROP TABLE account; +DROP TABLE account_role_map; +DROP USER user2; +DROP USER user1; +DROP ROLE auditor;