You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Sushanth Sowmyan (JIRA)" <ji...@apache.org> on 2013/10/10 23:07:42 UTC
[jira] [Commented] (HIVE-5485) SBAP errors on null partition being
passed into partition level authorization
[ https://issues.apache.org/jira/browse/HIVE-5485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13791984#comment-13791984 ]
Sushanth Sowmyan commented on HIVE-5485:
----------------------------------------
Verifiable by setting hive.security.authorization.manager to SBAP and turning client-side auth on before running hive -e CTAS onto an unpartitioned table.
> SBAP errors on null partition being passed into partition level authorization
> -----------------------------------------------------------------------------
>
> Key: HIVE-5485
> URL: https://issues.apache.org/jira/browse/HIVE-5485
> Project: Hive
> Issue Type: Bug
> Components: Authorization
> Affects Versions: 0.12.0
> Reporter: Sushanth Sowmyan
> Assignee: Sushanth Sowmyan
> Attachments: HIVE-5485.patch
>
>
> SBAP causes an NPE when null is passed in as a partition for partition-level or column-level authorization.
> Personally, in my opinion, this is not a SBAP bug, but incorrect usage of AuthorizationProviders - one should not be calling the column-level authorize (given that column-level is more basic than partition-level) function and pass in a null as the partition value. However, that happens on code introduced by HIVE-1887, and unless we rewrite that (and possibly a whole bunch more(will need evaluation)), we have to accommodate that null and appropriately attempt to fall back to table-level authorization in that case.
> The offending code section is in Driver.java:685
> {code}
> 678 // if we reach here, it means it needs to do a table authorization
> 679 // check, and the table authorization may already happened because of other
> 680 // partitions
> 681 if (tbl != null && !tableAuthChecked.contains(tbl.getTableName()) &&
> 682 !(tableUsePartLevelAuth.get(tbl.getTableName()) == Boolean.TRUE)) {
> 683 List<String> cols = tab2Cols.get(tbl);
> 684 if (cols != null && cols.size() > 0) {
> 685 ss.getAuthorizer().authorize(tbl, null, cols,
> 686 op.getInputRequiredPrivileges(), null);
> 687 } else {
> 688 ss.getAuthorizer().authorize(tbl, op.getInputRequiredPrivileges(),
> 689 null);
> 690 }
> 691 tableAuthChecked.add(tbl.getTableName());
> 692 }
> {code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)