mirror of
https://github.com/apache/impala.git
synced 2025-12-30 03:01:44 -05:00
from the Impala Security Guide. The scope of this gerrit is dealing with chunks of CM content still remaining in the security guide. Some of work on the SSL, LDAP and Sentry topics was done by John in a separate gerrit. Change-Id: I65a2aa96d7d45f6c1b348105727ddb5c4a6be6d2 Reviewed-on: http://gerrit.cloudera.org:8080/6231 Reviewed-by: John Russell <jrussell@cloudera.com> Tested-by: Impala Public Jenkins
127 lines
5.1 KiB
XML
127 lines
5.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you 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.
|
|
-->
|
|
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
|
|
<concept rev="1.1" id="security_guidelines">
|
|
|
|
<title>Security Guidelines for Impala</title>
|
|
<prolog>
|
|
<metadata>
|
|
<data name="Category" value="Security"/>
|
|
<data name="Category" value="Impala"/>
|
|
<data name="Category" value="Planning"/>
|
|
<data name="Category" value="Guidelines"/>
|
|
<data name="Category" value="Best Practices"/>
|
|
<data name="Category" value="Administrators"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
The following are the major steps to harden a cluster running Impala against accidents and mistakes, or
|
|
malicious attackers trying to access sensitive data:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Secure the <codeph>root</codeph> account. The <codeph>root</codeph> user can tamper with the
|
|
<cmdname>impalad</cmdname> daemon, read and write the data files in HDFS, log into other user accounts, and
|
|
access other system services that are beyond the control of Impala.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Restrict membership in the <codeph>sudoers</codeph> list (in the <filepath>/etc/sudoers</filepath> file).
|
|
The users who can run the <codeph>sudo</codeph> command can do many of the same things as the
|
|
<codeph>root</codeph> user.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Ensure the Hadoop ownership and permissions for Impala data files are restricted.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Ensure the Hadoop ownership and permissions for Impala log files are restricted.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Ensure that the Impala web UI (available by default on port 25000 on each Impala node) is
|
|
password-protected. See <xref href="impala_webui.xml#webui"/> for details.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Create a policy file that specifies which Impala privileges are available to users in particular Hadoop
|
|
groups (which by default map to Linux OS groups). Create the associated Linux groups using the
|
|
<cmdname>groupadd</cmdname> command if necessary.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
The Impala authorization feature makes use of the HDFS file ownership and permissions mechanism; for
|
|
background information, see the
|
|
<xref href="https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html" scope="external" format="html">HDFS Permissions Guide</xref>.
|
|
Set up users and assign them to groups at the OS level, corresponding to the
|
|
different categories of users with different access levels for various databases, tables, and HDFS
|
|
locations (URIs). Create the associated Linux users using the <cmdname>useradd</cmdname> command if
|
|
necessary, and add them to the appropriate groups with the <cmdname>usermod</cmdname> command.
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Design your databases, tables, and views with database and table structure to allow policy rules to specify
|
|
simple, consistent rules. For example, if all tables related to an application are inside a single
|
|
database, you can assign privileges for that database and use the <codeph>*</codeph> wildcard for the table
|
|
name. If you are creating views with different privileges than the underlying base tables, you might put
|
|
the views in a separate database so that you can use the <codeph>*</codeph> wildcard for the database
|
|
containing the base tables, while specifying the precise names of the individual views. (For specifying
|
|
table or database names, you either specify the exact name or <codeph>*</codeph> to mean all the databases
|
|
on a server, or all the tables and views in a database.)
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Enable authorization by running the <codeph>impalad</codeph> daemons with the <codeph>-server_name</codeph>
|
|
and <codeph>-authorization_policy_file</codeph> options on all nodes. (The authorization feature does not
|
|
apply to the <cmdname>statestored</cmdname> daemon, which has no access to schema objects or data files.)
|
|
</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>
|
|
Set up authentication using Kerberos, to make sure users really are who they say they are.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
</conbody>
|
|
</concept>
|