> ## 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.

> Los usuarios existentes de ClickHouse, correctamente configurados, pueden autenticarse mediante el protocolo de autenticación 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>
            No es compatible con ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

<Note>
  Esta página no se aplica a [ClickHouse Cloud](https://clickhouse.com/cloud). La funcionalidad documentada aquí no está disponible en los servicios de ClickHouse Cloud.
  Consulta la guía de ClickHouse sobre [compatibilidad con Cloud](/docs/es/products/cloud/guides/cloud-compatibility) para obtener más información.
</Note>

Los usuarios existentes de ClickHouse que estén configurados correctamente pueden autenticarse mediante el protocolo de autenticación Kerberos.

Actualmente, Kerberos solo puede utilizarse como autenticador externo para usuarios existentes, definidos en `users.xml` o en las rutas locales de control de acceso. Estos usuarios solo pueden usar solicitudes HTTP y deben poder autenticarse mediante el mecanismo GSS-SPNEGO.

Para este enfoque, Kerberos debe estar configurado en el sistema y habilitado en la configuración de ClickHouse.

<div id="enabling-kerberos-in-clickhouse">
  ## Habilitar Kerberos en ClickHouse
</div>

Para habilitar Kerberos, se debe incluir la sección `kerberos` en `config.xml`. Esta sección puede contener parámetros adicionales.

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

* `principal` - nombre canónico del principal de servicio que se obtendrá y utilizará al aceptar contextos de seguridad.
  * Este parámetro es opcional; si se omite, se usará el principal predeterminado.

* `realm` - realm que se usará para restringir la autenticación únicamente a las solicitudes cuyo realm del iniciador coincida con él.
  * Este parámetro es opcional; si se omite, no se aplicará ningún filtro adicional por realm.

* `keytab` - ruta al archivo keytab del servicio.
  * Este parámetro es opcional; si se omite, la ruta al archivo keytab del servicio debe establecerse en la variable de entorno `KRB5_KTNAME`.

Ejemplo (va en `config.xml`):

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

Con principal especificado:

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

Con filtro por realm:

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

<Note>
  Solo se puede definir una sección `kerberos`. La presencia de varias secciones `kerberos` hará que ClickHouse deshabilite la autenticación Kerberos.
</Note>

<Note>
  Las secciones `principal` y `realm` no pueden especificarse al mismo tiempo. La presencia de ambas secciones `principal` y `realm` hará que ClickHouse deshabilite la autenticación Kerberos.
</Note>

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

Kerberos puede usarse como método para verificar la identidad de usuarios definidos localmente (usuarios definidos en `users.xml` o en rutas locales de control de acceso). Actualmente, **solo** las solicitudes a través de la interfaz HTTP pueden usar Kerberos (mediante el mecanismo GSS-SPNEGO).

El formato del nombre del principal de Kerberos suele seguir este patrón:

* *primary/instance\@REALM*

La parte */instance* puede aparecer cero o más veces. **Para que la autenticación se realice correctamente, se espera que la parte *primary* del nombre canónico del principal del iniciador coincida con el nombre de usuario configurado para Kerberos**.

<div id="enabling-kerberos-in-users-xml">
  ### Habilitación de Kerberos en `users.xml`
</div>

Para habilitar la autenticación de Kerberos para el usuario, especifique la sección `kerberos` en lugar de `password` o secciones similares en la definición del usuario.

Parámetros:

* `realm` - un realm que se usará para restringir la autenticación únicamente a aquellas solicitudes cuyo realm del iniciador coincida con él.
  * Este parámetro es opcional; si se omite, no se aplicará ningún filtrado adicional por realm.

Ejemplo (va en `users.xml`):

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

<Note>
  Tenga en cuenta que la autenticación Kerberos no puede usarse junto con ningún otro mecanismo de autenticación. La presencia de cualquier otra sección, como `password`, junto a `kerberos` hará que ClickHouse se apague.
</Note>

<Info>
  **Recordatorio**

  Tenga en cuenta que, a partir de ahora, una vez que el usuario `my_user` use `kerberos`, Kerberos debe estar habilitado en el archivo principal `config.xml`, como se describió anteriormente.
</Info>

<div id="enabling-kerberos-using-sql">
  ### Habilitar Kerberos mediante SQL
</div>

Cuando en ClickHouse está habilitado el [Control de acceso y gestión de cuentas basado en SQL](/docs/es/concepts/features/security/access-rights#access-control-usage), también se pueden crear mediante sentencias SQL usuarios identificados con Kerberos.

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

...o, sin filtrar por el realm:

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