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
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
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:
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
default e entre novamente como o usuário clickhouse_admin.
Todos estes devem funcionar:
Usuários não administradores
Preparação
Criando um banco de dados, uma tabela e linhas de exemplo
1
Crie um banco de dados de teste
2
Crie uma tabela
3
Preencha a tabela com linhas de exemplo
4
Verifique a tabela
Consulta
Resposta
5
Crie column_user
Crie um usuário comum que será usado para demonstrar a restrição de acesso a determinadas colunas:6
Crie 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
- 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
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 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 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 column15
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
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
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
- excluir privilégios
- excluir políticas
- desvincular usuários de funções
- excluir usuários e funções