You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Alexandre Linte (JIRA)" <ji...@apache.org> on 2016/06/02 16:18:59 UTC
[jira] [Commented] (HIVE-13819) Read & eXecute permissions on
Database allows to ALTER it.
[ https://issues.apache.org/jira/browse/HIVE-13819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15312566#comment-15312566 ]
Alexandre Linte commented on HIVE-13819:
----------------------------------------
Hi !
Nothing new on it ? Is it the expected behavior or did i miss something ?
Thanks and regards.
> Read & eXecute permissions on Database allows to ALTER it.
> ----------------------------------------------------------
>
> Key: HIVE-13819
> URL: https://issues.apache.org/jira/browse/HIVE-13819
> Project: Hive
> Issue Type: Bug
> Components: Authorization
> Affects Versions: 1.2.1
> Environment: Hadoop 2.7.2, Hive 1.2.1, Kerberos.
> Reporter: Alexandre Linte
>
> Hi,
> As the owner of an Hive database I can modify the Hive database metadata whereas I only has the read and execute permission on the Hive database repository.
> I was expected to not be able to modify these metadata.
> Context:
> - Hive database configured with the Storage Based Authorization strategy.
> - Hive client authorization is disabled.
> - Metastore side security is activated.
> Permission configuration:
> {noformat}
> dr-x--x--- - hive9990 hive9990 0 2016-05-20 17:10 /path/to/hive/warehouse/p09990.db
> {noformat}
> ALTER command as hive9990 user:
> {noformat}
> hive (p09990)> ALTER DATABASE p09990 SET DBPROPERTIES ('comment'='database altered');
> OK
> Time taken: 0.277 seconds
> hive (p09990)> DESCRIBE DATABASE EXTENDED p09990;
> OK
> p09990 hdfs://path/to/hive/warehouse/p09990.db hdfs USER {comment=database altered}
> {noformat}
> Configuration of hive-site.xml on the metastore:
> {noformat}
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
> <configuration>
>
> <property>
> <name>hive.security.authorization.enabled</name>
> <value>false</value>
> <description>enable or disable the Hive client authorization</description>
> </property>
> <property>
> <name>hive.security.metastore.authorization.manager</name>
> <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
> <description>authorization manager class name to be used in the metastore for authorization.
> The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.
> </description>
> </property>
> <property>
> <name>hive.metastore.pre.event.listeners</name>
> <value>org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener</value>
> <description>This turns on metastore-side security.
> </description>
> </property>
> <property>
> <name>hive.security.metastore.authorization.auth.reads</name>
> <value>true</value>
> <description>If this is true, the metastore authorizer authorizes read actions on database and table.
> </description>
> </property>
> <property>
> <name>hive.security.authorization.manager</name>
> <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
> <description>The Hive client authorization manager class name.
> The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.
> </description>
> </property>
> <property>
> <name>hive.security.authorization.createtable.owner.grants</name>
> <value>ALL</value>
> <description>the privileges automatically granted to the owner whenever a table gets created.
> An example like "select,drop" will grant select and drop privilege to the owner of the table</description>
> </property>
> <property>
> <name>hive.users.in.admin.role</name>
> <value>hdfs</value>
> <description>Comma separated list of users who are in admin role for bootstrapping.
> More users can be added in ADMIN role later.</description>
> </property>
> <property>
> <name>hive.metastore.warehouse.dir</name>
> <value>/path/to/hive/warehouse/</value>
> <description>location of default database for the warehouse</description>
> </property>
> <property>
> <name>hive.cli.print.current.db</name>
> <value>true</value>
> <description>Whether to include the current database in the Hive prompt.</description>
> </property>
> <property>
> <name>hive.metastore.uris</name>
> <value>thrift://hiveserver2http01:9083</value>
> <description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description>
> </property>
> <property>
> <name>javax.jdo.option.ConnectionDriverName</name>
> <value>com.mysql.jdbc.Driver</value>
> <description>JDBC Driver</description>
> </property>
> <property>
> <name>javax.jdo.option.ConnectionURL</name>
> <value>jdbc:mysql://hivedb01/metastore</value>
> <description>JDBC connect string for a JDBC metastore</description>
> </property>
> <property>
> <name>javax.jdo.option.ConnectionUserName</name>
> <value>metastore</value>
> <description>username to use against metastore database</description>
> </property>
> <property>
> <name>javax.jdo.option.ConnectionPassword</name>
> <value>********</value>
> <description>password to use against metastore database</description>
> </property>
> <property>
> <name>datanucleus.autoCreateSchema</name>
> <value>false</value>
> <description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>
> </property>
> <property>
> <name>hive.metastore.authorization.storage.checks</name>
> <value>true</value>
> <description>Should the metastore do authorization checks against the underlying storage
> for operations like drop-partition (disallow the drop-partition if the user in
> question doesn't have permissions to delete the corresponding directory
> on the storage).</description>
> </property>
> <property>
> <name>hive.metastore.sasl.enabled</name>
> <value>true</value>
> <description>If true, the metastore thrift interface will be secured with SASL. Clients must authenticate with Kerberos.</description>
> </property>
> <property>
> <name>hive.metastore.kerberos.keytab.file</name>
> <value>/path/to/metastore.keytab</value>
> <description>The path to the Kerberos Keytab file containing the metastore thrift server's service principal.</description>
> </property>
> <property>
> <name>hive.metastore.kerberos.principal</name>
> <value>primary/instance@realm</value>
> <description>The service principal for the metastore thrift server. The special string _HOST will be replaced automatically with the correct host name.</description>
> </property>
> <property>
> <name>hive.server2.max.start.attempts</name>
> <value>30</value>
> <description>This number of times HiveServer2 will attempt to start before exiting, sleeping 60 seconds between retries. The default of 30 will keep trying for 30 minutes.</description>
> </property>
> <property>
> <name>hive.server2.transport.mode</name>
> <value>binary</value>
> <description>Server transport mode. "binary" or "http".</description>
> </property>
> <property>
> <name>hive.server2.thrift.http.port</name>
> <value>10001</value>
> <description>Port number when in HTTP mode.</description>
> </property>
> <property>
> <name>hive.server2.thrift.http.path</name>
> <value>bdcorp</value>
> <description>Path component of URL endpoint when in HTTP mode.</description>
> </property>
> <property>
> <name>hive.server2.use.SSL</name>
> <value>false</value>
> <description>Set this to true for using SSL encryption in HiveServer2</description>
> </property>
> <property>
> <name>hive.server2.keystore.path</name>
> <value></value>
> <description>SSL certificate keystore location</description>
> </property>
> <property>
> <name>hive.server2.keystore.password</name>
> <value></value>
> <description>SSL certificate keystore password.</description>
> </property>
> <property>
> <name>hive.server2.authentication.pam.services</name>
> <value></value>
> <description>List of the underlying pam services that should be used when auth type is PAM.
> A file with the same name must exist in /etc/pam.d</description>
> </property>
> <property>
> <name>hive.server2.thrift.min.worker.threads</name>
> <value>5</value>
> <description>Minimum number of Thrift worker threads</description>
> </property>
> <property>
> <name>hive.server2.thrift.max.worker.threads</name>
> <value>500</value>
> <description>Maximum number of Thrift worker threads</description>
> </property>
> <property>
> <name>hive.server2.thrift.worker.keepalive.time</name>
> <value>60</value>
> <description>Keepalive time (in seconds) for an idle worker thread.
> When number of workers > min workers, excess threads are killed after this time interval.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.auth.enabled</name>
> <value>true</value>
> <description>When true, HiveServer2 in HTTP transport mode will use cookie based authentication mechanism.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.max.age</name>
> <value>86400s</value>
> <description>Maximum age in seconds for server side cookie used by HiveServer2 in HTTP mode.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.path</name>
> <value></value>
> <description>Path for the HiveServer2 generated cookies.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.domain</name>
> <value></value>
> <description>Domain for the HiveServer2 generated cookies.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.is.secure</name>
> <value>true</value>
> <description>Secure attribute of the HiveServer2 generated cookie.
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.http.cookie.is.httponly</name>
> <value>true</value>
> <description>HttpOnly attribute of the HiveServer2 generated cookie.
> </description>
> </property>
> <property>
> <name>hive.server2.async.exec.threads</name>
> <value>100</value>
> <description>Number of threads in the async thread pool for HiveServer2</description>
> </property>
> <property>
> <name>hive.server2.async.exec.shutdown.timeout</name>
> <value>10</value>
> <description>Time (in seconds) for which HiveServer2 shutdown will wait for async
> threads to terminate</description>
> </property>
> <property>
> <name>hive.server2.async.exec.keepalive.time</name>
> <value>10</value>
> <description>Time (in seconds) that an idle HiveServer2 async thread (from the thread pool) will wait
> for a new task to arrive before terminating</description>
> </property>
> <property>
> <name>hive.server2.long.polling.timeout</name>
> <value>5000</value>
> <description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description>
> </property>
> <property>
> <name>hive.server2.async.exec.wait.queue.size</name>
> <value>100</value>
> <description>Size of the wait queue for async thread pool in HiveServer2.
> After hitting this limit, the async thread pool will reject new requests.</description>
> </property>
> <property>
> <name>hive.server2.thrift.port</name>
> <value>10000</value>
> <description>Port number of HiveServer2 Thrift interface.
> Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>
> </property>
> <property>
> <name>hive.server2.thrift.bind.host</name>
> <value>hiveserver2http01</value>
> <description>Bind host on which to run the HiveServer2 Thrift interface.
> Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
> </property>
> <property>
> <name>hive.server2.authentication</name>
> <value>KERBEROS</value>
> <description>
> Client authentication types.
> NONE: no authentication check
> LDAP: LDAP/AD based authentication
> KERBEROS: Kerberos/GSSAPI authentication
> CUSTOM: Custom authentication provider
> (Use with property hive.server2.custom.authentication.class)
> PAM: Pluggable authentication module.
> </description>
> </property>
> <property>
> <name>hive.server2.custom.authentication.class</name>
> <value></value>
> <description>
> Custom authentication class. Used when property
> 'hive.server2.authentication' is set to 'CUSTOM'. Provided class
> must be a proper implementation of the interface
> org.apache.hive.service.auth.PasswdAuthenticationProvider. HiveServer2
> will call its Authenticate(user, passed) method to authenticate requests.
> The implementation may optionally extend Hadoop's
> org.apache.hadoop.conf.Configured class to grab Hive's Configuration object.
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.kerberos.principal</name>
> <value>primary/instance@realm</value>
> <description>
> Kerberos server principal
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.kerberos.keytab</name>
> <value>/path/to/hiveserver2.keytab</value>
> <description>
> Kerberos keytab file for server principal
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.spnego.principal</name>
> <value>primary/instance@realm</value>
> <description>
> SPNego service principal, optional,
> typical value would look like HTTP/_HOST@EXAMPLE.COM
> SPNego service principal would be used by hiveserver2 when kerberos security is enabled
> and HTTP transport mode is used.
> This needs to be set only if SPNEGO is to be used in authentication.
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.spnego.keytab</name>
> <value>/path/to/spnego.keytab</value>
> <description>
> keytab file for SPNego principal, optional,
> typical value would look like /etc/security/keytabs/spnego.service.keytab,
> This keytab would be used by hiveserver2 when kerberos security is enabled
> and HTTP transport mode is used.
> This needs to be set only if SPNEGO is to be used in authentication.
> SPNego authentication would be honored only if valid
> hive.server2.authentication.spnego.principal
> and
> hive.server2.authentication.spnego.keytab
> are specified
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.ldap.url</name>
> <value>setindatabag</value>
> <description>
> LDAP connection URL
> </description>
> </property>
> <property>
> <name>hive.server2.authentication.ldap.baseDN</name>
> <value>setindatabag</value>
> <description>
> LDAP base DN
> </description>
> </property>
> <property>
> <name>hive.server2.enable.doAs</name>
> <value>true</value>
> <description>
> Setting this property to true will have HiveServer2 execute
> Hive operations as the user making the calls to it.
> </description>
> </property>
> <property>
> <name>hive.execution.engine</name>
> <value>mr</value>
> <description>
> Chooses execution engine. Options are: mr (Map reduce, default) or tez (hadoop 2 only)
> </description>
> </property>
> <property>
> <name>hive.mapjoin.optimized.hashtable</name>
> <value>true</value>
> <description>Whether Hive should use a memory-optimized hash table for MapJoin.
> Only works on Tez, because memory-optimized hash table cannot be serialized.
> </description>
> </property>
> <property>
> <name>hive.mapjoin.optimized.hashtable.wbsize</name>
> <value>10485760</value>
> <description>Optimized hashtable (see hive.mapjoin.optimized.hashtable) uses a chain of buffers to store data.
> This is one buffer size. Hashtable may be slightly faster if this is larger,
> but for small joins unnecessary memory will be allocated and then trimmed.
> </description>
> </property>
> <property>
> <name>hive.prewarm.enabled</name>
> <value>false</value>
> <description>
> Enables container prewarm for tez (hadoop 2 only)
> </description>
> </property>
> <property>
> <name>hive.prewarm.numcontainers</name>
> <value>10</value>
> <description>
> Controls the number of containers to prewarm for tez (hadoop 2 only)
> </description>
> </property>
> <property>
> <name>hive.server2.table.type.mapping</name>
> <value>CLASSIC</value>
> <description>
> This setting reflects how HiveServer2 will report the table types for JDBC and other
> client implementations that retrieve the available tables and supported table types
> HIVE : Exposes Hive's native table types like MANAGED_TABLE, EXTERNAL_TABLE, VIRTUAL_VIEW
> CLASSIC : More generic types like TABLE and VIEW
> </description>
> </property>
> <property>
> <name>hive.server2.thrift.sasl.qop</name>
> <value>auth</value>
> <description>Sasl QOP value; Set it to one of following values to enable higher levels of
> protection for HiveServer2 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 HiveServer2 is configured to use Kerberos authentication.
> </description>
> </property>
> <property>
> <name>hive.tez.container.size</name>
> <value>-1</value>
> <description>By default tez will spawn containers of the size of a mapper. This can be used to overwrite.</description>
> </property>
> <property>
> <name>hive.tez.java.opts</name>
> <value></value>
> <description>By default tez will use the java opts from map tasks. This can be used to overwrite.</description>
> </property>
> <property>
> <name>hive.tez.log.level</name>
> <value>INFO</value>
> <description>
> The log level to use for tasks executing as part of the DAG.
> Used only if hive.tez.java.opts is used to configure java opts.
> </description>
> </property>
> <property>
> <name>hive.tez.smb.number.waves</name>
> <value>1</value>
> <description>The number of waves in which to run the SMB (sort-merge-bucket) join.
> Account for cluster being occupied. Ideally should be 1 wave.
> </description>
> </property>
> <property>
> <name>hive.tez.cpu.vcores</name>
> <value>-1</value>
> <description>By default Tez will ask for however many CPUs MapReduce is configured to use per container.
> This can be used to overwrite the default.
> </description>
> </property>
> <property>
> <name>hive.tez.auto.reducer.parallelism</name>
> <value>false</value>
> <description>Turn on Tez' auto reducer parallelism feature. When enabled, Hive will still estimate data sizes and set parallelism estimates.
> Tez will sample source vertices' output sizes and adjust the estimates at runtime as necessary.
> </description>
> </property>
> <property>
> <name>hive.auto.convert.join</name>
> <value>true</value>
> <description>
> </description>
> </property>
> <property>
> <name>hive.auto.convert.join.noconditionaltask</name>
> <value>true</value>
> <description>
> </description>
> </property>
> <property>
> <name>hive.auto.convert.join.noconditionaltask.size</name>
> <value>1</value>
> <description>
> </description>
> </property>
> <property>
> <name>hive.vectorized.execution.enabled</name>
> <value>true</value>
> <description>This flag should be set to true to enable vectorized mode of query execution. The default value is false.
> </description>
> </property>
> <property>
> <name>hive.vectorized.execution.reduce.enabled</name>
> <value>false</value>
> <description>This flag should be set to true to enable vectorized mode of the reduce-side of query execution. The default value is true.
> </description>
> </property>
> <property>
> <name>hive.cbo.enable</name>
> <value>true</value>
> <description>When true, the cost based optimizer, which uses the Calcite framework, will be enabled.
> </description>
> </property>
> <property>
> <name>hive.fetch.task.conversion</name>
> <value>more</value>
> <description>Some select queries can be converted to a single FETCH task, minimizing latency.
> Currently the query should be single sourced not having any subquery and should not have any aggregations or distincts
> (which incur RS – ReduceSinkOperator, requiring a MapReduce task), lateral views and joins.
> </description>
> </property>
> <property>
> <name>hive.fetch.task.conversion.threshold</name>
> <value>1073741824</value>
> <description>Input threshold (in bytes) for applying hive.fetch.task.conversion.
> If target table is native, input length is calculated by summation of file lengths.
> If it's not native, the storage handler for the table can optionally implement the org.apache.hadoop.hive.ql.metadata.InputEstimator interface.
> A negative threshold means hive.fetch.task.conversion is applied without any input length threshold.
> </description>
> </property>
> <property>
> <name>hive.fetch.task.aggr</name>
> <value>false</value>
> <description>Aggregation queries with no group-by clause (for example, select count(*) from src) execute final aggregations in a single reduce task.
> If this parameter is set to true, Hive delegates the final aggregation stage to a fetch task, possibly decreasing the query time.
> </description>
> </property>
> <property>
> <name>hive.spark.job.monitor.timeout</name>
> <value>60</value>
> <description>Timeout for job monitor to get Spark job state.
> </description>
> </property>
> <property>
> <name>hive.spark.client.future.timeout</name>
> <value>60</value>
> <description>Timeout for requests from Hive client to remote Spark driver.
> </description>
> </property>
> <property>
> <name>hive.spark.client.connect.timeout</name>
> <value>1000</value>
> <description>Timeout for remote Spark driver in connecting back to Hive client.
> </description>
> </property>
> <property>
> <name>hive.spark.client.channel.log.level</name>
> <value></value>
> <description>Channel logging level for remote Spark driver. One of DEBUG, ERROR, INFO, TRACE, WARN. If unset, TRACE is chosen.
> </description>
> </property>
> <property>
> <name>hive.server2.tez.default.queues</name>
> <value></value>
> <description>
> A list of comma separated values corresponding to yarn queues of the same name.
> When hive server 2 is launched in tez mode, this configuration needs to be set
> for multiple tez sessions to run in parallel on the cluster.
> </description>
> </property>
> <property>
> <name>hive.server2.tez.sessions.per.default.queue</name>
> <value>1</value>
> <description>
> A positive integer that determines the number of tez sessions that should be
> launched on each of the queues specified by "hive.server2.tez.default.queues".
> Determines the parallelism on each queue.
> </description>
> </property>
> <property>
> <name>hive.server2.tez.initialize.default.sessions</name>
> <value>false</value>
> <description>
> This flag is used in hive server 2 to enable a user to use hive server 2 without
> turning on tez for hive server 2. The user could potentially want to run queries
> over tez without the pool of sessions.
> </description>
> </property>
> <property>
> <name>hive.support.sql11.reserved.keywords</name>
> <value>true</value>
> <description>Whether to enable support for SQL2011 reserved keywords. When enabled, will support (part of) SQL2011 reserved keywords.
> </description>
> </property>
> <property>
> <name>hive.aux.jars.path</name>
> <value></value>
> <description>A comma separated list (with no spaces) of the jar files</description>
> </property>
> </configuration>
> {noformat}
> Best regards.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)