Internal Secure Access

Kyuubi supports secure communication channels for all internal interactions, both:

  • Between the Kyuubi server and Kyuubi engines.
  • Between Kyuubi server instances (REST API high availability mode).

If kyuubi.internal.security.enabled is set to true, all internal communication are encrypted. Currently, it's enforced to set kyuubi.internal.security.enabled to true if you want to use REST API high availability mode.

Managing encryption secrets

Encryption secrets are managed by a subclass of org.apache.kyuubi.service.authentication.EngineSecuritySecretProvider, which can be configured via kyuubi.internal.security.secret.provider.

Kyuubi provides the following built-in implementations:

  • simple: Use the pre-shared secret configured by kyuubi.internal.security.secret.provider.simple.secret.
  • zookeeper: Use the secret stored in the ZooKeeper znode configured by kyuubi.ha.zookeeper.engine.secure.secret.node.

We strongly recommend restricting access to these secrets.

  • If using the simple provider, you should also configure kyuubi.server.redaction.regex (e.g., (?i)secret|password|token|access[.]?key) to redact the secret.
  • If using the zookeeper provider, ensure that ACLs (Access Control Lists) are properly configured for the znode where the secret is stored.

Custom implementations of EngineSecuritySecretProvider are also supported for advanced secret management needs.

Configurations

KeyDefaultMeaningTypeSince
kyuubi.internal.security.enabledfalseWhether to enable secure access across all the internal communications.boolean1.12.0
kyuubi.internal.security.token.max.lifetimePT10MThe max lifetime of the token used for internal secure access.duration1.12.0
kyuubi.internal.security.secret.providerzookeeperThe class used to manage the internal security secret.string1.12.0
kyuubi.internal.security.secret.provider.simple.secret<undefined>The secret key used for internal security access when kyuubi.internal.security.secret.provider is set to simple.string1.12.0
kyuubi.internal.security.crypto.keyAlgorithmAESThe algorithm for generated secret key.string1.12.0
kyuubi.internal.security.crypto.keyLength128The length in bits of the encryption key to generate. Valid values are 128, 192, and 256.int1.12.0
kyuubi.internal.security.crypto.cipherAES/CBC/PKCS5PADDINGThe cipher transformation to use for encrypting internal access token.string1.12.0
kyuubi.internal.security.crypto.ivLength16Initial vector length, in bytes.int1.12.0