Gao, Rui-Xian created TRAFODION-2441: ----------------------------------------
Summary: user has only select privilege on a table can do insert/update/delete on the view Key: TRAFODION-2441 URL: https://issues.apache.org/jira/browse/TRAFODION-2441 Project: Apache Trafodion Issue Type: Bug Components: sql-security Affects Versions: 2.2-incubating Environment: hadoop - CDH 5.6 OS -- CentOS 6.7 Reporter: Gao, Rui-Xian Assignee: Roberta Marton a user has only select privilege on the table can do insert/update/delete on the view, then data in base table also get inserted/updated/deleted Reproduce Steps ======================================= 1. connect as trafodion -- create table testtab1(a int, b int); select * from testtab1; grant select on testtab1 to qauser_sqlqaa; showddl testtab1; 2. connect as qauser_sqlqaa -- select * from testtab1; create view v_tab1 as select * from testtab1; showddl v_tab1; insert into v_tab1 values(1,1); select * from v_tab1; select * from testtab1; delete from testtab1; delete from v_tab1; select * from testtab1; Test OutPut ======================================== User Name: trafodion Password: Role Name [Primary Role]: Connected to EsgynDB Advanced SQL>create table testtab1(a int, b int); --- SQL operation complete. SQL>select * from testtab1; --- 0 row(s) selected. SQL>grant select on testtab1 to qauser_sqlqaa; --- SQL operation complete. SQL>showddl testtab1; CREATE TABLE TRAFODION.SEABASE.TESTTAB1 ( A INT DEFAULT NULL NOT SERIALIZED , B INT DEFAULT NULL NOT SERIALIZED ) ATTRIBUTES ALIGNED FORMAT ; -- GRANT SELECT, INSERT, DELETE, UPDATE, REFERENCES ON TRAFODION.SEABASE.TESTTAB1 TO DB__ROOT WITH GRANT OPTION; GRANT SELECT ON TRAFODION.SEABASE.TESTTAB1 TO QAUSER_SQLQAA; --- SQL operation complete. SQL>connect qauser_sqlqaa/QAPassword; Connected to EsgynDB Advanced SQL>select * from testtab1; --- 0 row(s) selected. SQL>create view v_tab1 as select * from testtab1; --- SQL operation complete. SQL>showddl v_tab1; // user only has SELECT privilege on the view CREATE VIEW TRAFODION.SEABASE.V_TAB1 AS SELECT TRAFODION.SEABASE.TESTTAB1.A, TRAFODION.SEABASE.TESTTAB1.B FROM TRAFODION.SEABASE.TESTTAB1 ; -- GRANT SELECT ON TRAFODION.SEABASE.V_TAB1 TO QAUSER_SQLQAA; --- SQL operation complete. SQL>insert into v_tab1 values(1,1); // user can insert data into view --- 1 row(s) inserted. SQL>select * from v_tab1; A B ----------- ----------- 1 1 --- 1 row(s) selected. SQL>select * from testtab1; // data in base table A B ----------- ----------- 1 1 --- 1 row(s) selected. SQL>delete from testtab1; // expected, user doesn’t have privilege to delete data from base table *** ERROR[4481] The user does not have DELETE privilege on table or view TRAFODION.SEABASE.TESTTAB1. [2017-01-12 10:39:11] SQL>delete from v_tab1; // user doesn’t have delete privilege but can delete data from the view --- 1 row(s) deleted. SQL>select * from testtab1; // data in base table got deleted --- 0 row(s) selected. -- This message was sent by Atlassian JIRA (v6.3.4#6332)