MariaDB comenzando con 10.1.11

los gssapi El complemento de autenticación se lanzó por primera vez en MariaDB 10.1.11.

los gssapi El complemento de autenticación permite al usuario autenticarse con los servicios que utilizan el Interfaz de programa de aplicación de servicios de seguridad genéricos (GSSAPI). Windows tiene una API ligeramente diferente pero muy similar llamada Interfaz de proveedor de soporte de seguridad (SSPI). GSSAPI es una API estandarizada descrita en RFC2743 y RFC2744. El cliente y el servidor negocian utilizando un protocolo estandarizado descrito en RFC7546.

En Windows, este complemento de autenticación admite Kerberos y NTLM autenticación. La autenticación de Windows es compatible independientemente de si dominio se utiliza en el medio ambiente.

En los sistemas Unix, el servicio GSSAPI más dominante es Kerberos. Sin embargo, se usa con menos frecuencia en sistemas Unix que en Windows. Independientemente, este complemento de autenticación también admite la autenticación Kerberos en Unix.

los gssapi El complemento de autenticación se usa con mayor frecuencia para autenticarse con Microsoft Active Directory.

Este artículo proporciona instrucciones sobre cómo configurar el gssapi complemento de autenticación para MariaDB para inicio de sesión sin contraseña.

Instalación del paquete del complemento

los gssapi La biblioteca compartida del complemento de autenticación se incluye en los paquetes MariaDB como auth_gssapi.so o auth_gssapi.dll biblioteca compartida en sistemas donde se puede construir. El complemento se incluyó por primera vez en MariaDB 10.1.11.

Instalación en Linux

los gssapi El complemento de autenticación se incluye en los archivos tar binarios en Linux.

Instalación con un administrador de paquetes

los gssapi El complemento de autenticación también se puede instalar a través de un administrador de paquetes en Linux. Para hacerlo, su sistema debe estar configurado para instalar desde uno de los repositorios de MariaDB.

Puede configurar su administrador de paquetes para instalarlo desde el repositorio de paquetes MariaDB de MariaDB Corporation utilizando el script de configuración del repositorio de paquetes MariaDB.

También puede configurar su administrador de paquetes para instalarlo desde MariaDB Foundation’s MariaDB Repository usando el Herramienta de configuración del repositorio MariaDB.

Instalación con yum / dnf

En RHEL, CentOS, Fedora y otras distribuciones de Linux similares, se recomienda encarecidamente instalar el paquete RPM relevante del repositorio de MariaDB utilizando yum o dnf. Comenzando con RHEL 8 y Fedora 22, yum ha sido reemplazado por dnf, que es la próxima versión principal de yum. Sin embargo, yum los comandos todavía funcionan en muchos sistemas que usan dnf. Por ejemplo:

sudo yum install MariaDB-gssapi-server
Instalación con apt-get

En Debian, Ubuntu y otras distribuciones de Linux similares, se recomienda encarecidamente instalar el paquete DEB relevante desde el repositorio de MariaDB usando apt-get. Por ejemplo:

sudo apt-get install mariadb-plugin-gssapi-server
Instalación con zypper

En SLES, OpenSUSE y otras distribuciones de Linux similares, se recomienda encarecidamente instalar el paquete RPM relevante del repositorio de MariaDB utilizando zypper. Por ejemplo:

sudo zypper install MariaDB-gssapi-server

Instalación en Windows

los gssapi El complemento de autenticación se incluye en los paquetes MSI y ZIP en Windows.

Instalación del complemento

Aunque la biblioteca compartida del complemento se distribuye con MariaDB de forma predeterminada, MariaDB no instala el complemento de forma predeterminada. Hay dos métodos que se pueden utilizar para instalar el complemento con MariaDB.

El primer método se puede utilizar para instalar el complemento sin reiniciar el servidor. Puede instalar el complemento dinámicamente ejecutando INSTALL SONAME o INSTALL PLUGIN. Por ejemplo:

INSTALL SONAME'auth_gssapi';

