ON CLUSTER permite criar usuários no cluster; consulte DDL distribuído.
Identificação
IDENTIFIED WITH no_passwordIDENTIFIED WITH plaintext_password BY 'qwerty'IDENTIFIED WITH sha256_password BY 'qwerty'orIDENTIFIED BY 'password'IDENTIFIED WITH sha256_hash BY 'hash'orIDENTIFIED WITH sha256_hash BY 'hash' SALT 'salt'IDENTIFIED WITH double_sha1_password BY 'qwerty'IDENTIFIED WITH double_sha1_hash BY 'hash'IDENTIFIED WITH bcrypt_password BY 'qwerty'IDENTIFIED WITH bcrypt_hash BY 'hash'IDENTIFIED WITH ldap SERVER 'server_name'IDENTIFIED WITH kerberosorIDENTIFIED WITH kerberos REALM 'realm'IDENTIFIED WITH ssl_certificate CN 'mysite.com:user'IDENTIFIED WITH ssh_key BY KEY 'public_key' TYPE 'ssh-rsa', KEY 'another_public_key' TYPE 'ssh-ed25519'IDENTIFIED WITH http SERVER 'http_server'orIDENTIFIED WITH http SERVER 'http_server' SCHEME 'basic'IDENTIFIED BY 'qwerty'
No ClickHouse Cloud, por padrão, as senhas devem atender aos seguintes requisitos de complexidade:
- Ter no mínimo 12 caracteres
- Conter pelo menos 1 caractere numérico
- Conter pelo menos 1 letra maiúscula
- Conter pelo menos 1 letra minúscula
- Conter pelo menos 1 caractere especial
Exemplos
-
O nome de usuário a seguir é
name1e não exige senha — o que obviamente não oferece muita segurança: -
Para especificar uma senha em texto simples:
-
A opção mais comum é usar uma senha com hash SHA-256. O ClickHouse calculará o hash da senha para você quando você especificar
IDENTIFIED WITH sha256_password. Por exemplo:O usuárioname3agora pode fazer login commy_password, mas a senha é armazenada como o valor de hash acima. O arquivo SQL a seguir foi criado em/var/lib/clickhouse/accesse é executado na inicialização do servidor:
-
O
double_sha1_passwordnormalmente não é necessário, mas é útil ao trabalhar com clientes que o exigem (como a interface MySQL):O ClickHouse gera e executa a seguinte consulta: -
O
bcrypt_passwordé a opção mais segura para armazenar senhas. Ele usa o algoritmo bcrypt, que é resistente a ataques de força bruta, mesmo se o hash da senha for comprometido.O comprimento da senha é limitado a 72 caracteres com esse método. O parâmetro de fator de trabalho do bcrypt, que define a quantidade de computação e o tempo necessários para calcular o hash e verificar a senha, pode ser modificado na configuração do servidor:O fator de trabalho deve estar entre 4 e 31, com valor padrão de 12.
-
O tipo de senha também pode ser omitido:
Nesse caso, o ClickHouse usará o tipo de senha padrão especificado na configuração do servidor:Os tipos de senha disponíveis são:
plaintext_password,sha256_password,double_sha1_password. -
É possível especificar vários métodos de autenticação:
- Versões mais antigas do ClickHouse talvez não ofereçam suporte à sintaxe de múltiplos métodos de autenticação. Portanto, se o servidor do ClickHouse contiver esses usuários e passar por downgrade para uma versão que não ofereça esse suporte, esses usuários se tornarão inutilizáveis e algumas operações relacionadas a usuários deixarão de funcionar. Para fazer o downgrade corretamente, é necessário configurar todos os usuários para que tenham um único método de autenticação antes do downgrade. Como alternativa, se o servidor tiver passado por downgrade sem o procedimento adequado, os usuários com problema deverão ser removidos.
no_passwordnão pode coexistir com outros métodos de autenticação por motivos de segurança. Portanto, você só pode especificarno_passwordse ele for o único método de autenticação na consulta.
Host do usuário
HOST da consulta das seguintes formas:
HOST IP 'ip_address_or_subnetwork'— O usuário pode se conectar ao servidor ClickHouse somente a partir do endereço IP especificado ou de uma sub-rede. Exemplos:HOST IP '192.168.0.0/16',HOST IP '2001:DB8::/32'. Para uso em produção, especifique apenas elementosHOST IP(endereços IP e suas máscaras), pois o uso dehostehost_regexppode causar latência adicional.HOST ANY— O usuário pode se conectar de qualquer lugar. Esta é a opção padrão.HOST LOCAL— O usuário pode se conectar apenas localmente.HOST NAME 'fqdn'— O host do usuário pode ser especificado como FQDN. Por exemplo,HOST NAME 'mysite.com'.HOST REGEXP 'regexp'— Você pode usar expressões regulares pcre ao especificar hosts de usuário. Por exemplo,HOST REGEXP '.*\.mysite\.com'.HOST LIKE 'template'— Permite usar o operador LIKE para filtrar os hosts do usuário. Por exemplo,HOST LIKE '%'é equivalente aHOST ANY, eHOST LIKE '%.mysite.com'filtra todos os hosts no domíniomysite.com.
@ após o nome de usuário. Exemplos:
CREATE USER mira@'127.0.0.1'— Equivalente à sintaxeHOST IP.CREATE USER mira@'localhost'— Equivalente à sintaxeHOST LOCAL.CREATE USER mira@'192.168.%.%'— Equivalente à sintaxeHOST LIKE.
Cláusula VALID UNTIL
YYYY-MM-DD [hh:mm:ss] [timezone] para valores de data e hora, em que [timezone] deve ser um deslocamento numérico, como +09:00, ou um entre UTC, GMT, Z, MSK, MSD; zonas IANA nomeadas, como Asia/Tokyo, não são reconhecidas (veja a observação abaixo). Por padrão, esse parâmetro é igual a 'infinity'.
A cláusula VALID UNTIL só pode ser especificada junto com um método de autenticação, exceto quando nenhum método de autenticação tiver sido especificado na consulta. Nesse cenário, a cláusula VALID UNTIL será aplicada a todos os métodos de autenticação existentes.
Exemplos:
CREATE USER name1 VALID UNTIL '2025-01-01'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 UTC'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 +09:00'CREATE USER name1 VALID UNTIL 'infinity'CREATE USER name1 IDENTIFIED WITH plaintext_password BY 'no_expiration', bcrypt_password BY 'expiration_set' VALID UNTIL '2025-01-01'
A string de data e hora é analisada por
parseDateTimeBestEffort, que reconhece apenas os tokens de fuso horário UTC, GMT, Z, MSK, MSD e deslocamentos numéricos, como +09:00 ou -05:00. Fusos horários IANA nomeados, como Asia/Tokyo ou Europe/London, não são suportados, e um deslocamento fixo não é equivalente a uma zona IANA em regiões que adotam horário de verão; portanto, você deve calcular o deslocamento correto para a data específica que está codificando.Cláusula GRANTEES
GRANTEES:
user— Especifica um usuário ao qual este usuário pode conceder privilégios.role— Especifica uma role à qual este usuário pode conceder privilégios.ANY— Este usuário pode conceder privilégios a qualquer um. Esta é a configuração padrão.NONE— Este usuário não pode conceder privilégios a ninguém.
EXCEPT. Por exemplo, CREATE USER user1 GRANTEES ANY EXCEPT user2. Isso significa que, se user1 tiver alguns privilégios concedidos com GRANT OPTION, poderá concedê-los a qualquer um, exceto user2.
Exemplos
mira, protegida pela senha qwerty:
mira deve iniciar o aplicativo cliente no host em que o servidor ClickHouse está em execução.
Crie a conta de usuário john e atribua roles:
john, atribua roles e defina algumas delas como padrão:
john e permita que ele conceda seus privilégios ao usuário da conta jack:
john: