<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu - Apache Kudu Security</title>
    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
          crossorigin="anonymous">

    <!-- Custom styles for this template -->
    <link href="/css/kudu.css" rel="stylesheet"/>
    <link href="/css/asciidoc.css" rel="stylesheet"/>
    <link rel="shortcut icon" href="/img/logo-favicon.ico" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />

    

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
  </head>
  <body>
    <div class="kudu-site container-fluid">
      <!-- Static navbar -->
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="logo" href="/"><img
                src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
                srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
                alt="Apache Kudu"/></a>
              
            </div>
            <div id="navbar" class="collapse navbar-collapse">
              <ul class="nav navbar-nav navbar-right">
                <li >
                  <a href="/">Home</a>
                </li>
                <li >
                  <a href="/overview.html">Overview</a>
                </li>
                <li class="active">
                  <a href="/docs/">Documentation</a>
                </li>
                <li >
                  <a href="/releases/">Download</a>
                </li>
                <li >
                  <a href="/blog/">Blog</a>
                </li>
                <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
                     that doesn't also appear elsewhere on the site. -->
                <li class="dropdown">
                  <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li class="dropdown-header">GET IN TOUCH</li>
                    <li><a class="icon email" href="/community.html">Mailing Lists</a></li>
                    <li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
                    <li><a href="/committers.html">Project Committers</a></li>
                    <!--<li><a href="/roadmap.html">Roadmap</a></li>-->
                    <li><a href="/community.html#contributions">How to Contribute</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">DEVELOPER RESOURCES</li>
                    <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
                    <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
                    <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">SOCIAL MEDIA</li>
                    <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
                  </ul>
                </li>
                <li >
                  <a href="/faq.html">FAQ</a>
                </li>
              </ul><!-- /.nav -->
            </div><!-- /#navbar -->
          </div><!-- /.container-fluid -->
        </nav>

<!--

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->


<div class="container">
  <div class="row">
    <div class="col-md-9">

<h1>Apache Kudu Security</h1>
      <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Kudu includes security features which allow Kudu clusters to be hardened against
access from unauthorized users. This guide describes the security features
provided by Kudu. <a href="#configuration">Configuring a Secure Kudu Cluster</a> lists essential configuration options when
deploying a secure Kudu cluster. <a href="#known-limitations">Known Limitations</a> contains a list of
known deficiencies in Kudu&#8217;s security capabilities.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_authentication"><a class="link" href="#_authentication">Authentication</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu can be configured to enforce secure authentication among servers, and
between clients and servers. Authentication prevents untrusted actors from
gaining access to Kudu, and securely identifies the connecting user or services
for authorization checks. Authentication in Kudu is designed to interoperate
with other secure Hadoop components by utilizing Kerberos.</p>
</div>
<div class="paragraph">
<p>Authentication can be configured on Kudu servers using the
<code>--rpc-authentication</code> flag, which can be set to <code>required</code>, <code>optional</code>, or
<code>disabled</code>. By default, the flag is set to <code>optional</code>. When <code>required</code>, Kudu
will reject connections from clients and servers who lack authentication
credentials. When <code>optional</code>, Kudu will attempt to use strong authentication,
but will allow unauthenticated connections. When <code>disabled</code>, Kudu will only
allow unauthenticated connections.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
When the <code>--rpc-authentication</code> flag is set to <code>optional</code>,
the cluster does not prevent access from unauthenticated users. To secure a
cluster, use <code>--rpc-authentication=required</code>.
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_internal_pki"><a class="link" href="#_internal_pki">Internal PKI</a></h3>
<div class="paragraph">
<p>Kudu uses an internal PKI system to issue X.509 certificates to servers in
the cluster. Connections between peers who have both obtained certificates will
use TLS for authentication, which doesn&#8217;t require contacting the Kerberos KDC.
These certificates are <em>only</em> used for internal communication among Kudu
servers, and between Kudu clients and servers. The certificates are never
presented in a public facing protocol.</p>
</div>
<div class="paragraph">
<p>By using internally-issued certificates, Kudu offers strong authentication which
scales to huge clusters, and allows TLS encryption to be used without requiring
you to manually deploy certificates on every node.</p>
</div>
</div>
<div class="sect2">
<h3 id="_authentication_tokens"><a class="link" href="#_authentication_tokens">Authentication Tokens</a></h3>
<div class="paragraph">
<p>After authenticating to a secure cluster, the Kudu client will automatically
request an authentication token from the Kudu master. An authentication token
encapsulates the identity of the authenticated user and carries the master&#8217;s
RSA signature so that its authenticity can be verified.</p>
</div>
<div class="paragraph">
<p>This token will be used to authenticate subsequent connections. By default,
authentication tokens are only valid for seven days, so that even if a token
were compromised, it could not be used indefinitely. For the most part,
authentication tokens should be completely transparent to users. By using
authentication tokens, Kudu takes advantage of strong authentication without
paying the scalability cost of communicating with a central authority for every
connection.</p>
</div>
<div class="paragraph">
<p>When used with distributed compute frameworks such as Spark, authentication
tokens can simplify configuration and improve security. For example, the Kudu
Spark connector will automatically retrieve an authentication token during the
planning stage, and distribute the token to tasks. This allows Spark to work
against a secured Kudu cluster where only the planner node has Kerberos
credentials.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_scalability"><a class="link" href="#_scalability">Scalability</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu authentication is designed to scale to thousands of nodes, which requires
avoiding unnecessary coordination with a central authentication authority (such
as the Kerberos KDC). Instead, Kudu servers and clients will use Kerberos to
establish initial trust with the Kudu master, and then use alternate credentials
for subsequent connections. In particular, the master will issue internal
X.509 certificates to servers, and temporary authentication tokens to clients.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_encryption"><a class="link" href="#_encryption">Encryption</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu allows all communications among servers and between clients and servers
to be encrypted with TLS.</p>
</div>
<div class="paragraph">
<p>Encryption can be configured on Kudu servers using the <code>--rpc-encryption</code> flag,
which can be set to <code>required</code>, <code>optional</code>, or <code>disabled</code>. By default, the flag
is set to <code>optional</code>. When <code>required</code>, Kudu will reject unencrypted connections.
When <code>optional</code>, Kudu will attempt to use encryption, but will allow unencrypted
connections. When <code>disabled</code>, Kudu will never use encryption. To secure a
cluster, use <code>--rpc-encryption=required</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Kudu will automatically turn off encryption on local loopback connections,
since traffic from these connections is never exposed externally. This allows
locality-aware compute frameworks like Spark and Impala to avoid encryption
overhead, while still ensuring data confidentiality.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_coarse_grained_authorization"><a class="link" href="#_coarse_grained_authorization">Coarse-Grained Authorization</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu supports coarse-grained authorization of client requests based on the
authenticated client Kerberos principal (i.e. user or service). The two levels
of access which can be configured are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Superuser</strong> - principals authorized as a superuser are able to perform
certain administrative functionality such as using the <code>kudu</code> command line tool
to diagnose or repair cluster issues.</p>
</li>
<li>
<p><strong>User</strong> - principals authorized as a user are able to access and modify all
data in the Kudu cluster. This includes the ability to create, drop, and alter
tables as well as read, insert, update, and delete data.</p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Internally, Kudu has a third access level for the daemons themselves.
This ensures that users cannot connect to the cluster and pose as tablet
servers.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Access levels are granted using whitelist-style Access Control Lists (ACLs), one
for each of the two levels. Each access control list either specifies a
comma-separated list of users, or may be set to <code>*</code> to indicate that all
authenticated users are able to gain access at the specified level. See
<a href="#configuration">Configuring a Secure Kudu Cluster</a> below for examples.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The default value for the User ACL is <code>*</code>, which allows all users access
to the cluster. However, if authentication is enabled, this still restricts access
to only those users who are able to successfully authenticate via Kerberos.
Unauthenticated users on the same network as the Kudu servers will be unable
to access the cluster.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="web-ui"><a class="link" href="#web-ui">Web UI Encryption</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Kudu web UI can be configured to use secure HTTPS encryption by providing
each server with TLS certificates. See <a href="#configuration">Configuring a Secure Kudu Cluster</a> for more information on
web UI HTTPS configuration.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_web_ui_redaction"><a class="link" href="#_web_ui_redaction">Web UI Redaction</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>To prevent sensitive data from being exposed in the web UI, all row data is
redacted. Table metadata, such as table names, column names, and partitioning
information is not redacted. The web UI can be completely disabled by setting
the <code>--webserver-enabled=false</code> flag on Kudu servers.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
Disabling the web UI will also disable REST endpoints such as
<code>/metrics</code>. Monitoring systems rely on these endpoints to gather metrics data.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="logs"><a class="link" href="#logs">Log Security</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>To prevent sensitive data from being included in Kudu server logs, all row data
is redacted by default. This feature can be turned off configuring the
<code>--redact</code> flag.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="configuration"><a class="link" href="#configuration">Configuring a Secure Kudu Cluster</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following configuration parameters should be set on all servers (master and
tablet server) in order to ensure that a Kudu cluster is secure:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code># Connection Security
#--------------------
--rpc-authentication=required
--rpc-encryption=required
--keytab-file=&lt;path-to-kerberos-keytab&gt;

# Web UI Security
#--------------------
--webserver-certificate-file=&lt;path-to-cert-pem&gt;
--webserver-private-key-file=&lt;path-to-key-pem&gt;
# optional
--webserver-private-key-password-cmd=&lt;password-cmd&gt;

# If you prefer to disable the web UI entirely:
--webserver-enabled=false

# Coarse-grained authorization
#--------------------------------

