Skip to main content
AutogerenciadoSe você estiver trabalhando com ClickHouse autogerenciado, consulte usuários e funções SQL.
Este artigo apresenta os conceitos básicos para definir usuários e funções SQL e aplicar esses privilégios e permissões a bancos de dados, tabelas, linhas e colunas.

Usuário admin

Os serviços do ClickHouse Cloud têm um usuário admin, default, criado quando o serviço é criado. A senha é fornecida na criação do serviço e pode ser redefinida por usuários do ClickHouse Cloud que tenham a função Admin. Quando você adiciona usuários SQL ao seu serviço do ClickHouse Cloud, eles precisarão de um nome de usuário SQL e uma senha. Se quiser que eles tenham privilégios de nível administrativo, atribua aos novos usuários a função default_role. Por exemplo, adicionando o usuário clickhouse_admin:
Ao usar o SQL Console, suas instruções SQL não serão executadas como o usuário default. Em vez disso, elas serão executadas como um usuário chamado sql-console:${cloud_login_email}, em que cloud_login_email é o e-mail do usuário que está executando a consulta naquele momento.Esses usuários do SQL Console gerados automaticamente têm a função default.

Autenticação sem senha

Há duas funções disponíveis para o Console SQL: sql_console_admin, com permissões idênticas às de default_role, e sql_console_read_only, com permissões somente leitura. Os usuários Admin recebem a função sql_console_admin por padrão, então nada muda para eles. No entanto, a função sql_console_read_only permite conceder a usuários não Admin acesso somente leitura ou acesso total a qualquer instância. Um Admin precisa configurar esse acesso. As funções podem ser ajustadas com os comandos GRANT ou REVOKE para atender melhor aos requisitos específicos de cada instância, e todas as modificações feitas nessas funções serão mantidas.

Controle de acesso granular

Essa funcionalidade de controle de acesso também pode ser configurada manualmente com granularidade por usuário. Antes de atribuir as novas funções sql_console_* aos usuários, devem ser criadas funções de banco de dados específicos por usuário do console SQL que sigam o namespace sql-console-role:<email>. Por exemplo:
Quando uma função correspondente for detectada, ela será atribuída ao usuário em vez das funções padrão. Isso permite configurações de controle de acesso mais complexas, como criar funções como sql_console_sa_role e sql_console_pm_role e concedê-las a usuários específicos. Por exemplo:

Teste os privilégios de administrador

Saia da sessão com o usuário default e entre novamente como o usuário clickhouse_admin. Todos estes devem funcionar:

Usuários não administradores

Os usuários devem ter os privilégios necessários, e nem todos devem ser administradores. O restante deste documento apresenta cenários de exemplo e as funções necessárias.

Preparação

Crie estas tabelas e usuários para uso nos exemplos.

Criando um banco de dados, uma tabela e linhas de exemplo

1

Criar um banco de dados de teste

2

Criar uma tabela

3

Popular a tabela com linhas de exemplo

4

Verificar a tabela

Consulta
Resposta
5

Criar column_user

Crie um usuário comum que será usado para demonstrar a restrição de acesso a determinadas colunas:
6

Criar row_user

Crie um usuário comum que será usado para demonstrar a restrição de acesso a linhas com determinados valores:

Criando funções

Com este conjunto de exemplos:
  • serão criadas funções para diferentes privilégios, como colunas e linhas
  • os privilégios serão concedidos às funções
  • usuários serão atribuídos a cada função
As funções são usadas para definir grupos de usuários para determinados privilégios, em vez de gerenciar cada usuário separadamente.
1

Crie uma função para restringir os usuários dessa função a ver apenas column1 no banco de dados db1 e na tabela table1:

2

Defina privilégios para permitir a visualização de column1

3

Adicione o usuário column_user à função column1_users

4

Crie uma função para restringir os usuários dessa função a ver apenas linhas selecionadas; neste caso, apenas linhas que contenham A em column1

5

Adicione row_user à função A_rows_users

6

Crie uma política para permitir a visualização apenas das linhas em que column1 tenha o valor A

7

Defina privilégios para o banco de dados e a tabela

8

Conceda permissões explícitas para que outras funções ainda tenham acesso a todas as linhas

Ao associar uma política a uma tabela, o sistema aplicará essa política, e somente os usuários e funções definidos poderão realizar operações na tabela; todos os demais terão qualquer operação negada. Para evitar que a política restritiva de linhas seja aplicada a outros usuários, outra política deve ser definida para permitir que outros usuários e funções tenham acesso normal ou outros tipos de acesso.

Verificação

Testando privilégios da função com usuário com restrição de colunas

1

Faça login no cliente do ClickHouse usando o usuário clickhouse_admin

2

Verifique o acesso ao banco de dados, à tabela e a todas as linhas com o usuário admin.

3

Faça login no cliente do ClickHouse usando o usuário column_user

4

Teste o SELECT usando todas as colunas

O acesso foi negado porque todas as colunas foram especificadas, e o usuário tem acesso apenas a id e column1
5

Verifique a consulta SELECT apenas com as colunas especificadas e permitidas:

Testando privilégios de função com usuário com restrição por linha

1

Faça login no cliente do ClickHouse usando row_user

2

Veja as linhas disponíveis

Verifique se apenas as duas linhas acima são retornadas; as linhas com o valor B em column1 não devem ser incluídas.

Modificando usuários e funções

Os usuários podem receber várias funções para combinar os privilégios necessários. Ao usar várias funções, o sistema combinará essas funções para determinar os privilégios; o efeito final é que as permissões das funções serão cumulativas. Por exemplo, se role1 permitir apenas SELECT em column1 e role2 permitir SELECT em column1 e column2, o usuário terá acesso a ambas as colunas.
1

Usando a conta de administrador, crie um novo usuário para restringir por linha e coluna com funções padrão

2

Remova os privilégios anteriores da função A_rows_users

3

Permita que a função A_row_users faça SELECT apenas de column1

4

Faça login no cliente do ClickHouse usando row_and_column_user

5

Teste com todas as colunas:

6

Teste com as colunas permitidas:

Solução de problemas

Em alguns casos, os privilégios podem se sobrepor ou se combinar de forma a produzir resultados inesperados. Os comandos a seguir podem ser usados para ajudar a identificar o problema usando uma conta de administrador

Listar grants e funções de um usuário

Listar funções no ClickHouse

Exibir as políticas

Veja como uma política foi definida e quais são os privilégios atuais

Comandos de exemplo para gerenciar funções, políticas e usuários

Os comandos a seguir podem ser usados para:
  • excluir privilégios
  • excluir políticas
  • desvincular usuários de funções
  • excluir usuários e funções
Execute estes comandos como um usuário Admin ou o usuário default

Remover um privilégio de uma função

Excluir uma política

Remover um usuário de uma função

Excluir uma função

Excluir um usuário

Resumo

Este artigo apresentou os conceitos básicos para criar usuários e funções SQL e mostrou as etapas para definir e modificar privilégios de usuários e funções. Para informações mais detalhadas sobre cada um, consulte nossos guias do usuário e a documentação de referência.
Última modificação em 3 de julho de 2026