Skip to main content
ClickHouse Cloud SQL 콘솔에서 SET ROLE을 실행하면 한 쿼리에서는 역할이 변경된 것처럼 보이지만, 다음 쿼리에서는 원래 역할로 되돌아갈 수 있습니다. 쿼리와 세션 전반에서 권한을 유지해야 한다면 사용자별 SQL 콘솔 역할을 사용하십시오.

증상

다음 증상 중 하나 이상이 나타날 수 있습니다.
  • SET ROLE sql_console_developer를 실행한 후에도 이후 쿼리가 계속 sql_console_read_only 역할로 실행됩니다.
  • 쿼리마다 currentRoles, enabledRoles, defaultRoles의 결과가 달라집니다.
  • SET ROLE와 다른 쿼리를 함께 실행하면 선택한 역할이 항상 유지되는 것은 아닙니다.
  • SHOW GRANTS에 예상한 역할이 표시되지만, 해당 권한은 활성화되지 않습니다.
다음 명령으로 현재 사용자와 역할을 확인할 수 있습니다.

이 문제가 발생하는 이유

SQL 콘솔은 여러 레플리카로 구성된 ClickHouse Cloud 서비스에 상태 비저장 HTTP 연결을 통해 쿼리를 전송합니다. 연속된 쿼리가 동일한 연결이나 레플리카를 사용할 것이라고 보장할 수 없습니다. SET ROLE은 현재 세션에서 활성화된 역할을 변경합니다. 하지만 이후 SQL 콘솔 요청에서도 세션 상태가 유지되지는 않습니다. 따라서 후속 쿼리는 이전 요청에서 활성화한 역할 없이 실행될 수 있습니다. 따라서 SQL 콘솔에서는 SET ROLE을 영구적인 액세스 제어 수단으로 사용하지 마십시오.

SQL 콘솔 사용자 역할의 작동 방식

사용자가 SQL 콘솔을 열면 ClickHouse Cloud에서 다음 명명 규칙에 따라 데이터베이스 사용자가 프로비저닝됩니다:
ClickHouse Cloud는 이름이 다음 규칙을 따르는 데이터베이스 역할도 확인합니다:
해당 역할이 있으면 ClickHouse Cloud가 일치하는 SQL 콘솔 사용자에게 할당합니다. 이는 개별 SQL 콘솔 사용자에게 영구적인 사용자 지정 권한을 부여하는 지원 방식입니다.

영구 권한 구성

sql_console_admin 역할이 있는 SQL 콘솔 사용자 또는 ACCESS MANAGEMENT 권한이 있는 사용자 등, 서비스에 대한 관리자 권한이 있는 사용자로 다음 SQL 문을 실행하십시오.
1

사용자 지정 역할 만들기

다음 예시는 사용자 지정 sql_console_developer 역할을 만들고 my_database에 대한 권한을 부여합니다.
sql_console_developer는 기본 제공되는 ClickHouse Cloud 역할이 아닌 예시 역할입니다. 대신 사용자에게 필요한 권한이 부여된 기존 사용자 지정 역할을 사용할 수 있습니다.
2

사용자별 SQL 콘솔 역할 만들기

이름에 사용자의 정확한 이메일 주소가 포함된 역할을 만드십시오.
역할 이름에 특수 문자가 포함되어 있으므로 백틱이 필요합니다.
3

사용자 지정 역할 부여

원하는 역할을 사용자별 SQL 콘솔 역할에 부여하십시오.
필요에 따라 여러 역할을 부여할 수 있습니다.
4

새 SQL 콘솔 세션 시작

사용자에게 SQL 콘솔에서 로그아웃한 후 다시 로그인하거나 브라우저 탭을 새로 고치도록 안내하십시오. 새 세션에서는 ClickHouse Cloud가 sql-console-role:user@example.comsql-console:user@example.com에 적용하므로 SET ROLE SQL 문을 실행할 필요가 없습니다.활성 역할을 확인하십시오.
결과에는 sql-console-role:user@example.com을 통해 부여된 권한이 포함되어야 합니다.

관리형 역할을 수정하지 마십시오

사용자 지정 권한을 부여하려고 sql_console_admin 또는 sql_console_read_only를 수정하지 마십시오. 이러한 기본 제공 역할은 ClickHouse Cloud에서 관리합니다. 대신 사용자별 권한에는 sql-console-role:<email>을 사용하십시오. 일반적인 역할 관리 예시는 일반적인 액세스 관리 쿼리를 참조하십시오.
마지막 수정일 2026년 8월 14일