> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/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

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Sem suporte no ClickHouse Cloud
        </div>;
};

<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](/docs/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](/docs/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
```
