Solución de problemas de conectividad de Kerberos con PolyBaseTroubleshoot PolyBase Kerberos connectivity

SE APLICA A: SQL Server (solo Windows) Azure SQL Database Azure Synapse Analytics Almacenamiento de datos paralelos

Puede usar el diagnóstico interactivo integrado en PolyBase para ayudar a solucionar problemas de autenticación cuando se usa PolyBase en un clúster de Hadoop protegido con Kerberos.You can use interactive diagnostics that have been built into PolyBase to help troubleshoot authentication problems, when using PolyBase against a Kerberos-secured Hadoop cluster.

Este artículo sirve como guía para describir el proceso de depuración de ese tipo de problemas mediante este diagnóstico integrado.This article serves as a guide to walk through the debugging process of such issues by leveraging these built-in diagnostics.

Sugerencia

En lugar de seguir los pasos descritos en esta guía, puede ejecutar HDFS Kerberos Tester para solucionar problemas de las conexiones Kerberos de HDFS para PolyBase, cuando experimente un error de Kerberos de HDFS al crear una tabla externa en un clúster de HDFS protegido con Kerberos.Instead of following the steps in this guide, you can choose to run the HDFS Kerberos Tester to troubleshoot HDFS Kerberos connections for PolyBase, when you experience HDFS Kerberos failure while creating an external table in a Kerberos secured HDFS cluster. Esta herramienta le ayudará a evitar incidencias que no son de SQL Server, para ayudarle a concentrarse en la resolución de problemas de instalación de HDFS de Kerberos, en especial la identificación de incidencias de errores de configuración de nombre de usuario y contraseña, y de instalación de clúster de Kerberos.This tool will assist in ruling out non-SQL Server issues, to help you concentrate on resolving HDFS Kerberos setup issues, namely identifying issues with username/password misconfigurations, and cluster Kerberos setup misconfigurations.
Esta herramienta es completamente independiente de SQL ServerSQL Server.This tool is completely independent from SQL ServerSQL Server. Está disponible como Jupyter Notebook y requiere Azure Data Studio.It is available as a Jupyter Notebook and requires Azure Data Studio.

Requisitos previosPrerequisites

  1. SQL Server 2016 (13.x)SQL Server 2016 (13.x) RTM CU6 / SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU3 / SQL Server 2017 (14.x)SQL Server 2017 (14.x) o superior con PolyBase instaladoRTM CU6 / SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU3 / SQL Server 2017 (14.x)SQL Server 2017 (14.x) or higher with PolyBase installed
  2. Un clúster de Hadoop (Cloudera o Hortonworks) protegido con Kerberos (Active Directory o MIT)A Hadoop cluster (Cloudera or Hortonworks) secured with Kerberos (Active Directory or MIT)

IntroducciónIntroduction

Ayuda a comprender el protocolo Kerberos por encima.It helps to first understand the Kerberos protocol at a high level. Aquí participan tres actores:There are three actors involved:

  1. Cliente Kerberos (SQL Server)Kerberos client (SQL Server)
  2. Recursos protegidos (HDFS, MR2, YARN, historial de trabajos, etc.)Secured resource (HDFS, MR2, YARN, Job History, etc.)
  3. Centro de distribución de claves (que en Active Directory se denomina controlador de dominio)Key distribution center (referred to as a domain controller in Active Directory)

Cada uno de los recursos protegidos de Hadoop se registra en el Centro de distribución de claves (KDC) con un Nombre de entidad de seguridad de servicio (SPN) único cuando Kerberos se configura en el clúster de Hadoop.Each Hadoop secured resource is registered in the Key Distribution Center (KDC) with a unique Service Principal Name (SPN) when Kerberos is configured on the Hadoop cluster. El objetivo es que el cliente obtenga un vale de usuario temporal, llamado Vale de concesión de vales (TGT) , para solicitar otro vale temporal, llamado Vale de servicio (ST) , desde el Centro de distribución de claves contra el nombre de entidad de seguridad de servicio que desea acceder.The goal is for the client to obtain a temporary user ticket, called a Ticket Granting Ticket (TGT), in order to request another temporary ticket, called a Service Ticket (ST), from the KDC against the particular SPN that it wants to access.

En PolyBase, cuando se solicita autenticación con respecto a cualquier recurso protegido con Kerberos, se produce el siguiente protocolo de enlace de cuatro recorridos de ida y vuelta:In PolyBase, when authentication is requested against any Kerberos-secured resource, the following four-round-trip handshake takes place:

  1. SQL ServerSQL Server se conecta con el Centro de distribución de claves y obtiene un TGT para el usuario.connects to the KDC and obtains a TGT for the user. El TGT se cifra con la clave privada del Centro de distribución de claves.The TGT is encrypted using the KDC private key.
  2. SQL ServerSQL Server llama al recurso protegido de Hadoop, HDFS, y determina para qué nombre de entidad de seguridad de servicio necesita un ST.calls the Hadoop secured resource, HDFS, and determines which SPN it needs an ST for.
  3. SQL ServerSQL Server vuelve al Centro de distribución de claves, devuelve el TGT y solicita un ST para acceder a ese recurso protegido concreto.goes back to the KDC, passes the TGT back, and requests an ST to access that particular secured resource. El ST se cifra con la clave privada del servicio protegido.The ST is encrypted using the secured service's private key.
  4. SQL ServerSQL Server desvía el ST a Hadoop y se autentica para que se cree una sesión sobre ese servicio.forwards the ST to Hadoop and gets authenticated to have a session created against that service.

Polybase SQL Server

Los problemas con la autenticación pertenecen a uno o más de los cuatro pasos mencionados.Issues with authentication fall into one or more of the above four steps. Para facilitar una depuración más rápida, PolyBase introdujo una herramienta de diagnóstico integrada para permitir la identificación del punto de error.To help with faster debugging, PolyBase has introduced an integrated diagnostics tool to help identify the point of failure.

Solución de problemasTroubleshooting

PolyBase tiene los siguientes archivos XML de configuración que contienen las propiedades del clúster de Hadoop:PolyBase has the following configuration XML files containing properties of the Hadoop cluster:

  • core-site.xmlcore-site.xml
  • hdfs-site.xmlhdfs-site.xml
  • hive-site.xmlhive-site.xml
  • jaas.confjaas.conf
  • mapred-site.xmlmapred-site.xml
  • yarn-site.xmlyarn-site.xml

Estos archivos se encuentran en:These files are located under:

\[System Drive\]:{install path}\{MSSQL##.INSTANCENAME}\MSSQL\Binn\PolyBase\Hadoop\conf

Por ejemplo, el valor predeterminado para SQL Server 2016 (13.x)SQL Server 2016 (13.x) es C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.For example, the default for SQL Server 2016 (13.x)SQL Server 2016 (13.x) is C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

Actualice core-site.xml y agregue las tres propiedades siguientes.Update core-site.xml, add the three properties below. Establezca los valores según el entorno:Set the values according to the environment:

<property>
    <name>polybase.kerberos.realm</name>
    <value>CONTOSO.COM</value>
</property>
<property>
    <name>polybase.kerberos.kdchost</name>
    <value>kerberos.contoso.com</value>
</property>
<property>
    <name>hadoop.security.authentication</name>
    <value>KERBEROS</value>
</property>

Nota

El valor de la propiedad polybase.kerberos.realm debe estar en mayúsculas.The value for polybase.kerberos.realm property needs to be all upper case.

Los otros XML también se deberán actualizar más adelante si se desean operaciones de inserción pero, con solo este archivo configurado, al menos se debería poder acceder al sistema de archivos HDFS.The other XMLs will later need to be updated as well if pushdown operations are desired, but with just this file configured, the HDFS file system should at least be able to be accessed.

La herramienta se ejecuta de forma independiente a SQL ServerSQL Server, por lo que no es necesario que esté en ejecución ni reiniciarla si se realizan actualizaciones de los archivos XML de configuración.The tool runs independently of SQL ServerSQL Server, so it does not need to be running, nor does it need to be restarted if updates are made to the configuration XMLs. Para ejecutar la herramienta, ejecute los comandos siguientes en el host con SQL ServerSQL Server instalado:To run the tool, execute the following commands on the host with SQL ServerSQL Server installed:

> cd C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase  
> java -classpath ".\Hadoop\conf;.\Hadoop\*;.\Hadoop\HDP2_2\*" com.microsoft.polybase.client.HdfsBridge {Name Node Address} {Name Node Port} {Service Principal} {Filepath containing Service Principal's Password} {Remote HDFS file path (optional)}

ArgumentosArguments

ArgumentoArgument DescripciónDescription
Dirección del nodo de nombreName Node Address La dirección IP o el nombre de dominio completo del nodo de nombre.The IP or FQDN of the name node. Hace referencia al argumento "LOCATION" de CREATE EXTERNAL DATA SOURCE T-SQL.Refers to the "LOCATION" argument in your CREATE EXTERNAL DATA SOURCE T-SQL. Nota: En la versión SQL Server 2019 de la herramienta es necesario que hdfs:// preceda a la dirección IP o el FQDN.Note: The SQL Server 2019 version of the tool requires hdfs:// to precede the IP or FQDN.
Puerto del nodo de nombreName Node Port El puerto del nodo de nombre.The port of the name node. Hace referencia al argumento "LOCATION" de CREATE EXTERNAL DATA SOURCE T-SQL.Refers to the "LOCATION" argument in your CREATE EXTERNAL DATA SOURCE T-SQL. Por ejemplo, 8020.For example, 8020.
Entidad de seguridad de servicioService Principal La entidad de servicio de administración del Centro de distribución de claves.The admin service principal to your KDC. Coincide con el argumento "IDENTITY" de CREATE DATABASE SCOPED CREDENTIAL T-SQL.Matches the "IDENTITY" argument in your CREATE DATABASE SCOPED CREDENTIAL T-SQL.
Contraseña del servicioService Password En lugar de escribir la contraseña en la consola, almacénela en un archivo y pase aquí la ruta de acceso al archivo.Instead of typing your password at the console, store it in a file and pass the file path here. El contenido del archivo debe coincidir con el que use como argumento "SECRET" en CREATE DATABASE SCOPED CREDENTIAL T-SQL.The contents of the file should match what you use as your "SECRET" argument in your CREATE DATABASE SCOPED CREDENTIAL T-SQL.
Ruta de acceso al archivo HDFS remoto (opcional)Remote HDFS file path (optional) La ruta de acceso de un archivo existente al cual acceder.The path of an existing file to access. Si no se especifica, se usará la raíz "/".If not specified, the root "/" will be used.

EjemploExample

java -classpath ".\Hadoop\conf;.\Hadoop\*;.\Hadoop\HDP2_2\*" com.microsoft.polybase.client.HdfsBridge 10.193.27.232 8020 admin_user C:\temp\kerberos_pass.txt

El resultado es detallado para una mejor depuración, pero hay solo cuatro puntos de comprobación que observar, independientemente de si usa MIT o AD.The output is verbose for enhanced debugging, but there are only four main checkpoints to look for regardless of whether you are using MIT or AD. Corresponden a los cuatro pasos descritos anteriormente.They correspond to the four steps outlined above.

Los extractos siguientes provienen de un Centro de distribución de claves de MIT.The following excerpts are from an MIT KDC. Puede hacer referencia a salidas de ejemplo completas de MIT y AD en las referencias que aparecen al final de este artículo.You may refer to complete sample outputs from both MIT and AD at the end of this article in the References.

Punto de comprobación 1Checkpoint 1

Debe haber un volcado hexadecimal de un vale con Server Principal = krbtgt/MYREALM.COM@MYREALM.COM.There should be a hex dump of a ticket with Server Principal = krbtgt/MYREALM.COM@MYREALM.COM. Indica que SQL ServerSQL Server se ha autenticado correctamente en el Centro de distribución de claves y ha recibido un TGT.It indicates that SQL ServerSQL Server successfully authenticated against the KDC and received a TGT. Si no es así, el problema se encuentra estrictamente entre SQL ServerSQL Server y el Centro de distribución de claves, no en Hadoop.If not, the problem lies strictly between SQL ServerSQL Server and the KDC, and not Hadoop.

PolyBase no admite relaciones de confianza entre AD y MIT y se debe configurar respecto del mismo Centro de distribución de claves que se configuró en el clúster de Hadoop.PolyBase does not support trust relationships between AD and MIT and must be configured against the same KDC as configured in the Hadoop cluster. En dichos entornos, funcionará la creación manual de una cuenta de servicio en ese Centro de distribución de claves y su uso para realizar la autenticación.In such environments, manually creating a service account on that KDC and using that to perform authentication will work.

|>>> KrbAsReq creating message 
 >>> KrbKdcReq send: kdc=kerberos.contoso.com UDP:88, timeout=30000, number of retries =3, #bytes=143 
 >>> KDCCommunication: kdc=kerberos.contoso.com UDP:88, timeout=30000,Attempt =1, #bytes=143 
 >>> KrbKdcReq send: #bytes read=646 
 >>> KdcAccessibility: remove kerberos.contoso.com 
 >>> EType: sun.security.krb5.internal.crypto.Des3CbcHmacSha1KdEType 
 >>> KrbAsRep cons in KrbAsReq.getReply myuser 
 [2017-04-25 21:34:33,548] INFO 687[main] - com.microsoft.polybase.client.KerberosSecureLogin.secureLogin(KerberosSecureLogin.java:97) - Subject: 
 Principal: admin_user@CONTOSO.COM 
 Private Credential: Ticket (hex) = 
 0000: 61 82 01 48 30 82 01 44 A0 03 02 01 05 A1 0E 1B a..H0..D........ 
 0010: 0C 41 50 53 48 44 50 4D 53 2E 43 4F 4D A2 21 30 .CONTOSO.COM.!0 
 0020: 1F A0 03 02 01 02 A1 18 30 16 1B 06 6B 72 62 74 ........0...krbt 
 0030: 67 74 1B 0C 41 50 53 48 44 50 4D 53 2E 43 4F 4D gt..CONTOSO.COM 
 0040: A3 82 01 08 30 82 01 04 A0 03 02 01 10 A1 03 02 ....0........... 
 *[...Condensed...]* 
 0140: 67 6D F6 41 6C EB E0 C3 3A B2 BD B1 gm.Al...:... 
 Client Principal = admin_user@CONTOSO.COM 
 Server Principal = krbtgt/CONTOSO.COM@CONTOSO.COM 
 *[...Condensed...]* 
 [2017-04-25 21:34:34,500] INFO 1639[main] - com.microsoft.polybase.client.HdfsBridge.main(HdfsBridge.java:1579) - Successfully authenticated against KDC server. 

Punto de comprobación 2Checkpoint 2

PolyBase intentará acceder a HDFS, pero no podrá hacerlo porque la solicitud no contenía el vale de servicio necesario.PolyBase will make an attempt to access the HDFS and fail because the request did not contain the necessary Service Ticket.

 [2017-04-25 21:34:34,501] INFO 1640[main] - com.microsoft.polybase.client.HdfsBridge.main(HdfsBridge.java:1584) - Attempting to access external filesystem at URI: hdfs://10.193.27.232:8020 
 Found ticket for admin_user@CONTOSO.COM to go to krbtgt/CONTOSO.COM@CONTOSO.COM expiring on Wed Apr 26 21:34:33 UTC 2017 
 Entered Krb5Context.initSecContext with state=STATE_NEW 
 Found ticket for admin_user@CONTOSO.COM to go to krbtgt/CONTOSO.COM@CONTOSO.COM expiring on Wed Apr 26 21:34:33 UTC 2017 
 Service ticket not found in the subject 

Punto de comprobación 3Checkpoint 3

Un segundo volcado hexadecimal indica que SQL ServerSQL Server ha usado correctamente el TGT y ha adquirido el vale de servicio aplicable para el SPN del nodo de nombre del Centro de distribución de claves.A second hex dump indicates that SQL ServerSQL Server successfully used the TGT and acquired the applicable Service Ticket for the name node's SPN from the KDC.

 >>> KrbKdcReq send: kdc=kerberos.contoso.com UDP:88, timeout=30000, number of retries =3, #bytes=664 
 >>> KDCCommunication: kdc=kerberos.contoso.com UDP:88, timeout=30000,Attempt =1, #bytes=664 
 >>> KrbKdcReq send: #bytes read=669 
 >>> KdcAccessibility: remove kerberos.contoso.com 
 >>> EType: sun.security.krb5.internal.crypto.Des3CbcHmacSha1KdEType 
 >>> KrbApReq: APOptions are 00100000 00000000 00000000 00000000 
 >>> EType: sun.security.krb5.internal.crypto.Des3CbcHmacSha1KdEType 
 Krb5Context setting mySeqNumber to: 1033039363 
 Created InitSecContextToken: 
 0000: 01 00 6E 82 02 4B 30 82 02 47 A0 03 02 01 05 A1 ..n..K0..G...... 
 0010: 03 02 01 0E A2 07 03 05 00 20 00 00 00 A3 82 01 ......... ...... 
 0020: 63 61 82 01 5F 30 82 01 5B A0 03 02 01 05 A1 0E ca.._0..[....... 
 0030: 1B 0C 41 50 53 48 44 50 4D 53 2E 43 4F 4D A2 26 ..CONTOSO.COM.& 
 0040: 30 24 A0 03 02 01 00 A1 1D 30 1B 1B 02 6E 6E 1B 0$.......0...nn. 
 0050: 15 73 68 61 73 74 61 2D 68 64 70 32 35 2D 30 30 .hadoop-hdp25-00 
 0060: 2E 6C 6F 63 61 6C A3 82 01 1A 30 82 01 16 A0 03 .local....0..... 
 0070: 02 01 10 A1 03 02 01 01 A2 82 01 08 04 82 01 04 ................ 
 *[...Condensed...]* 
 0240: 03 E3 68 72 C4 D2 8D C2 8A 63 52 1F AE 26 B6 88 ..hr.....cR..&.. 
 0250: C4 . 

Punto de comprobación 4Checkpoint 4

Por último, las propiedades de la ruta de acceso de destino se deberían imprimir junto con un mensaje de confirmación.Finally, the file properties of the target path should be printed along with a confirmation message. Las propiedades del archivo confirman que Hadoop ha autenticado SQL ServerSQL Server mediante el ST y que se ha concedido acceso al recurso protegido a una sesión.The file properties confirm SQL ServerSQL Server was authenticated by Hadoop using the ST and a session was granted to access the secured resource.

Si llega a este punto, se confirma que: (i) los tres actores se pueden comunicar correctamente, (ii) los archivos core-site.xml y jaas.conf son correctos y (iii) el Centro de distribución de claves reconoció sus credenciales.Reaching this point confirms that: (i) the three actors are able to communicate correctly, (ii) the core-site.xml and jaas.conf are correct, and (iii) your KDC recognized your credentials.

 [2017-04-25 21:34:35,096] INFO 2235[main] - com.microsoft.polybase.client.HdfsBridge.main(HdfsBridge.java:1586) - File properties for "/": FileStatus{path=hdfs://10.193.27.232:8020/; isDirectory=true; modification_time=1492028259862; access_time=0; owner=hdfs; group=hdfs; permission=rwxr-xr-x; isSymlink=false} 
 [2017-04-25 21:34:35,098] INFO 2237[main] - com.microsoft.polybase.client.HdfsBridge.main(HdfsBridge.java:1587) - Successfully accessed the external file system. 

Errores comunesCommon errors

Si se ejecutó la herramienta y no se imprimieron las propiedades de archivo de la ruta de acceso de destino (punto de comprobación 4), debería haber una excepción a medio camino.If the tool was run and the file properties of the target path were not printed (Checkpoint 4), there should be an exception thrown midway. Revísela y considere el contexto en que se produjo dentro del flujo de cuatro pasos.Review it and consider the context of where in the four-step flow it occurred. Considere los siguientes problemas comunes que pueden haberse producido, en orden:Consider the following common issues that may have occurred, in order:

Excepción y mensajesException and messages CausaCause
org.apache.hadoop.security.AccessControlExceptionorg.apache.hadoop.security.AccessControlException
La autenticación SIMPLE no está habilitada.SIMPLE authentication is not enabled. Disponible:[TOKEN, KERBEROS]Available:[TOKEN, KERBEROS]
El archivo core-site.xml no tiene la propiedad hadoop.security.authentication establecida en "KERBEROS".The core-site.xml doesn't have the hadoop.security.authentication property set to "KERBEROS".
javax.security.auth.login.LoginExceptionjavax.security.auth.login.LoginException
No se encuentra el cliente en la base de datos de Kerberos (6) - CLIENT_NOT_FOUNDClient not found in Kerberos database (6) - CLIENT_NOT_FOUND
La entidad de servicio de administración que se suministró no existe en el dominio kerberos especificado en core-site.xml.The admin Service Principal supplied does not exist in the realm specified in core-site.xml.
javax.security.auth.login.LoginExceptionjavax.security.auth.login.LoginException
Suma de comprobación erróneaChecksum failed
La entidad de servicio de administración existe, pero la contraseña es incorrecta.Admin Service Principal exists, but bad password.
Nombre de configuración nativa: C:\Windows\krb5.iniNative config name: C:\Windows\krb5.ini
Cargado desde la configuración nativaLoaded from native config
Este mensaje indica que el módulo krb5LoginModule de Java ha detectado configuraciones de cliente personalizadas en el equipo.This message indicates that Java's krb5LoginModule detected custom client configurations on your machine. Compruebe la configuración de cliente personalizada porque puede estar causando problemas.Check your custom client settings as they may be causing the issue.
javax.security.auth.login.LoginExceptionjavax.security.auth.login.LoginException
java.lang.IllegalArgumentExceptionjava.lang.IllegalArgumentException
Nombre de entidad de seguridad no válido admin_user@CONTOSO.COM: org.apache.hadoop.security.authentication.util.KerberosName$NoMatchingRule: Ninguna regla se aplica a admin_user@CONTOSO.COM.Illegal principal name admin_user@CONTOSO.COM: org.apache.hadoop.security.authentication.util.KerberosName$NoMatchingRule: No rules applied to admin_user@CONTOSO.COM
Agregue la propiedad “hadoop.security.auth_to_local” a core-site.xml con las reglas correspondientes por clúster de Hadoop.Add the property "hadoop.security.auth_to_local" to core-site.xml with the appropriate rules per the Hadoop cluster.
java.net.ConnectExceptionjava.net.ConnectException
Intento de acceder al sistema de archivos externo en el URI: hdfs://10.193.27.230:8020Attempting to access external filesystem at URI: hdfs://10.193.27.230:8020
Error de llamada desde IAAS16981207/10.107.0.245 a 10.193.27.230:8020 en la excepción de conexiónCall From IAAS16981207/10.107.0.245 to 10.193.27.230:8020 failed on connection exception
La autenticación en el Centro de distribución de claves se realizó correctamente, pero no se pudo tener acceso al nodo de nombre de Hadoop.Authentication against the KDC was successful, but it failed to access the Hadoop name node. Compruebe el puerto y la dirección IP del nodo de nombre.Check the name node IP and port. Compruebe que el firewall esté deshabilitado en Hadoop.Verify the firewall is disabled on Hadoop.
java.io.FileNotFoundExceptionjava.io.FileNotFoundException
El archivo no existe: /test/data.csvFile does not exist: /test/data.csv
La autenticación se realizó correctamente, pero la ubicación especificada no existe.Authentication was successful, but the location specified does not exist. Compruebe la ruta de acceso o pruebe primero con la raíz "/".Check the path or test with root "/" first.

Sugerencias de depuraciónDebugging tips

KDC de MITMIT KDC

Puede ver todos los nombres de entidad de seguridad de servicio registrados con el KDC, incluidos los administradores, si ejecuta kadmin.local > (inicio de sesión de administrador) > listprincs en el host de KDC o en cualquier cliente de KDC configurado.All the SPNs registered with the KDC, including the admins, can be viewed by running kadmin.local > (admin login) > listprincs on the KDC host or any configured KDC client. Si Kerberos está bien configurado en el clúster de Hadoop, debería haber un SPN para cada uno de los servicios disponibles en el clúster (por ejemplo: nn, dn, rm, yarn, spnego, etc.) De manera predeterminada, puede ver los archivos keytab correspondientes (sustitutos de la contraseña) en /etc/security/keytabs.If Kerberos is properly configured on the Hadoop cluster, there should be one SPN for each one of the services available in the cluster (for example: nn, dn, rm, yarn, spnego, etc.) Their corresponding keytab files (password substitutes) can be seen under /etc/security/keytabs, by default. Se cifran con la clave privada del Centro de distribución de claves.They are encrypted using the KDC private key.

Considere también la posibilidad de usar kinit para comprobar las credenciales de administrador en el Centro de distribución de claves localmente.Also consider using kinit to verify the admin credentials on the KDC locally. Un ejemplo de uso sería: kinit identity@MYREALM.COM.An example usage would be: kinit identity@MYREALM.COM. Un mensaje que aparece para solicitar contraseña indica que existe la identidad.A prompt for a password indicates the identity exists.
De manera predeterminada, los registros de KDC están disponibles en /var/log/krb5kdc.log, lo que incluye todas las solicitudes de vales, incluida la dirección IP del cliente que hizo la solicitud.The KDC logs are available in /var/log/krb5kdc.log, by default, which includes all of the requests for tickets including the client IP that made the request. Debe haber dos solicitudes desde la dirección IP del equipo SQL ServerSQL Server en el que se ha ejecutado la herramienta: en primer lugar, para el TGT del servidor de autenticación como AS_REQ, seguido de TGS_REQ para el vale de servicio desde el servidor de concesión de vales.There should be two requests from the SQL ServerSQL Server machine's IP wherein the tool was run: first for the TGT from the Authenticating Server as an AS_REQ, followed by a TGS_REQ for the ST from the Ticket Granting Server.

 [root@MY-KDC log]# tail -2 /var/log/krb5kdc.log 
 May 09 09:48:26 MY-KDC.local krb5kdc[2547](info): **AS_REQ** (3 etypes {17 16 23}) 10.107.0.245: ISSUE: authtime 1494348506, etypes {rep=16 tkt=16 ses=16}, admin_user@CONTOSO.COM for **krbtgt/CONTOSO.COM@CONTOSO.COM** 
 May 09 09:48:29 MY-KDC.local krb5kdc[2547](info): **TGS_REQ** (3 etypes {17 16 23}) 10.107.0.245: ISSUE: authtime 1494348506, etypes {rep=16 tkt=16 ses=16}, admin_user@CONTOSO.COM for **nn/hadoop-hdp25-00.local@CONTOSO.COM** 

Active DirectoryActive Directory

En Active Directory, puede ver los nombres de entidad de seguridad de servicio si va a Panel de control > Usuarios y equipos de Active Directory > MyRealm > MyOrganizationalUnit.In Active Directory, the SPNs can be viewed by browsing to Control Panel > Active Directory Users and Computers > MyRealm > MyOrganizationalUnit. Si Kerberos está bien configurado en el clúster de Hadoop, hay un SPN para cada uno de los servicios disponibles (por ejemplo: nn, dn, rm, yarn, spnego, etc.)If Kerberos is properly configured on the Hadoop cluster, there is one SPN for each one of the services available (for example: nn, dn, rm, yarn, spnego, etc.)

Sugerencias generales de depuraciónGeneral debugging tips

Resulta útil tener cierta experiencia en Java para revisar los registros y depurar los problemas de Kerberos, que son independientes de la característica PolyBase de SQL Server.It is helpful to have some java experience to look into the logs and debug the Kerberos issues, which are independent of SQL server PolyBase feature.

Si sigue teniendo problemas para acceder a Kerberos, siga los pasos que hay a continuación para depurar:If you are still having issues accessing Kerberos, follow the steps below to debug:

  1. Asegúrese de que puede acceder a los datos de HDFS de Kerberos desde fuera de SQL ServerSQL Server.Make sure you can access the Kerberos HDFS data from outside SQL ServerSQL Server. Puede:You can either:

    • Escribir su propio programa de Java, oWrite your own java program or

    • Usar la clase HdfsBridge desde la carpeta de instalación de PolyBase.Use HdfsBridge class from PolyBase installation folder. Por ejemplo:For example:

      -classpath ".\Hadoop\conf;.\Hadoop\*;.\Hadoop\HDP2_2\*" com.microsoft.polybase.client.HdfsBridge 10.193.27.232 8020 admin_user C:\temp\kerberos_pass.txt
      

    En el ejemplo anterior, admin_user solo incluye el nombre de usuario, ningún elemento del dominio.In the example above, admin_user includes only the user name - not any domain part.

  2. Si no puede acceder a datos de HDFS de Kerberos desde fuera de PolyBase:If you can't access Kerberos HDFS data from outside PolyBase:

    • Existen dos tipos de autenticación de Kerberos: Autenticación de Kerberos de Active Directory y autenticación de Kerberos de MIT.There are two types of Kerberos authentication: Active directory Kerberos authentication, and MIT Kerberos authentication.
    • Asegúrese de que el usuario existe en la cuenta de dominio y use la misma cuenta de usuario al intentar acceder a HDFS.Make sure the user exists in domain account and use the same user account while trying to access HDFS.
  3. En el caso de Kerberos de Active Directory, asegúrese de que puede ver el vale en caché con el comando klist en Windows.For active directory Kerberos, make sure you can see cached ticket using klist command on Windows.

    • Inicie sesión en el equipo de PolyBase y ejecute klist y klist tgt en el símbolo del sistema para ver si el Centro de distribución de claves, el nombre de usuario y los tipos de cifrado son correctos.Log in into PolyBase machine and run klist and klist tgt in command prompt to see if the KDC, username, and encryption types are correct.
  4. Si el Centro de distribución de claves solo puede admitir AES256, asegúrese de que los archivos de directiva de JCE estén instalados.If KDC can only support AES256, make sure JCE policy files are installed.

Consulte tambiénSee also

Integrating PolyBase with Cloudera using Active Directory Authentication (Integración de PolyBase con Cloudera mediante Autenticación de Active Directory)Integrating PolyBase with Cloudera using Active Directory Authentication
Cloudera's Guide to setting up Kerberos for CDH (Guía de Cloudera para configurar Kerberos para CDH)Cloudera's Guide to setting up Kerberos for CDH
Hortonworks' Guide to Setting up Kerberos for HDP (Guía de Hortonworks para configurar Kerberos para HDP)Hortonworks' Guide to Setting up Kerberos for HDP
Solución de problemas de PolyBase PolyBase troubleshooting
Errores de PolyBase y posibles solucionesPolyBase errors and possible solutions