blob: 47903d071a40ebaebcfbf0ae0a8e43e755b62adc [file] [log] [blame]
====
---- USER
admin
---- QUERY
create role grant_revoke_test_ALL_SERVER
---- RESULTS
'Role has been created.'
====
---- USER
admin
---- QUERY
create role grant_revoke_test_ALL_TEST_DB
---- RESULTS
'Role has been created.'
====
---- USER
admin
---- QUERY
create role grant_revoke_test_SELECT_INSERT_TEST_TBL
---- RESULTS
'Role has been created.'
====
---- USER
admin
---- QUERY
create role grant_revoke_test_ALL_URI
---- RESULTS
'Role has been created.'
====
---- USER
admin
---- QUERY
refresh authorization;
show roles;
---- RESULTS: VERIFY_IS_SUBSET
'grant_revoke_test_ALL_SERVER'
'grant_revoke_test_ALL_TEST_DB'
'grant_revoke_test_SELECT_INSERT_TEST_TBL'
'grant_revoke_test_ALL_URI'
====
---- QUERY
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
---- CATCH
does not have privileges to execute 'CREATE' on: grant_rev_db
====
---- USER
admin
---- QUERY
grant all on server to grant_revoke_test_ALL_SERVER
====
---- USER
admin
---- QUERY
# Grant the privilege to the group `$GROUP_NAME`, to which the user 'getuser()' belongs
# so that the user 'getuser()' could perform the some of the following operations on the
# database 'grant_rev_db'.
# Group name will be replaced with the group of 'getuser()' in the test.
# framework.
grant role grant_revoke_test_ALL_SERVER to group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
refresh authorization
====
---- QUERY
show current roles
---- RESULTS: VERIFY_IS_SUBSET
'grant_revoke_test_ALL_SERVER'
---- TYPES
STRING
====
---- USER
does_not_exist
---- QUERY
# Run this query as a different user and verify no roles show up but the
# stmt does not fail with an authorization error.
show current roles
---- RESULTS: VERIFY_IS_SUBSET
---- TYPES
STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on server
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','','','','','*','*','','rwstorage',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','','','','*','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','*','','','','','','*','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
does_not_exist
---- QUERY
# A user that is not a Ranger administrator should not have privileges to execute
# SHOW ROLES
show roles
---- RESULTS: VERIFY_IS_SUBSET
---- TYPES
STRING
---- CATCH
User does_not_exist does not have permission for this operation
====
---- USER
does_not_exist
---- QUERY
# A user that is not a Ranger administrator should not have privilege to execute
# SHOW ROLE GRANT GROUP for a group the user does not belong to.
show role grant group non_owner
---- RESULTS: VERIFY_IS_SUBSET
---- TYPES
STRING
---- CATCH
User does_not_exist does not have permission for this operation
====
---- USER
non_owner
---- QUERY
# The 'non_owner' user doesn't have any roles granted to them, but since it is part of the
# 'non_owner' group, they should have privileges to execute this statement.
# Note that this test case requires that impalad was started with the argument
# '--use_customized_user_groups_mapper_for_ranger' so that a customized user-to-groups
# mapper will be used to retrieve the groups the user 'non_owner' belongs to, which
# consists of exactly one group, the group 'non_owner'.
show role grant group non_owner
---- RESULTS: VERIFY_IS_SUBSET
---- TYPES
STRING
====
---- QUERY
drop database if exists grant_rev_db
====
---- QUERY
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
====
---- QUERY
show tables in grant_rev_db
---- RESULTS
---- TYPES
STRING
====
---- QUERY
create table grant_rev_db.test_tbl1(i int)
====
---- QUERY
show tables in grant_rev_db
---- RESULTS
'test_tbl1'
---- TYPES
STRING
====
---- QUERY
create function grant_rev_db.fn() RETURNS int
LOCATION '$FILESYSTEM_PREFIX/test-warehouse/libTestUdfs.so' SYMBOL='Fn'
====
---- QUERY
show functions in grant_rev_db
---- RESULTS
'INT','fn()','NATIVE','true'
---- TYPES
STRING, STRING, STRING, STRING
====
---- QUERY
show create function grant_rev_db.fn
---- RESULTS: MULTI_LINE
['CREATE FUNCTION grant_rev_db.fn()
RETURNS INT
LOCATION ''$NAMENODE/test-warehouse/libTestUdfs.so''
SYMBOL=''_Z2FnPN10impala_udf15FunctionContextE''
']
---- TYPES
STRING
====
---- USER
admin
---- QUERY
# To prevent the user 'getuser()' (which belongs to the group '$GROUP_NAME') from
# performing any operation on the database 'grant_rev_db', we also need to alter
# the owner of 'grant_rev_db' since 'getuser()' is the owner of this database, which by
# default is allowed by Ranger to perform any operation on the database.
revoke role grant_revoke_test_ALL_SERVER from group `$GROUP_NAME`;
alter database grant_rev_db set owner user admin;
refresh authorization;
====
---- QUERY
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
---- CATCH
does not have privileges to execute 'CREATE' on: grant_rev_db
====
---- QUERY
show tables in grant_rev_db
---- CATCH
does not have privileges to access: grant_rev_db.*
====
---- QUERY
show functions in grant_rev_db
---- CATCH
does not have privileges to access: grant_rev_db
====
---- QUERY
show create function grant_rev_db.fn
---- CATCH
does not have privileges to access: grant_rev_db
====
---- QUERY
show create function _impala_builtins.sin
---- RESULTS: MULTI_LINE
['CREATE FUNCTION _impala_builtins.sin(DOUBLE)
RETURNS DOUBLE
SYMBOL=''_ZN6impala13MathFunctions3SinEPN10impala_udf15FunctionContextERKNS1_9DoubleValE''
']
---- TYPES
STRING
====
---- USER
admin
---- QUERY
grant role grant_revoke_test_ALL_TEST_DB to group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
# Should now have all privileges on the test db
grant all on database grant_rev_db to grant_revoke_test_ALL_TEST_DB
====
---- QUERY
show tables in grant_rev_db
---- RESULTS
'test_tbl1'
---- TYPES
STRING
====
---- QUERY
# Even though the user has all privileges on the database, they do not have privileges
# on any URIs. The FE tests have additional error message verification.
create table grant_rev_db.test_tbl2(i int) location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_tbl2';
---- CATCH
does not have privileges to access: $NAMENODE/test-warehouse/grant_rev_test_tbl2
====
---- USER
admin
---- QUERY
grant role grant_revoke_test_ALL_URI to group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
grant all on uri '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_tbl2' to grant_revoke_test_ALL_URI
====
---- QUERY
# Should now have privileges to create the table.
create table grant_rev_db.test_tbl2(i int) location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_tbl2';
====
---- USER
admin
---- QUERY
# Running grant on a URI with upper case letters
grant all on uri '$FILESYSTEM_PREFIX/test-warehouse/GRANT_REV_TEST_TBL3' to grant_revoke_test_ALL_URI
====
---- QUERY
# Should now have privileges to create the table.
create table grant_rev_db.test_tbl_uppercase(i int) location '$FILESYSTEM_PREFIX/test-warehouse/GRANT_REV_TEST_TBL3';
====
---- QUERY
# Privileges on the uri '$FILESYSTEM_PREFIX/test-warehouse/GRANT_REV_TEST_TBL3' do not
# imply privileges on any location under
# '$FILESYSTEM_PREFIX/test-warehouse/GRANT_REV_TEST_TBL3'.
create table grant_rev_db.test_tbl2_uppercase(i int) location '$FILESYSTEM_PREFIX/test-warehouse/GRANT_REV_TEST_TBL3/test';
---- CATCH
does not have privileges to access: $NAMENODE/test-warehouse/GRANT_REV_TEST_TBL3/test
====
---- QUERY
show tables in grant_rev_db
---- RESULTS
'test_tbl1'
'test_tbl2'
'test_tbl_uppercase'
---- TYPES
STRING
====
---- QUERY
# IMPALA-1670: User does not have privileges to access URI when adding partitions
create table grant_rev_db.test_tbl_partitioned(i int) partitioned by (j int);
alter table grant_rev_db.test_tbl_partitioned add
partition (j=1)
partition (j=2) location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_prt';
---- CATCH
does not have privileges to access: $NAMENODE/test-warehouse/grant_rev_test_prt
====
---- USER
admin
---- QUERY
grant all on uri '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_prt'
to grant_revoke_test_ALL_URI;
====
---- QUERY
# Should now have privileges to add partitions
alter table grant_rev_db.test_tbl_partitioned add
partition (j=1)
partition (j=2) location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_test_prt';
show partitions grant_rev_db.test_tbl_partitioned;
---- RESULTS
'1',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false',regex:.*/j=1,'$ERASURECODE_POLICY'
'2',-1,0,'0B','NOT CACHED','NOT CACHED','TEXT','false','$NAMENODE/test-warehouse/grant_rev_test_prt','$ERASURECODE_POLICY'
'Total',-1,0,'0B','0B','','','','',''
---- TYPES
STRING, BIGINT, BIGINT, STRING, STRING, STRING, STRING, STRING, STRING, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_URI on uri '$NAMENODE/test-warehouse/grant_rev_test_tbl2'
---- RESULTS
'ROLE','grant_revoke_test_ALL_URI','','','','$NAMENODE/test-warehouse/grant_rev_test_tbl2','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_URI on uri '$NAMENODE/test-warehouse/GRANT_REV_TEST_TBL3'
---- RESULTS
'ROLE','grant_revoke_test_ALL_URI','','','','$NAMENODE/test-warehouse/GRANT_REV_TEST_TBL3','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_URI on uri '$NAMENODE/test-warehouse/grant_rev_test_prt'
---- RESULTS
'ROLE','grant_revoke_test_ALL_URI','','','','$NAMENODE/test-warehouse/grant_rev_test_prt','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# Does not result in an AuthorizationException since '$GROUP_NAME' is still assigned the
# role 'grant_revoke_test_ALL_TEST_DB', which is granted the 'ALL' privilege on the
# database 'grant_rev_db'
# TODO(IMPALA-10401): Investigate whether the privilege on the provided uri should be
# verified.
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
---- CATCH
Database already exists: grant_rev_db
====
---- QUERY
# To create a database server-level privileges are required.
create database grant_rev_db2 location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db2.db'
---- CATCH
does not have privileges to execute 'CREATE' on: grant_rev_db2
====
---- USER
admin
---- QUERY
# Currently dropping the role does not remove its associated privileges.
drop role grant_revoke_test_ALL_TEST_DB
---- CATCH
Role 'grant_revoke_test_ALL_TEST_DB' can not be deleted as it is referenced in one or more policies
====
---- USER
admin
---- QUERY
# We have to manually remove the privilege associated with the role
# 'grant_revoke_test_ALL_TEST_DB' before removing it.
revoke all on database grant_rev_db from grant_revoke_test_ALL_TEST_DB;
drop role grant_revoke_test_ALL_TEST_DB;
====
---- QUERY
# Recall that the owner of the database 'grant_rev_db' has been changed to 'admin'.
show tables in grant_rev_db
---- CATCH
does not have privileges to access: grant_rev_db.*
====
---- QUERY
# The user 'getuser()' can select the data from the table 'grant_rev_db.test_tbl1'
# because 'getuser()' is still the owner of 'grant_rev_db.test_tbl1'.
select * from grant_rev_db.test_tbl1
---- RESULTS
---- TYPES
INT
====
---- USER
admin
---- QUERY
# Up to this point, the owner of the tables 'grant_rev_db.test_tbl1' and
# 'grant_rev_db.test_tbl1' is the user 'getuser()'. Changing the owner of these tables to
# the user 'admin' prevents 'getuser()' from accessing the data in those tables.
alter table grant_rev_db.test_tbl1 set owner user admin;
alter table grant_rev_db.test_tbl2 set owner user admin;
====
---- QUERY
# After changing the owner of the table 'grant_rev_db.test_tbl1' to the user 'admin',
# the user 'getuser()' can no longer select the data from 'grant_rev_db.test_tbl1'.
select * from grant_rev_db.test_tbl1
---- CATCH
does not have privileges to execute 'SELECT' on: grant_rev_db.test_tbl1
====
---- USER
admin
---- QUERY
grant role grant_revoke_test_SELECT_INSERT_TEST_TBL to group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
GRANT SELECT ON TABLE grant_rev_db.test_tbl1 TO grant_revoke_test_SELECT_INSERT_TEST_TBL
====
---- QUERY
# This query succeeds since the user 'getuser()' has been granted the role
# 'grant_revoke_test_SELECT_INSERT_TEST_TBL', which in turn has been granted the SELECT
# privilege on the table 'grant_rev_db.test_tbl1'.
select * from grant_rev_db.test_tbl1
---- RESULTS
---- TYPES
INT
====
---- QUERY
# The user 'getuser()' should not be able to select the data from the table
# 'grant_rev_db.test_tbl2'.
select * from grant_rev_db.test_tbl2
---- CATCH
does not have privileges to execute 'SELECT' on: grant_rev_db.test_tbl2
====
---- QUERY
insert overwrite grant_rev_db.test_tbl1 select 1
---- CATCH
does not have privileges to execute 'INSERT' on: grant_rev_db.test_tbl1
====
---- USER
admin
---- QUERY
GRANT INSERT ON TABLE grant_rev_db.test_tbl1 TO grant_revoke_test_SELECT_INSERT_TEST_TBL
====
---- QUERY
show grant role grant_revoke_test_SELECT_INSERT_TEST_TBL on table grant_rev_db.test_tbl1
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_SELECT_INSERT_TEST_TBL','grant_rev_db','test_tbl1','*','','','','','insert',false,regex:.+
'ROLE','grant_revoke_test_SELECT_INSERT_TEST_TBL','grant_rev_db','test_tbl1','*','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
insert overwrite grant_rev_db.test_tbl1 select 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
====
---- QUERY
select * from grant_rev_db.test_tbl1
---- RESULTS
1
---- TYPES
INT
====
---- USER
test_user
---- QUERY
create role some_test_role
---- CATCH
User test_user does not have permission for this operation
====
---- USER
test_user
---- QUERY
drop role grant_revoke_test_ALL_SERVER
---- CATCH
User test_user does not have permission for this operation
====
---- USER
test_user
---- QUERY
# A non-Ranger administrator should not be able to tell from the result that the role
# does not exist.
drop role grant_revoke_test_NON_EXISTING
---- CATCH
User test_user does not have permission for this operation
====
---- USER
test_user
---- QUERY
grant role grant_revoke_test_ALL_SERVER to group `$GROUP_NAME`
---- CATCH
User doesn't have permissions to grant role grant_revoke_test_ALL_SERVER
====
---- USER
test_user
---- QUERY
revoke role grant_revoke_test_ALL_SERVER from group `$GROUP_NAME`
---- CATCH
User doesn't have permissions to revoke role grant_revoke_test_ALL_SERVER
====
---- USER
non_owner
---- QUERY
# Grantor is required to exist in Ranger and thus we set the user to 'non_owner', which
# is currently a user created in Ranger in Impala's development environment.
grant all on server to grant_revoke_test_ALL_SERVER
---- CATCH
User doesn't have necessary permission to grant access
====
---- USER
non_owner
---- QUERY
# Grantor is required to exist in Ranger and thus we set the user to 'non_owner', which
# is currently a user created in Ranger in Impala's development environment.
revoke all on server from grant_revoke_test_ALL_SERVER
---- CATCH
User doesn't have necessary permission to revoke access
====
---- USER
admin
---- QUERY
# Set up a role to test the WITH GRANT OPTION.
# Note that the group 'non_owner' and the user 'non_owner' are created in Ranger in
# Impala's development environment and that the group 'non_owner' is a group to which the
# user 'non_owner' belongs according to the user-to-groups mapper provided for impalad
# and catalogd via the argument of "--use_customized_user_groups_mapper_for_ranger".
create role grant_revoke_test_NON_OWNER;
grant role grant_revoke_test_NON_OWNER to group non_owner;
grant all on database functional to grant_revoke_test_NON_OWNER WITH GRANT OPTION;
====
---- USER
non_owner
---- QUERY
# There should only be one role that exists for non_owner.
show current roles
---- RESULTS
'grant_revoke_test_NON_OWNER'
---- TYPES
STRING
====
---- USER
non_owner
---- QUERY
# This privilege is actually active.
show databases
---- RESULTS
'default','Default Hive database'
'functional',''
---- TYPES
STRING,STRING
====
---- USER
non_owner
---- QUERY
# The non_owner user should be able to grant/revoke child privileges.
grant all on table functional.alltypes to grant_revoke_test_NON_OWNER
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_NON_OWNER on database functional
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_NON_OWNER','functional','','','','','','*','all',true,regex:.+
'ROLE','grant_revoke_test_NON_OWNER','functional','*','*','','','','','all',true,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Note that the column of 'grant_option' is false for this privilege.
show grant role grant_revoke_test_NON_OWNER on table functional.alltypes
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_NON_OWNER','functional','alltypes','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
revoke all on table functional.alltypes from grant_revoke_test_NON_OWNER
====
---- USER
non_owner
---- QUERY
# User should not be able to grant privileges outside of this scope of the database
# 'functional'.
grant all on table functional_seq.alltypes to grant_revoke_test_NON_OWNER
---- CATCH
User doesn't have necessary permission to grant access
====
---- USER
non_owner
---- QUERY
# Also cannot create/drop/grant roles
create role grant_revoke_test_NON_OWNER2
---- CATCH
User non_owner does not have permission for this operation
====
---- USER
non_owner
---- QUERY
# Also cannot create/drop/grant roles
grant role grant_revoke_test_NON_OWNER to group non_owner
---- CATCH
User doesn't have permissions to grant role grant_revoke_test_NON_OWNER
====
---- USER
admin
---- QUERY
# Revoke the GRANT OPTION and verify the user can no longer GRANT or REVOKE
revoke grant option for all on database functional from grant_revoke_test_NON_OWNER;
refresh authorization;
====
---- USER
non_owner
---- QUERY
grant all on table functional.alltypes to grant_revoke_test_NON_OWNER
---- CATCH
User doesn't have necessary permission to grant access
====
---- USER
non_owner
---- QUERY
# This privilege is actually active.
show databases
---- RESULTS
'default','Default Hive database'
'functional',''
---- TYPES
STRING,STRING
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Also, privilege still exists, but grant option is set to false.
show grant role grant_revoke_test_NON_OWNER on database functional
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_NON_OWNER','functional','','','','','','*','all',false,regex:.+
'ROLE','grant_revoke_test_NON_OWNER','functional','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# After the following two statements, there is no role assigned to the group
# '$GROUP_NAME' to which the user 'getuser()' belongs.
REVOKE ROLE grant_revoke_test_ALL_URI FROM GROUP `$GROUP_NAME`;
REVOKE ROLE grant_revoke_test_SELECT_INSERT_TEST_TBL FROM GROUP `$GROUP_NAME`;
---- RESULTS
'Role has been revoked.'
====
---- USER
admin
---- QUERY
GRANT ROLE grant_revoke_test_ALL_SERVER TO GROUP `$GROUP_NAME`
---- RESULTS
'Role has been granted.'
====
---- QUERY
show current roles
---- RESULTS: VERIFY_IS_SUBSET
'grant_revoke_test_ALL_SERVER'
---- TYPES
STRING
====
---- QUERY
# Create a table with multiple columns to test column-level security.
create table grant_rev_db.test_tbl3(a int, b int, c int, d int, e int) partitioned by (x int, y int)
---- RESULTS
'Table has been created.'
====
---- USER
admin
---- QUERY
GRANT SELECT (a, b, x) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been granted.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Note that after IMPALA-8587, the related privileges with regard to the specified
# resource will be shown as well.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.a
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','a','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.b
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','b','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.x
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','x','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# After granting the privileges on (c, d, y), we will check if they are indeed granted in
# the following 3 SHOW GRANT statements.
GRANT SELECT (c, d, y) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been granted.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.c
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','c','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.d
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','d','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.y
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','y','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
GRANT SELECT (a, a, e, x) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been granted.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Verify that the privilege on 'grant_rev_db.test_tbl3.e' is indeed granted.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.e
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','e','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Revoke SELECT privileges from columns.
# Verify the privileges on (a, b, y) are indeed revoked in the following 3 queries.
REVOKE SELECT (a, b, b, y) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been revoked.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.a
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.b
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.y
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Verify the privileges on (b, c, x) are indeed revoked in the following 3 queries.
# Recall that the privilege on (a) had been revoked previously.
REVOKE SELECT (a, b, c, x) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been revoked.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.b
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.c
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.x
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Verify the privileges on (d, e) are indeed revoked in the following 2 queries.
# Recall that the privilege on (a) had been revoked previously.
REVOKE SELECT (a, b, c, d, e) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_ALL_SERVER;
---- RESULTS
'Privilege(s) have been revoked.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.d
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.e
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Grant SELECT on table to 'non_owner' without 'WITH GRANT' option.
GRANT ROLE grant_revoke_test_NON_OWNER TO GROUP non_owner;
GRANT SELECT ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_NON_OWNER;
REVOKE ALL ON DATABASE functional FROM grant_revoke_test_NON_OWNER;
---- RESULTS
'Privilege(s) have been revoked.'
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Verify that the SELECT privilege is indeed granted to the role
# 'grant_revoke_test_NON_OWNER'.
show grant role grant_revoke_test_NON_OWNER on table grant_rev_db.test_tbl3
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_NON_OWNER','grant_rev_db','test_tbl3','*','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
non_owner
---- QUERY
GRANT SELECT (a) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_NON_OWNER
---- CATCH
User doesn't have necessary permission to grant access
====
---- USER
admin
---- QUERY
REVOKE SELECT ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_NON_OWNER
---- RESULTS
'Privilege(s) have been revoked.'
====
---- USER
admin
---- QUERY
# Grant SELECT on table to 'non_owner' with 'WITH GRANT' option.
GRANT SELECT ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_NON_OWNER WITH GRANT OPTION
---- RESULTS
'Privilege(s) have been granted.'
====
---- USER
non_owner
---- QUERY
GRANT SELECT (a) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_NON_OWNER
---- RESULTS
'Privilege(s) have been granted.'
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Verify that the privilege on the column 'grant_rev_db.test_tbl3.a' is indeed granted.
# TODO: Notice that at this point, the role 'grant_revoke_test_NON_OWNER' has also been
# granted the SELECT privilege on the table 'grant_rev_db.test_tbl3'. We need to
# investigate whether this is the expected behavior after IMPALA-8587.
show grant role grant_revoke_test_NON_OWNER on column grant_rev_db.test_tbl3.a
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_NON_OWNER','grant_rev_db','test_tbl3','a','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Grant the SELECT privileges on the columns (a, c, e) and verify in the following 3
# queries that the privileges are granted with the column of 'grant_option' being true.
GRANT SELECT (a, c, e) ON TABLE grant_rev_db.test_tbl3 TO grant_revoke_test_ALL_SERVER WITH GRANT OPTION
---- RESULTS
'Privilege(s) have been granted.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.a
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','a','','','','','select',true,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.c
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','c','','','','','select',true,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.e
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','e','','','','','select',true,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# Revoke the granting privilege on the columns (a, c) and veviry in the following 2
# queries that the column of 'grant_option' is indeed false.
REVOKE GRANT OPTION FOR SELECT (a, c) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_ALL_SERVER
---- RESULTS
'Privilege(s) have been revoked.'
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.a
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','a','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER on column grant_rev_db.test_tbl3.c
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER','*','*','*','','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER','grant_rev_db','test_tbl3','c','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# At this point, the group '$GROUP_NAME' is still assigned the role of
# 'grant_revoke_test_ALL_SERVER'.
revoke role grant_revoke_test_ALL_SERVER from group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
# Test 'grant all on server' with explicit server name specified.
create role grant_revoke_test_ALL_SERVER1
---- RESULTS
'Role has been created.'
====
---- USER
admin
---- QUERY
grant all on server server1 to grant_revoke_test_ALL_SERVER1
====
---- USER
admin
---- QUERY
# Grant role to the group '$GROUP_NAME' to which the user 'getuser()' belongs.
grant role grant_revoke_test_ALL_SERVER1 to group `$GROUP_NAME`
====
---- USER
admin
---- QUERY
# We will be testing whether the user 'getuser()' is able to drop and then create the
# database 'grant_rev_db'. Thus, we have to revoke the privileges on the resources under
# the database 'grant_rev_db' in advance. Otherwise, we won't be able to revoke the
# privileges after dropping the database since revoking the privileges on those
# non-existing resources would result AnalysisException's. If we are not able to remove
# these privileges, then we won't be able to drop those roles they reference after the
# execution of this test file, leaving some roles and privileges that are not well-defined.
REVOKE SELECT ON TABLE grant_rev_db.test_tbl1 FROM grant_revoke_test_SELECT_INSERT_TEST_TBL;
REVOKE INSERT ON TABLE grant_rev_db.test_tbl1 FROM grant_revoke_test_SELECT_INSERT_TEST_TBL;
REVOKE SELECT ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_NON_OWNER;
REVOKE SELECT (a) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_NON_OWNER;
REVOKE SELECT (a, c, e) ON TABLE grant_rev_db.test_tbl3 FROM grant_revoke_test_ALL_SERVER;
====
---- QUERY
# Verify that the user 'getuser()' is able to drop the database.
drop database grant_rev_db cascade
====
---- QUERY
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
====
---- USER
admin
---- QUERY
# To prevent the user 'getuser()' (which belongs to the group '$GROUP_NAME') from
# performing any operation on the database 'grant_rev_db', we also need to alter
# the owner of 'grant_rev_db' since 'getuser()' is the owner of this database, which by
# default is allowed by Ranger to perform any operation on the database.
revoke role grant_revoke_test_ALL_SERVER1 from group `$GROUP_NAME`;
alter database grant_rev_db set owner user admin;
====
---- QUERY
create database grant_rev_db location '$FILESYSTEM_PREFIX/test-warehouse/grant_rev_db.db'
---- CATCH
does not have privileges to execute 'CREATE' on: grant_rev_db
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_ALL_SERVER1 on server
---- RESULTS: VERIFY_IS_EQUAL_SORTED
'ROLE','grant_revoke_test_ALL_SERVER1','','','','','*','*','','rwstorage',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER1','','','','*','','','','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER1','*','','','','','','*','all',false,regex:.+
'ROLE','grant_revoke_test_ALL_SERVER1','*','*','*','','','','','all',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
revoke all on server server1 from grant_revoke_test_ALL_SERVER1
====
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
# Verify that the privilege on server is indeed revoked.
show grant role grant_revoke_test_ALL_SERVER1 on server
---- RESULTS: VERIFY_IS_EQUAL_SORTED
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
admin
---- QUERY
# IMPALA-4951: make sure database is visible to a user having only column level access
# to a table in the database
grant role grant_revoke_test_ALL_SERVER to group non_owner
---- RESULTS
'Role has been granted.'
====
---- USER
admin
---- QUERY
create role grant_revoke_test_COLUMN_PRIV
====
---- USER
admin
---- QUERY
grant role grant_revoke_test_COLUMN_PRIV to group non_owner
====
---- USER
non_owner
---- QUERY
create database if not exists grant_rev_db;
====
---- USER
non_owner
---- QUERY
create table grant_rev_db.test_tbl4 (col1 int, col2 int)
====
---- USER
admin
---- QUERY
revoke role grant_revoke_test_ALL_SERVER from group non_owner
====
---- USER
non_owner
---- QUERY
# We have to specify the resource for SHOW GRANT since SHOW GRANT is not supported
# without a defined resource in Ranger.
show grant role grant_revoke_test_COLUMN_PRIV on table grant_rev_db.test_tbl4
---- RESULTS
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
non_owner
---- QUERY
# grant_rev_db is not visible as user does not have any level of access to it
show databases
---- RESULTS
'default','Default Hive database'
---- TYPES
STRING,STRING
====
---- USER
admin
---- QUERY
grant select(col1) on table grant_rev_db.test_tbl4 to role grant_revoke_test_COLUMN_PRIV
====
---- USER
non_owner
---- QUERY
show grant role grant_revoke_test_COLUMN_PRIV on column grant_rev_db.test_tbl4.col1
---- RESULTS
'ROLE','grant_revoke_test_COLUMN_PRIV','grant_rev_db','test_tbl4','col1','','','','','select',false,regex:.+
---- LABELS
principal_type, principal_name, database, table, column, uri, storage_type, storage_uri, udf, privilege, grant_option, create_time
---- TYPES
STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOLEAN, STRING
====
---- USER
non_owner
---- QUERY
# Verify that the database 'grant_rev_db' is visible to the user 'non_owner'.
show databases
---- RESULTS
'default','Default Hive database'
'grant_rev_db',''
---- TYPES
STRING,STRING
====
---- USER
admin
---- QUERY
# We will be testing whether the user 'getuser()' is able to drop a database if the group
# 'getuser()' belongs to is assigned the role 'grant_revoke_test_ALL_SERVER', which is
# granted the ALL privilege on the server. Before dropping a database, the user also has
# to revoke every privilege granted on the resources of the database and thus we grant
# the ALL privilege with the grant option.
grant all on server to role grant_revoke_test_ALL_SERVER with grant option;
grant role grant_revoke_test_ALL_SERVER to group `$GROUP_NAME`;
---- RESULTS
'Role has been granted.'
====
---- QUERY
# The user 'getuser()' has to revoke the privileges on the resources under the database
# 'grant_rev_db' before dropping the database. Otherwise, the revocation would fail due
# to an AnalysisException thrown because 'grant_rev_db' does not exist.
revoke select(col1) on table grant_rev_db.test_tbl4 from role grant_revoke_test_COLUMN_PRIV;
drop database if exists grant_rev_db cascade;
====
---- USER
admin
---- QUERY
revoke role grant_revoke_test_ALL_SERVER from group `$GROUP_NAME`
---- RESULTS
'Role has been revoked.'
====
---- USER
admin
---- QUERY
revoke role grant_revoke_test_COLUMN_PRIV from group `$GROUP_NAME`
====
---- QUERY
# Verify that the user 'getuser()', which belongs to the group '$GROUP_NAME' is not
# assigned any role afterwards.
show current roles
---- RESULTS
====