Skip to content

Commit af6d9d1

Browse files
committed
add doc for set_user
1 parent 69ead11 commit af6d9d1

2 files changed

Lines changed: 44 additions & 44 deletions

File tree

CN/modules/ROOT/pages/master/ecosystem_components/set_user.adoc

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -150,53 +150,53 @@ GRANT EXECUTE ON FUNCTION set_user_u(text) TO dba;
150150
-- 切换到用户 dba,模拟dba登录
151151
SET SESSION AUTHORIZATION dba;
152152
SELECT SESSION_USER, CURRENT_USER;
153-
session_user | current_user
154-
--------------+--------------
155-
dba | dba
156-
(1 row)
153+
--- session_user | current_user
154+
--- --------------+--------------
155+
--- dba | dba
156+
--- (1 row)
157157
158158
--- 提权, 这里使用 set_user() 提权失败,因为目标用户是 superuser
159159
SELECT set_user('postgres');
160-
ERROR: switching to superuser not allowed
161-
HINT: Use 'set_user_u' to escalate.
160+
--- ERROR: switching to superuser not allowed
161+
--- HINT: Use 'set_user_u' to escalate.
162162
163163
--- 提权, 这里使用 set_user_u() 提权成功
164164
SELECT set_user_u('postgres');
165-
set_user_u
166-
------------
167-
OK
168-
(1 row)
165+
--- set_user_u
166+
--- ------------
167+
--- OK
168+
--- (1 row)
169169
170170
--- 查看提权后的用户状态
171171
SELECT SESSION_USER, CURRENT_USER;
172-
session_user | current_user
173-
--------------+--------------
174-
dba | postgres
175-
(1 row)
172+
--- session_user | current_user
173+
--- --------------+--------------
174+
--- dba | postgres
175+
--- (1 row)
176176
177177
--- 测试重复 set_user,会失败
178178
SELECT set_user('bob');
179-
ERROR: must reset previous user prior to setting again
179+
--- ERROR: must reset previous user prior to setting again
180180
181181
--- 提权中,测试 ALTER SYSTEM 会失败
182182
ALTER SYSTEM SET wal_level = minimal;
183-
ERROR: ALTER SYSTEM blocked by set_user config
183+
--- ERROR: ALTER SYSTEM blocked by set_user config
184184
185185
--- 提权中,测试 COPY PROGRAM 会失败
186186
COPY (select 42) TO PROGRAM 'cat';
187-
ERROR: COPY PROGRAM blocked by set_user config
187+
--- ERROR: COPY PROGRAM blocked by set_user config
188188
189189
--- 提权中,测试 SET log_statement 会失败
190190
SET log_statement = 'none';
191-
ERROR: "SET log_statement" blocked by set_user config
191+
--- ERROR: "SET log_statement" blocked by set_user config
192192
193193
--- 恢复初始用户
194194
SELECT reset_user();
195195
SELECT SESSION_USER, CURRENT_USER;
196-
session_user | current_user
197-
--------------+--------------
198-
dba | dba
199-
(1 row)
196+
--- session_user | current_user
197+
--- --------------+--------------
198+
--- dba | dba
199+
--- (1 row)
200200
----
201201

202202
查看 `logfile` 能看到提权后的所有操作都被记录了下来,并且日志前缀带有 `AUDIT` 标签。

EN/modules/ROOT/pages/master/ecosystem_components/set_user.adoc

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -149,53 +149,53 @@ GRANT EXECUTE ON FUNCTION set_user_u(text) TO dba;
149149
-- Switch to user dba to simulate a dba login
150150
SET SESSION AUTHORIZATION dba;
151151
SELECT SESSION_USER, CURRENT_USER;
152-
session_user | current_user
153-
--------------+--------------
154-
dba | dba
155-
(1 row)
152+
--- session_user | current_user
153+
--- --------------+--------------
154+
--- dba | dba
155+
--- (1 row)
156156
157157
--- Escalate: using set_user() here fails because the target user is a superuser
158158
SELECT set_user('postgres');
159-
ERROR: switching to superuser not allowed
160-
HINT: Use 'set_user_u' to escalate.
159+
--- ERROR: switching to superuser not allowed
160+
--- HINT: Use 'set_user_u' to escalate.
161161
162162
--- Escalate: using set_user_u() here succeeds
163163
SELECT set_user_u('postgres');
164-
set_user_u
165-
------------
166-
OK
167-
(1 row)
164+
--- set_user_u
165+
--- ------------
166+
--- OK
167+
--- (1 row)
168168
169169
--- Check the user state after escalation
170170
SELECT SESSION_USER, CURRENT_USER;
171-
session_user | current_user
172-
--------------+--------------
173-
dba | postgres
174-
(1 row)
171+
--- session_user | current_user
172+
--- --------------+--------------
173+
--- dba | postgres
174+
--- (1 row)
175175
176176
--- Test calling set_user again; this fails
177177
SELECT set_user('bob');
178-
ERROR: must reset previous user prior to setting again
178+
--- ERROR: must reset previous user prior to setting again
179179
180180
--- While escalated, test that ALTER SYSTEM fails
181181
ALTER SYSTEM SET wal_level = minimal;
182-
ERROR: ALTER SYSTEM blocked by set_user config
182+
--- ERROR: ALTER SYSTEM blocked by set_user config
183183
184184
--- While escalated, test that COPY PROGRAM fails
185185
COPY (select 42) TO PROGRAM 'cat';
186-
ERROR: COPY PROGRAM blocked by set_user config
186+
--- ERROR: COPY PROGRAM blocked by set_user config
187187
188188
--- While escalated, test that SET log_statement fails
189189
SET log_statement = 'none';
190-
ERROR: "SET log_statement" blocked by set_user config
190+
--- ERROR: "SET log_statement" blocked by set_user config
191191
192192
--- Restore the original user
193193
SELECT reset_user();
194194
SELECT SESSION_USER, CURRENT_USER;
195-
session_user | current_user
196-
--------------+--------------
197-
dba | dba
198-
(1 row)
195+
--- session_user | current_user
196+
--- --------------+--------------
197+
--- dba | dba
198+
--- (1 row)
199199
----
200200

201201
Checking the `logfile` shows that all operations after escalation were recorded, and the log prefix carries the `AUDIT` tag.

0 commit comments

Comments
 (0)