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)