El segundo método se puede utilizar para decirle al servidor que cargue el complemento cuando se inicie. El complemento se puede instalar de esta manera proporcionando el --plugin-load o la --plugin-load-add opciones. Esto se puede especificar como un argumento de línea de comandos para mysqld o se puede especificar en un grupo de opciones de servidor relevante en un archivo de opciones. Por ejemplo:

[mariadb]...
plugin_load_add = auth_gssapi

Desinstalar el complemento

Puede desinstalar el complemento dinámicamente ejecutando UNINSTALL SONAME o UNINSTALL PLUGIN. Por ejemplo:

UNINSTALL SONAME'auth_gssapi';

Si instaló el complemento proporcionando el --plugin-load o la --plugin-load-add opciones en un grupo de opciones de servidor relevante en un archivo de opciones, entonces esas opciones deben eliminarse para evitar que el complemento se cargue la próxima vez que se reinicie el servidor.

Configurar el complemento

Si el servidor MariaDB se ejecuta en Unix, será necesario implementar algunos pasos de configuración adicionales para poder usar el complemento.

Si el servidor MariaDB se ejecuta en Windows, no será necesario implementar pasos de configuración especiales para usar el complemento, siempre que se cumpla lo siguiente:

Creación de un archivo de tabla de claves en Unix

Si el servidor MariaDB se ejecuta en Unix, entonces el servidor KDC deberá crear un archivo de tabla de claves para el servidor MariaDB. El archivo de tabla de claves contiene el nombre principal del servicio, que es la identidad que utilizará el servidor MariaDB para comunicarse con el servidor KDC. Será necesario transferir la tabla de claves al servidor MariaDB y mysqld El proceso del servidor necesitará acceso de lectura a este archivo de tabla de claves.

La forma en que se genera este archivo de tabla de claves depende de si el servidor KDC está Microsoft Active Directory KDC o MIT Kerberos KDC.

Creación de un archivo de tabla de claves con Microsoft Active Directory

Si esta usando Microsoft Active Directory KDC, entonces es posible que deba crear una tabla de teclas con el ktpass.exe utilidad en un host de Windows. La entidad de servicio deberá asignarse a un usuario de dominio existente. Para hacerlo, siga los pasos que se enumeran a continuación.

Asegúrese de reemplazar los siguientes elementos en el paso siguiente:

  • Reemplazar $HOST con el nombre DNS completo para el host del servidor MariaDB.
  • Reemplazar $DOMAIN con el dominio de Active Directory.
  • Reemplazar $AD_USER con el usuario de dominio existente.
  • Reemplazar $PASSWORD con la contraseña de la entidad de servicio.

Para crear la entidad de servicio, ejecute lo siguiente:

ktpass.exe /princ mariadb/$HOST@$DOMAIN /mapuser $AD_USER /pass $PASSWORD /out mariadb.keytab /crypto all/ptype KRB5_NT_PRINCIPAL /mapop set

Creación de un archivo de tabla de claves con MIT Kerberos

Si esta usando MIT Kerberos KDC, entonces puedes crear un keytab archivo usando el kadmin utilidad. Para hacerlo, siga los pasos que se enumeran a continuación.

En los siguientes pasos, asegúrese de reemplazar $HOST con el nombre DNS completo para el host del servidor MariaDB.

Primero, cree la entidad de servicio usando el kadmin utilidad. Por ejemplo:

kadmin -q "addprinc -randkey mariadb/$HOST"

Luego, exporte el usuario recién creado al archivo keytab usando el kadmin utilidad. Por ejemplo:

kadmin -q "ktadd -k /path/to/mariadb.keytab mariadb/$HOST"

Se pueden encontrar más detalles en los siguientes enlaces:

Configuración de la ruta al archivo de tabla de claves en Unix

Si el servidor MariaDB se ejecuta en Unix, entonces la ruta al archivo keytab que se creó previamente se puede establecer configurando el gssapi_keytab_path variable de sistema. Esto se puede especificar como un argumento de línea de comandos para mysqld o se puede especificar en un grupo de opciones de servidor relevante en un archivo de opciones. Por ejemplo:

[mariadb]...
gssapi_keytab_path=/path/to/mariadb.keytab

Configuración del nombre principal del servicio

