Skip to content

Add support for Kerberized Elasticsearch #1244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 207 commits into from
Feb 5, 2019

Conversation

jbaiera
Copy link
Member

@jbaiera jbaiera commented Feb 5, 2019

Elasticsearch supports using Kerberos to authenticate over HTTP by means of SPNEGO. Since most secure Hadoop environments make use of Kerberos to secure their environments, naturally ES-Hadoop should support Kerberos authentication.

With the recent addition of API Key authentication to Elasticsearch, we now have a stable means for obtaining long lived and stable tokens for worker process authentication when using Kerberos.

This PR contains the following changes:

  1. Extensions to the HTTP library that allow for Negotiate and ApiKey authorization.
  2. Additional mechanisms for managing user subjects, credentials, and authentication.
  3. Integration specific mechanisms for obtaining, transmitting, and cancelling delegation tokens for Elasticsearch.
  4. New test framework code that stands up Hadoop services with a local KDC for testing authentication handling across multiple real service processes.
  5. Tests to ensure correctness.

jbaiera added 30 commits August 20, 2018 11:36
Add renewer to services meta file.
Move token identifier to mr package.
Wrap the whole token instead of just the access code.
Rename TokenCredentials to EsTokenCredentials.
Mark auth scheme complete after first call. Subsequent calls will
attempt to re-read the authentication token from the provider.
TokenCredentialProvider to deserialize the token data from the hadoop token.
Move the token identifier to the security package.
We do this in case we need to swap out the user facilities for a
different integration.
Add a kerberos qa subproject.
Test the SPNEGO auth end-to-end.
Add configurations for specifying the user and service principals.
Negotiator should use non-chunked Base64 encoding.
Only set preemptive auth when basic authentication is used.
@jbaiera
Copy link
Member Author

jbaiera commented Feb 5, 2019

Closes #1175

@jbaiera jbaiera merged commit 995ac2d into elastic:master Feb 5, 2019
@jbaiera jbaiera deleted the feature-kerberos branch February 5, 2019 20:32
jbaiera added a commit that referenced this pull request Feb 5, 2019
Elasticsearch supports using Kerberos to authenticate over HTTP by means of SPNEGO.
Since most secure Hadoop environments make use of Kerberos to secure their
environments, naturally ES-Hadoop should support Kerberos authentication.

With the recent addition of API Key authentication to Elasticsearch, we now have a stable
means for obtaining long lived and stable tokens for worker process authentication when
using Kerberos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant