Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

EXECUTE AS

Не поддерживается в ClickHouse Cloud

Позволяет выполнять запросы от имени другого пользователя.

Синтаксис

EXECUTE AS target_user;
EXECUTE AS target_user subquery;

Первая форма (без subquery) задаёт, что все последующие запросы в текущем сеансе будут выполняться от имени указанного target_user.

Вторая форма (с subquery) выполняет только указанный subquery от имени указанного target_user.

Для работы обеих форм требуется, чтобы параметр конфигурации access_control_improvements.allow_impersonate_user был установлен в 1, а привилегия 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"
Navigation