../_images/kyuubi_logo_simple5.png

1. Kyuubi Authentication Mechanism

In a secure cluster, services should be able to identify and authenticate callers. As the fact that the user claims does not necessarily mean this is true.

The authentication process of Kyuubi is used to verify the user identity that a client used to talk to the Kyuubi server. Once done, a trusted connection will be set up between the client and server if successful; otherwise, rejected.

Note that, this authentication only authenticate whether a user can connect with Kyuubi server or not. For other secured services that this user wants to interact with, he/she also needs to pass the authentication process of each service, for instance, Hive Metastore, YARN, HDFS.

In $KYUUBI_HOME/conf/kyuubi-defaults.conf, specify kyuubi.authentication to one of the authentication types listing below.

Key Default Meaning Since
kyuubi.authentication
NONE
Client authentication types.
  • NOSASL: raw transport.
  • NONE: no authentication check.
  • KERBEROS: Kerberos/GSSAPI authentication.
  • LDAP: Lightweight Directory Access Protocol authentication.
1.0.0
Key Default Meaning Since
kyuubi.authentication
NONE
Client authentication types.
  • NOSASL: raw transport.
  • NONE: no authentication check.
  • KERBEROS: Kerberos/GSSAPI authentication.
  • LDAP: Lightweight Directory Access Protocol authentication.
1.0.0
kyuubi.authentication
.ldap.base.dn
<undefined>
LDAP base DN.
1.0.0
kyuubi.authentication
.ldap.domain
<undefined>
LDAP base DN.
1.0.0
kyuubi.authentication
.ldap.url
<undefined>
SPACE character separated LDAP connection URL(s).
1.0.0
kyuubi.authentication
.sasl.qop
auth
Sasl QOP enable higher levels of protection for Kyuubi communication with clients.
  • auth - authentication only (default)
  • auth-int - authentication plus integrity protection
  • auth-conf - authentication plus integrity and confidentiality protection. This is applicable only if Kyuubi is configured to use Kerberos authentication.
1.0.0

1.1. Using KERBEROS

If you are deploying Kyuubi with a kerberized Hadoop cluster, it is strongly recommended that kyuubi.authentication should be set to KERBEROS too.

Kerberos is a network authentication protocol that provides the tools of authentication and strong cryptography over the network. The Kerberos protocol uses strong cryptography so that a client or a server can prove its identity to its server or client across an insecure network connection. After a client and server have used Kerberos to prove their identity, they can also encrypt all of their communications to assure privacy and data integrity as they go about their business.

The Kerberos architecture is centered around a trusted authentication service called the key distribution center, or KDC. Users and services in a Kerberos environment are referred to as principals; each principal shares a secret, such as a password, with the KDC.

Set following for KERBEROS mode:

Key Default Meaning Since
kyuubi.kinit
.principal
<undefined>
Name of the Kerberos principal.
1.0.0
kyuubi.kinit.keytab
<undefined>
Location of Kyuubi server's keytab.
1.0.0

For example,

  • Configure with Kyuubi service principal

kyuubi.authentication=KERBEROS
kyuubi.kinit.principal=spark/kyuubi.apache.org@KYUUBI.APACHE.ORG
kyuubi.kinit.keytab=/path/to/kyuuib.keytab
  • Start Kyuubi

$ ./bin/kyuubi start
  • Kinit with user principal and connect using beeline

$ kinit -kt user.keytab user.principal

$ beeline -u "jdbc:hive2://localhost:10009/;principal=spark/kyuubi.apache.org@KYUUBI.APACHE.ORG"