El nombre principal del servicio se puede establecer configurando el gssapi_principal_name variable de sistema. Esto se puede especificar como un argumento de línea de comandos para mysqld o se puede especificar en un grupo de opciones de servidor relevante en un archivo de opciones. Por ejemplo:

[mariadb]...
gssapi_principal_name=service_principal_name/host.domain.com@REALM

Si no se proporciona un nombre principal de servicio, el complemento intentará utilizar mariadb/[email protected] por defecto.

Si el servidor MariaDB se ejecuta en Unix, entonces el complemento necesita un nombre principal de servicio para funcionar.

Si el servidor MariaDB se ejecuta en Windows, entonces el complemento no suele necesitar una entidad de servicio para funcionar. Sin embargo, si desea utilizar uno de todos modos, puede crear uno con el setspn utilidad.

Las diferentes implementaciones de KDC pueden usar diferentes formas canónicas para identificar a los principales. Ver RFC2744: Sección 3.10 para aprender lo que dice el estándar sobre los nombres principales.

Se pueden encontrar más detalles en los siguientes enlaces:

Crear usuarios

Para crear una cuenta de usuario a través de CREATE USER, especifique el nombre del complemento en el IDENTIFIED VIA cláusula. Por ejemplo:

CREATEUSER username@hostname IDENTIFIED VIA gssapi;

Si SQL_MODE no tiene NO_AUTO_CREATE_USER , entonces también puede crear la cuenta de usuario a través de GRANT. Por ejemplo:

GRANTSELECTON db.*TO username@hostname IDENTIFIED VIA gssapi;

También puede especificar el usuario reino para MariaDB con el USING cláusula. Por ejemplo:

CREATEUSER username@hostname IDENTIFIED VIA gssapi USING'[email protected]';

El formato del reino depende del mecanismo de autenticación específico que se utilice. Por ejemplo, el formato debería ser machine\username para usuarios de Windows que se autentican con NTLM.

Si el reino no se proporciona en la definición de la cuenta de usuario, entonces el reino es no utilizado para la comparación. Por lo tanto, ‘[email protected]’,'[email protected]’y’ mymachine usr1 ‘se identificarían como la siguiente cuenta de usuario:

CREATEUSER usr1@hostname IDENTIFIED VIA gssapi;

Complementos de autenticación de clientes

Para clientes que utilizan el libmysqlclient o bibliotecas MariaDB Connector / C, MariaDB proporciona un complemento de autenticación de cliente que es compatible con gssapi complemento de autenticación:

  • auth_gssapi_client

Al conectarse con un cliente o una utilidad a un servidor como una cuenta de usuario que se autentica con el gssapi complemento de autenticación, es posible que deba decirle al cliente dónde encontrar el complemento de autenticación de cliente relevante especificando el --plugin-dir opción. Para ejemplo:

mysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice

auth_gssapi_client

los auth_gssapi_client El complemento de autenticación del cliente recibe el nombre principal del servidor y luego usa el gss_init_sec_context función (en Unix) o la InitializeSecurityContext función (en Windows) para establecer un contexto de seguridad en el cliente.

Soporte en bibliotecas cliente

Uso del complemento con MariaDB Connector / C

Soportes MariaDB Connector / C gssapi autenticación utilizando los complementos de autenticación de cliente mencionados en la sección anterior desde MariaDB Connector / C 3.0.1.

Uso del complemento con MariaDB Connector / ODBC

Compatibilidad con MariaDB Connector / ODBC gssapi autenticación mediante los complementos de autenticación de cliente mencionados en la sección anterior desde MariaDB Connector / ODBC 3.0.0.

Uso del complemento con MariaDB Connector / J

Soportes MariaDB Connector / J gssapi autenticación desde MariaDB Connector / J 1.4.0. La documentación actual se puede encontrar aquí.

Usando el complemento con MariaDB Connector / Node.js

MariaDB Connector / Node.js aún no es compatible gssapi autenticación. Ver CONJS-72 para más información.

Usando el complemento con MySqlConnector para .NET

MySqlConnector para ADO.NET admite gssapi autenticación desde MySqlConnector 0.47.0.