# This example ACL setup allows the 'impala' user as well as the
# 'nightly_etl_service_account' principal access to all data in the
# Kudu cluster. The 'hadoopadmin' user is allowed to use administrative
# tooling. Note that, by granting access to 'impala', other users
# may access data in Kudu via the Impala service subject to its own
# authorization rules.
--user-acl=impala,nightly_etl_service_account
--superuser-acl=hadoopadmin</code></pre>
</div>
</div>
<div class="paragraph">
<p>Further information about these flags can be found in the configuration
flag reference.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="known-limitations"><a class="link" href="#known-limitations">Known Limitations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu has a few known security limitations:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Long-lived Tokens</dt>
<dd>
<p>Kudu clients do not automatically request fresh tokens after
initial token expiration, so long-lived clients in secure clusters are not
supported. Note that applications such as Apache Impala construct new clients
for each query and thus this limitation only affects the runtime of any single
query.</p>
</dd>
<dt class="hdlist1">Custom Kerberos Principal</dt>
<dd>
<p>Kudu does not support setting a custom service
principal for Kudu processes. The principal must be 'kudu'.</p>
</dd>
<dt class="hdlist1">External PKI</dt>
<dd>
<p>Kudu does not support externally-issued certificates for internal
wire encryption (server to server and client to server).</p>
</dd>
<dt class="hdlist1">Fine-grained Authorization</dt>
<dd>
<p>Kudu does not have the ability to restrict access
based on operation type or target (table, column, etc). ACLs currently do not
support authorization based on membership in a group.</p>
</dd>
<dt class="hdlist1">On-disk Encryption</dt>
<dd>
<p>Kudu does not have built-in on-disk encryption. However,
Kudu can be used with whole-disk encryption tools such as dm-crypt.</p>
</dd>
<dt class="hdlist1">Web UI Authentication</dt>
<dd>
<p>The Kudu web UI lacks Kerberos-based authentication
(SPNEGO), so access cannot be restricted based on Kerberos principals.</p>
</dd>
<dt class="hdlist1">Flume Integration</dt>
<dd>
<p>Flume integration is not supported with secure Kudu clusters
which require authentication or encryption.</p>
</dd>
</dl>
</div>
</div>
</div>
    </div>
    <div class="col-md-3">

  <div id="toc" data-spy="affix" data-offset-top="70">
  <ul>

      <li>

          <a href="index.html">Introducing Kudu</a> 
      </li> 
      <li>

          <a href="release_notes.html">Kudu Release Notes</a> 
      </li> 
      <li>

          <a href="quickstart.html">Getting Started with Kudu</a> 
      </li> 
      <li>

          <a href="installation.html">Installation Guide</a> 
      </li> 
      <li>

          <a href="configuration.html">Configuring Kudu</a> 
      </li> 
      <li>

          <a href="kudu_impala_integration.html">Using Impala with Kudu</a> 
      </li> 
      <li>

          <a href="administration.html">Administering Kudu</a> 
      </li> 
      <li>

          <a href="troubleshooting.html">Troubleshooting Kudu</a> 
      </li> 
      <li>

          <a href="developing.html">Developing Applications with Kudu</a> 
      </li> 
      <li>

          <a href="schema_design.html">Kudu Schema Design</a> 
      </li> 
      <li>
<span class="active-toc">Kudu Security</span>
            <ul class="sectlevel1">
<li><a href="#_authentication">Authentication</a>
<ul class="sectlevel2">
<li><a href="#_internal_pki">Internal PKI</a></li>
<li><a href="#_authentication_tokens">Authentication Tokens</a></li>
</ul>
</li>
<li><a href="#_scalability">Scalability</a></li>
<li><a href="#_encryption">Encryption</a></li>
<li><a href="#_coarse_grained_authorization">Coarse-Grained Authorization</a></li>
<li><a href="#web-ui">Web UI Encryption</a></li>
<li><a href="#_web_ui_redaction">Web UI Redaction</a></li>
<li><a href="#logs">Log Security</a></li>
<li><a href="#configuration">Configuring a Secure Kudu Cluster</a></li>
<li><a href="#known-limitations">Known Limitations</a></li>
</ul> 
      </li> 
      <li>

          <a href="transaction_semantics.html">Kudu Transaction Semantics</a> 
      </li> 
      <li>

          <a href="background_tasks.html">Background Maintenance Tasks</a> 
      </li> 
      <li>

          <a href="configuration_reference.html">Kudu Configuration Reference</a> 
      </li> 
      <li>

          <a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a> 
      </li> 
      <li>

          <a href="known_issues.html">Known Issues and Limitations</a> 
      </li> 
      <li>

          <a href="contributing.html">Contributing to Kudu</a> 
      </li> 
      <li>

          <a href="export_control.html">Export Control Notice</a> 
      </li> 
  </ul>
  </div>
    </div>
  </div>
</div>
      <footer class="footer">
        <p class="small">
        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2017-05-15 12:38:07 PDT 
        </p>
      </footer>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
      // Try to detect touch-screen devices. Note: Many laptops have touch screens.
      $(document).ready(function() {
        if ("ontouchstart" in document.documentElement) {
          $(document.documentElement).addClass("touch");
        } else {
          $(document.documentElement).addClass("no-touch");
        }
      });
    </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
            integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
            crossorigin="anonymous"></script>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-68448017-1', 'auto');
      ga('send', 'pageview');
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
    <script>
      anchors.options = {
        placement: 'right',
        visible: 'touch',
      };
      anchors.add();
    </script>
  </body>
</html>

