Para conectarse a Apache Hive, Apache Impala y Apache Spark SQL con autenticación Kerberos , debe proporcionar el archivo de configuración Kerberos a Data Virtualization antes de crear la conexión.
Acerca de esta tarea
Kerberos Es un protocolo de autenticación de seguridad de redes informáticas sin contraseña creado por el MIT para resolver problemas de seguridad en las redes. Hoy en día, muchas organizaciones lo utilizan ampliamente para el inicio de sesión único (SSO), transmitiendo de forma segura los datos de identidad del usuario a las aplicaciones con dos funciones principales: autenticación y seguridad.
Data Virtualization on-premises admite la autenticación Kerberos para
Apache Hive,
Apache Impala y
Apache Spark SQL y requiere que el usuario cargue un archivo keytab o un archivo cifrado que genera el origen de datos, y se utiliza para la autenticación mediante Kerberos.
Nota : La autenticación de Kerberos no está disponible en el Data Virtualization cliente web debido a una restricción de carga de archivos.
Procedimiento
- Para cada una de sus fuentes de datos Apache Hive, Apache Impala y Apache Spark SQL , abra un nuevo archivo de texto y, a continuación, siga los pasos siguientes para crear un archivo de configuración.
- Copie y pegue la siguiente información en su nuevo archivo de texto, luego modifique las variables, como se indica mediante los corchetes triangulares (< >).
# To opt out of the system crypto-policies configuration of krb5, remove the
# symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
spake_preauth_groups = edwards25519
dns_canonicalize_hostname = fallback
qualify_shortname = ""
default_realm = <DEFAULT_DOMAIN_REALM>
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
<KERBEROS_REALM> = {
kdc = <KDC_SERVER>
admin_server = <ADMIN_SERVER>
}
[domain_realm]
<SUBDOMAIN_REALM> = <DOMAIN_REALM>
<DOMAIN_TO_REALM> = <SUBDOMAIN_TO_REALM>
Considere el siguiente texto como ejemplo.
# To opt out of the system crypto-policies configuration of krb5, remove the
# symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
spake_preauth_groups = edwards25519
dns_canonicalize_hostname = fallback
qualify_shortname = ""
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
- Guarde el archivo de configuración.
- Para Apache Hive, guarde el archivo como hive_krb5.conf.
- Para Apache Impala, guarde el archivo como Impala_krb5.conf.
- Para Apache Spark SQL, guarde el archivo como spark_krb5.conf.
- Abra el archivo datavirtualization.env en su agente remoto.
vi /root/dv_endpoint/datavirtualization.env
- Verifique que el contenido del archivo datavirtualization.env contenga la siguiente información.
JAVA_HOME: Esta es la ruta donde Java está instalado en su máquina.
DATAVIRTUALIZATION_INSTALL: Esta es la ruta de archivo para datavirtualization.env.
KRB5_CONFIG: Esta es la ruta de archivo de su archivo de configuración de krb5.conf recién creado.
El siguiente es un ejemplo del texto que puede contener su archivo.
JAVA_HOME="/root/jdk-21.0.3+9"
DATAVIRTUALIZATION_INSTALL="/root/dv_endpoint"
KRB5_CONFIG=/etc/hive_krb5.conf
- Reemplace los parámetros en este procedimiento almacenado y luego ejecútelo en Ejecutar SQL. Además, sustituya
<Data_source> por Hive, Impala o SparkSQL.
call dvsys.setrdbcx('<Data_source>', '<host_name>', <db_port>, '<database_name>', '', '', '', <use_SSL>, <validate_cert>, '', '<SSL_certificate>', '<RemoteAgentName:Port>', 'UserPrincipal=<User_principal>,ServicePrincipal=<Service_principal>,Keytab=<Keytab_info>', ?, ?, ?)
Para más información sobre los parámetros, consulte el procedimiento almacenado setRdbcX (Variación 2 ).
El siguiente es un ejemplo del procedimiento almacenado.
call dvsys.setrdbcx('SparkSQL', 'krbds-hive.fyre.ibm.com', 10000, 'sparkdb01', '', '', '', 0, 0, '', '', 'RA_FOR_KRB:6415', 'UserPrincipal=spark/xxxx.fyre.ibm.com@IBM.COM,ServicePrincipal=hive/xxx.fyre.ibm.com@IBM.COM,Keytab=XXXXXXEQAQcheKq6W+vSDlrJ1GSZAITwAAAAIAAABMAAIAB0lCTS5DT00ABXNwYXJrABdrcmJkcy1oaXZlLmZ5cmUuaWJtLmNvbQAAAAFlHD9NAgAXABBTo30Yd3yTHr8rzj8V9lGKAAAAAgAAAFwAAgAHSUJNLkNPTQAFc3BhcmsAF2tyYmRzLWhpdmUuZnlyZS5pYm0uY29tAAAAAWUcP00CABoAIJNL0pQT6SkPC+JfILB+yq3rcCQo/6uRfLuBSPUmlS6XAAAAAgAAAEwAAgAHSUJNLkNPTQAFc3BhcmsAF2tyYmRzLWhpdmUuZnlyZS5pYm0uY29tAAAAAWUcP00CABkAEAa0R7FrW9AX+Q4GfmCLiG4AAAAC', ?, ?, ?)
- Compruebe si el procedimiento almacenado se ha realizado correctamente seleccionando la pestaña Resultados y, a continuación, comprobando la columna Valor de salida.
- Una salida correcta tiene un entero de 1.
- Una salida fallida tiene un entero de 0. Verifique de nuevo los pasos de configuración anteriores.