El soporte es transparente. Normalmente, al conector solo se le debe proporcionar el nombre de usuario correcto y no se requieren otros parámetros.

Sin embargo, este conector también es compatible con ServerSPN parámetro de cadena de conexión, que se puede utilizar para la autenticación mutua.

Problemas / soluciones específicas de .NET

Al conectarse desde un cliente Unix a un servidor Windows con ADO.NET, en un entorno de dominio de Active Directory, tenga en cuenta que .NET Core en Unix no admite nombres principales en forma UPN (Nombre principal de usuario), que es el predeterminado en Windows (p. Ej. [email protected]). Por lo tanto, al encontrar una excepción de autenticación con “servidor no encontrado en la base de datos Kerberos”, utilice una de las soluciones a continuación

  • Forzar SPN basado en host en el lado del servidor.
    • Por ejemplo, esto se puede hacer configurando el gssapi_principal_name variable de sistema a HOST/machine en un grupo de opciones de servidor en un archivo de opciones.
  • Pase SPN basado en host en el lado del cliente.
    • Por ejemplo, esto se puede hacer configurando el conector ServerSPN parámetro de cadena de conexión a HOST/machine.

Versiones

Versión Estado Introducido
1.0 Estable MariaDB 10.1.15
1.0 Beta MariaDB 10.1.11

Variables del sistema

gssapi_keytab_path

  • Descripción: Define la ruta al archivo de tabla de claves del servidor.
    • Esta variable de sistema solo es significativa en Unix.
    • Consulte Creación de un archivo de tabla de claves en Unix y Configuración de la ruta al archivo de tabla de claves en Unix para obtener más información.
  • Línea de comando:--gssapi-keytab-path
  • Alcance: Global
  • Dinámica: No
  • Tipo de datos:string
  • Valor por defecto:
  • Introducido:MariaDB 10.1.11

gssapi_principal_name

  • Descripción: Nombre de la entidad de servicio.
    • Consulte Configuración del nombre principal del servicio para obtener más información.
  • Línea de comando:--gssapi-principal-name
  • Alcance: Global
  • Dinámica: No
  • Tipo de datos:string
  • Valor por defecto:
  • Introducido:MariaDB 10.1.11

gssapi_mech_name

  • Descripción: Nombre del paquete SSPI utilizado por el servidor. Puede ser ‘Kerberos’ o ‘Negociar’. Configúrelo en ‘Kerberos’ para evitar NTLM menos seguro en entornos de dominio, pero déjelo como predeterminado (Negociar) para permitir entornos sin dominio (por ejemplo, si el servidor no se ejecuta en un entorno de dominio).
    • Esta variable de sistema solo es significativa en Ventanas.
  • Línea de comando:--gssapi-mech-name
  • Alcance: Global
  • Dinámica: No
  • Tipo de datos:enumerated
  • Valor por defecto:Negotiate
  • Valores válidos:Kerberos, Negotiate
  • Introducido:MariaDB 10.1.11

Opciones

gssapi

  • Descripción: Controla cómo el servidor debe tratar el complemento cuando se inicia.
    • Los valores válidos son:
      • OFF – Desactiva el complemento sin eliminarlo del mysql.plugins mesa.
      • ON – Habilita el complemento. Si el complemento no se puede inicializar, el servidor seguirá iniciándose, pero el complemento se desactivará.
      • FORCE – Habilita el complemento. Si el complemento no se puede inicializar, el servidor no podrá iniciarse con un error.
      • FORCE_PLUS_PERMANENT – Habilita el complemento. Si el complemento no se puede inicializar, el servidor no podrá iniciarse con un error. Además, el complemento no se puede desinstalar con UNINSTALL SONAME o UNINSTALL PLUGIN mientras el servidor está funcionando.
    • Consulte Descripción general del complemento: configuración de la activación del complemento al iniciar el servidor para obtener más información.
  • Línea de comando:--gssapi=value
  • Tipo de datos:enumerated
  • Valor por defecto:ON
  • Valores válidos:OFF, ON, FORCE, FORCE_PLUS_PERMANENT
  • Introducido:MariaDB 10.1.11

El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.