본문으로 바로가기
본문으로 바로가기

EXECUTE AS Statement

다른 USER 권한으로 쿼리를 실행할 수 있습니다.

구문

EXECUTE AS target_user;
EXECUTE AS target_user subquery;

첫 번째 형식( subquery 없이 사용)은 현재 세션에서 이어지는 모든 쿼리가 지정된 target_user 를 대신하여 실행되도록 설정합니다.

두 번째 형식( subquery 를 사용하는 경우)은 지정된 subquery 만 지정된 target_user 를 대신하여 실행합니다.

두 형식이 모두 동작하려면 설정값 access_control_improvements.allow_impersonate_user1 로 설정하고 IMPERSONATE 권한을 부여해야 합니다. 예를 들어, 다음 명령은

GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;

user2 사용자에게는 EXECUTE AS user1 ... 명령을 실행할 수 있는 권한을 부여하고, user3 사용자에게는 임의의 사용자로서 명령을 실행할 수 있는 권한을 부여합니다.

다른 사용자로 가장하여 명령을 실행하는 경우 함수 currentUser()는 그 다른 사용자의 이름을 반환하고, 함수 authenticatedUser()는 실제로 인증된 사용자의 이름을 반환합니다.

예시

SELECT currentUser(), authenticatedUser(); -- outputs "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- outputs "james    default"