users do arquivo de configuração users.xml contém as configurações dos usuários.
O ClickHouse também oferece suporte ao fluxo de trabalho orientado por SQL para gerenciar usuários. Recomendamos usá-lo.
users:
user_name/password
-
Para definir uma senha em texto simples (não recomendado), coloque-a em um elemento
password. Por exemplo,<password>qwerty</password>. A senha pode ser deixada em branco.
-
Para definir uma senha usando seu hash SHA256, coloque-a em um elemento
password_sha256_hex. Por exemplo,<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>. Exemplo de como gerar uma senha no shell:A primeira linha do resultado é a senha. A segunda linha é o hash SHA256 correspondente.
-
Para compatibilidade com clientes MySQL, a senha pode ser especificada como um hash double SHA1. Coloque-a em um elemento
password_double_sha1_hex. Por exemplo,<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>. Exemplo de como gerar uma senha no shell:A primeira linha do resultado é a senha. A segunda linha é o hash double SHA1 correspondente.
Configuração da autenticação TOTP
users.xml, além da autenticação baseada em senha.
Esse recurso ainda não tem suporte no controle de acesso orientado por SQL.
Para autenticar usando TOTP, os usuários devem fornecer uma senha primária junto com uma senha de uso único gerada pelo aplicativo TOTP, por meio da opção de linha de comando --one-time-password ou concatenada à senha principal com o caractere ’+’.
Por exemplo, se a senha primária for some_password e o código TOTP gerado for 345123, o usuário pode especificar --password some_password+345123 ou --password some_password --one-time-password 345123 ao se conectar ao ClickHouse. Se nenhuma senha for especificada, o clickhouse-client solicitará a senha interativamente.
Para habilitar a autenticação TOTP para um usuário, configure a seção time_based_one_time_password em users.xml. Essa seção define as configurações de TOTP, como Secret, período de validade, número de dígitos e algoritmo de hash.
Exemplo
secret em users.xml.
Para habilitar o TOTP para um usuário específico, adicione a qualquer campo existente baseado em senha (como password ou password_sha256_hex) outra seção time_based_one_time_password.
A ferramenta qrencode pode ser usada para gerar um código QR para o segredo do TOTP.
username/ssh-key
Essa configuração permite a autenticação com chaves SSH. Dada uma chave SSH (como a gerada pelossh-keygen), como
ssh_key seja
ssh-ed25519 por ssh-rsa ou ecdsa-sha2-nistp256 no caso dos outros algoritmos compatíveis.
Múltiplos métodos de autenticação
Um único usuário pode ser configurado com vários métodos de autenticação usando o elemento<auth_methods>. Isso permite que o usuário se autentique com qualquer um dos métodos listados — por exemplo, ele pode ter tanto uma senha quanto uma credencial LDAP, e o login com qualquer uma delas será bem-sucedido.
Cada elemento filho de <auth_methods> é um contêiner com nome arbitrário que contém exatamente um tipo de autenticação. O nome desse contêiner (por exemplo, <method1>, <primary>, <a1>) não importa; apenas o elemento interno de autenticação é considerado.
Exemplo: várias senhas
<auth_methods>:
password— senha em texto simplespassword_sha256_hex— hash de senha SHA256password_scram_sha256_hex— hash de senha SCRAM-SHA-256password_double_sha1_hex— hash de senha double SHA1ldap— autenticação de servidor LDAPkerberos— autenticação Kerberosssl_certificates— autenticação por certificado SSLssh_keys— autenticação por chave SSHhttp_authentication— autenticação HTTP
<auth_methods>não pode ser usado junto com métodos de autenticação especificados no nível do usuário. Use um estilo ou outro, não os dois.<auth_methods>deve conter pelo menos um método de autenticação.- Cada elemento wrapper em
<auth_methods>deve conter exatamente um tipo de autenticação (com exceção de<ssh_keys>, que pode conter vários, para compatibilidade com versões anteriores). - TOTP (
<time_based_one_time_password>) é especificado no nível do usuário (fora de<auth_methods>) e se aplica a todos os métodos baseados em senha da lista. Pelo menos um método baseado em senha é necessário quando o TOTP está habilitado.
auth_methods com TOTP
<password>), enquanto o método LDAP faz a autenticação no servidor externo de forma independente.
access_management
Esta configuração habilita ou desabilita o uso do controle de acesso e gerenciamento de contas baseado em SQL para o usuário. Valores possíveis:- 0 — Desabilitado.
- 1 — Habilitado.
grants
Esta configuração permite conceder quaisquer privilégios ao usuário selecionado. Cada elemento da lista deve ser uma consultaGRANT sem especificar nenhum beneficiário.
Exemplo:
dictionaries, access_management, named_collection_control, show_named_collections_secrets
e allow_databases.
user_name/networks
Lista de redes a partir das quais o usuário pode se conectar ao servidor do ClickHouse. Cada elemento da lista pode ter uma das seguintes formas:-
<ip>— Endereço IP ou máscara de rede. Exemplos:213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— Nome do host. Exemplo:example01.host.ru. Para verificar o acesso, é feita uma consulta DNS, e todos os endereços IP retornados são comparados com o endereço remoto. -
<host_regexp>— Expressão regular para nomes de host. Exemplo:^example\d\d-\d\d-\d\.host\.ru$Para verificar o acesso, é feita uma consulta DNS PTR para o endereço remoto e, em seguida, a regexp especificada é aplicada. Depois, é feita outra consulta DNS para os resultados da consulta PTR, e todos os endereços recebidos são comparados com o endereço remoto. Recomendamos fortemente que a regexp termine com $.
Não é seguro abrir o acesso a partir de qualquer rede, a menos que você tenha um firewall configurado corretamente ou que o servidor não esteja conectado diretamente à Internet.
user_name/profile
Você pode atribuir um perfil de configurações ao usuário. Os perfis de configurações são definidos em uma seção separada do arquivousers.xml. Para mais informações, consulte Perfis de configurações.
user_name/quota
As quotas permitem acompanhar ou limitar o uso de recursos ao longo de um período. As quotas são configuradas na seçãoquotas
do arquivo de configuração users.xml.
Você pode atribuir um conjunto de quotas ao usuário. Para uma descrição detalhada da configuração de quotas, consulte Quotas.
user_name/databases
Nesta seção, você pode limitar as linhas retornadas pelo ClickHouse em consultasSELECT feitas pelo usuário atual, implementando assim segurança básica em nível de linha.
Exemplo
A configuração a seguir faz com que o usuário user1 só possa ver as linhas de table1 retornadas por consultas SELECT nas quais o valor do campo id é 1000.
filter pode ser qualquer expressão que resulte em um valor do tipo UInt8. Em geral, ele contém comparações e operadores lógicos. As linhas de database_name.table1 para as quais o filter resulta em 0 não são retornadas para este usuário. A filtragem é incompatível com operações PREWHERE e desativa a otimização WHERE→PREWHERE.
Funções
Você pode criar qualquer uma das funções predefinidas usando a seçãoroles do arquivo de configuração user.xml.
Estrutura da seção roles:
users: