SET ROLE no SQL Console do ClickHouse Cloud, a função pode parecer mudar para uma consulta e, em seguida, ser revertida na próxima. Use uma função do SQL Console específica para cada usuário quando as permissões precisarem persistir entre consultas e sessões.
Sintomas
- Após executar
SET ROLE sql_console_developer, as consultas subsequentes ainda são executadas comsql_console_read_only. - Os resultados de
currentRoles,enabledRolesedefaultRolesvariam entre as consultas. - Executar
SET ROLEjunto com outra consulta não mantém de forma consistente a função selecionada. SHOW GRANTSlista as funções esperadas, mas as permissões delas não estão ativas.
Por que isso acontece
SET ROLE altera as funções habilitadas na sessão atual. Ele não mantém esse estado de sessão para solicitações posteriores do SQL Console. Portanto, uma consulta subsequente pode ser executada sem a função habilitada por uma solicitação anterior.
Por esse motivo, não use SET ROLE como um mecanismo persistente de controle de acesso no SQL Console.
Como funcionam as funções de usuário do SQL Console
Configurar permissões persistentes
sql_console_admin ou outro usuário com o privilégio ACCESS MANAGEMENT.
1
Criar a função personalizada
O exemplo a seguir cria uma função personalizada
sql_console_developer e concede a ela permissões em my_database:sql_console_developer é uma função de exemplo, não uma função integrada do ClickHouse Cloud. Como alternativa, você pode usar uma função personalizada existente com as permissões de que o usuário precisa.2
Criar a função do SQL Console por usuário
Crie uma função cujo nome contenha o endereço de e-mail exato do usuário:Os backticks são obrigatórios porque o nome da função contém caracteres especiais.
3
Conceder a função personalizada
Conceda a função desejada à função do SQL Console por usuário:Você pode conceder várias funções, se necessário:
4
Iniciar uma nova sessão do SQL Console
Peça ao usuário para sair e entrar novamente no SQL Console ou atualizar a aba do navegador. Na nova sessão, o ClickHouse Cloud aplica Os resultados devem incluir as permissões concedidas por
sql-console-role:user@example.com a sql-console:user@example.com; não é necessária nenhuma instrução SET ROLE.Verifique as funções ativas:sql-console-role:user@example.com.Evite modificar funções gerenciadas
sql_console_admin nem sql_console_read_only para conceder permissões personalizadas. O ClickHouse Cloud gerencia essas funções integradas. Em vez disso, use sql-console-role:<email> para definir permissões por usuário.
Para exemplos gerais de gerenciamento de funções, consulte Consultas comuns de gerenciamento de acesso.