From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Kirill Shcherbatov <kshcherbatov@tarantool.org>, tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH v1 1/1] sql: check access rights of table in VIEW Date: Wed, 24 Apr 2019 16:48:11 +0300 [thread overview] Message-ID: <94baf90f-acd5-04ae-0bcd-8f800e6518c4@tarantool.org> (raw) In-Reply-To: <3f7dd91795bf6154382cce7732a1016fc24ebcdc.1556108155.git.kshcherbatov@tarantool.org> Thanks for the patch! On 24/04/2019 15:16, Kirill Shcherbatov wrote: > When access is performed using VIEW, access rights should be > checked against table[s] which it is referencing, not against > VIEW itself. Added a test case to verify this behaviour. > > Closes #4104 > --- > Branch: http://github.com/tarantool/tarantool/tree/kshch/gh-4104-view-access-check > Issue: https://github.com/tarantool/tarantool/issues/4104 > > test/sql/gh-4104-view-access-check.result | 64 +++++++++++++++++++++ > test/sql/gh-4104-view-access-check.test.lua | 21 +++++++ > 2 files changed, 85 insertions(+) > create mode 100644 test/sql/gh-4104-view-access-check.result > create mode 100644 test/sql/gh-4104-view-access-check.test.lua > > diff --git a/test/sql/gh-4104-view-access-check.result b/test/sql/gh-4104-view-access-check.result > new file mode 100644 > index 000000000..1eb9bebe8 > --- /dev/null > +++ b/test/sql/gh-4104-view-access-check.result > @@ -0,0 +1,64 @@ > +test_run = require('test_run').new() 1. You do not use this object, so it can be omitted. > +--- > +... > +box.execute("CREATE TABLE supersecret(id INT PRIMARY KEY, data TEXT);") > +--- > +- row_count: 1 > +... > +box.execute("CREATE TABLE supersecret2(id INT PRIMARY KEY, data TEXT);") > +--- > +- row_count: 1 > +... > +box.execute("INSERT INTO supersecret VALUES(1, 'very very big secret');") > +--- > +- row_count: 1 > +... > +box.execute("INSERT INTO supersecret2 VALUES(1, 'very big secret 2');") > +--- > +- row_count: 1 > +... > +box.execute("CREATE VIEW supersecret_leak AS SELECT * FROM supersecret, supersecret2;") > +--- > +- row_count: 1 > +... > +LISTEN = require('uri').parse(box.cfg.listen) > +--- > +... > +remote = require 'net.box' > +--- > +... > +cn = remote.connect(LISTEN.host, LISTEN.service) 2. You pass here box.cfg.listen directly, without splitting into parts. Please, consider my review fixes below and on the branch: =================================================================== diff --git a/test/sql/gh-4104-view-access-check.result b/test/sql/gh-4104-view-access-check.result index 1eb9bebe8..d38b633c3 100644 --- a/test/sql/gh-4104-view-access-check.result +++ b/test/sql/gh-4104-view-access-check.result @@ -1,6 +1,3 @@ -test_run = require('test_run').new() ---- -... box.execute("CREATE TABLE supersecret(id INT PRIMARY KEY, data TEXT);") --- - row_count: 1 @@ -21,13 +18,10 @@ box.execute("CREATE VIEW supersecret_leak AS SELECT * FROM supersecret, superse --- - row_count: 1 ... -LISTEN = require('uri').parse(box.cfg.listen) ---- -... remote = require 'net.box' --- ... -cn = remote.connect(LISTEN.host, LISTEN.service) +cn = remote.connect(box.cfg.listen) --- ... box.schema.user.grant('guest','read', 'space', 'SUPERSECRET_LEAK') diff --git a/test/sql/gh-4104-view-access-check.test.lua b/test/sql/gh-4104-view-access-check.test.lua index 2a44516ce..d1d19fc28 100644 --- a/test/sql/gh-4104-view-access-check.test.lua +++ b/test/sql/gh-4104-view-access-check.test.lua @@ -1,13 +1,10 @@ -test_run = require('test_run').new() - box.execute("CREATE TABLE supersecret(id INT PRIMARY KEY, data TEXT);") box.execute("CREATE TABLE supersecret2(id INT PRIMARY KEY, data TEXT);") box.execute("INSERT INTO supersecret VALUES(1, 'very very big secret');") box.execute("INSERT INTO supersecret2 VALUES(1, 'very big secret 2');") box.execute("CREATE VIEW supersecret_leak AS SELECT * FROM supersecret, supersecret2;") -LISTEN = require('uri').parse(box.cfg.listen) remote = require 'net.box' -cn = remote.connect(LISTEN.host, LISTEN.service) +cn = remote.connect(box.cfg.listen) box.schema.user.grant('guest','read', 'space', 'SUPERSECRET_LEAK') cn:execute('SELECT * FROM SUPERSECRET_LEAK')
next prev parent reply other threads:[~2019-04-24 13:48 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-24 12:16 [tarantool-patches] " Kirill Shcherbatov 2019-04-24 13:48 ` Vladislav Shpilevoy [this message] 2019-04-24 14:02 ` [tarantool-patches] " Kirill Shcherbatov 2019-04-24 14:22 ` Vladislav Shpilevoy 2019-04-25 10:32 ` Kirill Yukhin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=94baf90f-acd5-04ae-0bcd-8f800e6518c4@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kshcherbatov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH v1 1/1] sql: check access rights of table in VIEW' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox