> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Usuários existentes do ClickHouse, devidamente configurados, podem ser autenticados por meio do protocolo de autenticação Kerberos.

# Kerberos

<CloudNotSupportedBadge />

<Note>
  Esta página não se aplica ao [ClickHouse Cloud](https://clickhouse.com/cloud). O recurso documentado aqui não está disponível nos serviços do ClickHouse Cloud.
  Consulte o guia [Compatibilidade com Cloud](/pt-BR/products/cloud/guides/cloud-compatibility) do ClickHouse para mais informações.
</Note>

Usuários existentes do ClickHouse, devidamente configurados, podem ser autenticados por meio do protocolo de autenticação Kerberos.

Atualmente, o Kerberos só pode ser usado como autenticador externo para usuários existentes, definidos em `users.xml` ou em caminhos locais de controle de acesso. Esses usuários só podem usar solicitações HTTP e devem conseguir se autenticar com o mecanismo GSS-SPNEGO.

Para essa abordagem, o Kerberos deve estar configurado no sistema e habilitado na configuração do ClickHouse.

<div id="enabling-kerberos-in-clickhouse">
  ## Como habilitar o Kerberos no ClickHouse
</div>

Para habilitar o Kerberos, inclua a seção `kerberos` no `config.xml`. Essa seção pode conter parâmetros adicionais.

<div id="parameters">
  #### Parâmetros
</div>

* `principal` - nome canônico do principal de serviço que será obtido e usado ao aceitar contextos de segurança.
  * Este parâmetro é opcional; se for omitido, o principal padrão será usado.

* `realm` - realm que será usado para restringir a autenticação apenas às solicitações cujo realm do iniciador corresponda a ele.
  * Este parâmetro é opcional; se for omitido, nenhum filtro adicional por realm será aplicado.

* `keytab` - caminho para o arquivo keytab do serviço.
  * Este parâmetro é opcional; se for omitido, o caminho para o arquivo keytab do serviço deverá ser definido na variável de ambiente `KRB5_KTNAME`.

Exemplo (vai em `config.xml`):

```xml theme={null}
<clickhouse>
    <!- ... -->
    <kerberos />
</clickhouse>
```

Com especificação de principal:

```xml theme={null}
<clickhouse>
    <!- ... -->
    <kerberos>
        <principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
    </kerberos>
</clickhouse>
```

Com filtro por realm:

```xml theme={null}
<clickhouse>
    <!- ... -->
    <kerberos>
        <realm>EXAMPLE.COM</realm>
    </kerberos>
</clickhouse>
```

<Note>
  Você pode definir apenas uma seção `kerberos`. A presença de múltiplas seções `kerberos` fará com que o ClickHouse desative a autenticação Kerberos.
</Note>

<Note>
  As seções `principal` e `realm` não podem ser especificadas ao mesmo tempo. A presença de ambas fará com que o ClickHouse desative a autenticação Kerberos.
</Note>

<div id="kerberos-as-an-external-authenticator-for-existing-users">
  ## Kerberos como autenticador externo para usuários existentes
</div>

O Kerberos pode ser usado como método para verificar a identidade de usuários definidos localmente (usuários definidos em `users.xml` ou em caminhos locais de controle de acesso). Atualmente, **somente** requisições pela interface HTTP podem usar *Kerberos* (por meio do mecanismo GSS-SPNEGO).

O formato do nome principal do Kerberos geralmente segue este padrão:

* *primary/instance\@REALM*

A parte */instance* pode ocorrer zero ou mais vezes. **Espera-se que a parte *primary* do nome principal canônico do iniciador corresponda ao nome de usuário autenticado com Kerberos para que a autenticação seja bem-sucedida**.

<div id="enabling-kerberos-in-users-xml">
  ### Habilitando o Kerberos em `users.xml`
</div>

Para habilitar a autenticação Kerberos para o usuário, especifique a seção `kerberos` em vez de `password` ou de seções semelhantes na definição do usuário.

Parâmetros:

* `realm` - um realm que será usado para restringir a autenticação apenas às solicitações cujo realm do iniciador corresponda a ele.
  * Este parâmetro é opcional; se for omitido, nenhum filtro adicional por realm será aplicado.

Exemplo (deve ser incluído em `users.xml`):

```xml theme={null}
<clickhouse>
    <!- ... -->
    <users>
        <!- ... -->
        <my_user>
            <!- ... -->
            <kerberos>
                <realm>EXAMPLE.COM</realm>
            </kerberos>
        </my_user>
    </users>
</clickhouse>
```

<Note>
  Observe que a autenticação Kerberos não pode ser usada em conjunto com nenhum outro mecanismo de autenticação. A presença de qualquer outra seção, como `password`, junto com `kerberos`, fará com que o ClickHouse seja encerrado.
</Note>

<Info>
  **Lembrete**

  Observe que, a partir do momento em que o usuário `my_user` usa `kerberos`, o Kerberos deve estar habilitado no arquivo principal `config.xml`, conforme descrito anteriormente.
</Info>

<div id="enabling-kerberos-using-sql">
  ### Habilitando o Kerberos usando SQL
</div>

Quando o [Controle de acesso e gerenciamento de contas via SQL](/pt-BR/concepts/features/security/access-rights#access-control-usage) está habilitado no ClickHouse, usuários identificados pelo Kerberos também podem ser criados usando instruções SQL.

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'
```

...ou, sem filtrar pelo realm:

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH kerberos
```
