You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In Tarantool 3.0 we introduced the new lua_eval, lua_call, and sql object types for box.schema.user.grant to control access to code execution over the network protocol (IPROTO).
lua_eval
Granting the 'execute' privilege on lua_eval permits the user to execute arbitrary Lua code with the IPROTO_EVAL request.
Granting the 'execute' privilege on lua_call permits the user to call any global (accessible via the _G Lua table) user-defined Lua function with the IPROTO_CALL request. It does not permit the user to call built-in Lua functions, such as loadstring or box.session.su. It permits the user to call any Lua function registered in the _func system space with box.schema.func.create except for persistent functions (functions with a body).
In the scope of tarantool/tarantool#9360, we also made it possible to specify a function name when granting the lua_call privilege. If a function name is specified, access will be granted only to the given function, which may be a built-in function, but still not a persistent function. The function doesn't need to be defined at the time privileges are granted.
Granting the 'execute' privilege on sql permits the user to execute an arbitrary SQL expression with the IPROTO_PREPARE and IPROTO_EXECUTE requests. Without this privilege or the 'execute' privilege granted on universe, the user is not permitted to execute SQL expressions over IPROTO anymore. Note that before Tarantool 3.0 any user (even guest) could execute SQL expressions over IPROTO. It is possible to revert to the old behavior by toggling the sql_priv compat option. Please add a description to https://tarantool.io/compat/sql_priv
With the ```lua_call``` priveledge any user can be given access to non-persistent functions
The function may be defined after the priviledge is given
Fixes#3628
* With the ```lua_call``` priviledge any user can be given access to non-persistent functions
* The function may be defined after the priviledge is given
* Fixes#3628
Uh oh!
There was an error while loading. Please reload this page.
Related dev. issue(s): tarantool/tarantool#8803
Parent doc. issue(s): #3666
Product: Tarantool
Since: 3.0
Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_schema/user_grant/
https://www.tarantool.io/en/doc/latest/dev_guide/internals/iproto/requests/#box-protocol-eval
https://www.tarantool.io/en/doc/latest/dev_guide/internals/iproto/requests/#iproto-call
https://www.tarantool.io/en/doc/latest/dev_guide/internals/iproto/sql/
SME: @ locker
Details
In Tarantool 3.0 we introduced the new
lua_eval
,lua_call
, andsql
object types forbox.schema.user.grant
to control access to code execution over the network protocol (IPROTO).lua_eval
Granting the 'execute' privilege on
lua_eval
permits the user to execute arbitrary Lua code with theIPROTO_EVAL
request.Example:
lua_call
Granting the 'execute' privilege on
lua_call
permits the user to call any global (accessible via the_G
Lua table) user-defined Lua function with theIPROTO_CALL
request. It does not permit the user to call built-in Lua functions, such asloadstring
orbox.session.su
. It permits the user to call any Lua function registered in the_func
system space withbox.schema.func.create
except for persistent functions (functions with a body).Example:
In the scope of tarantool/tarantool#9360, we also made it possible to specify a function name when granting the
lua_call
privilege. If a function name is specified, access will be granted only to the given function, which may be a built-in function, but still not a persistent function. The function doesn't need to be defined at the time privileges are granted.Example:
sql
Granting the 'execute' privilege on
sql
permits the user to execute an arbitrary SQL expression with theIPROTO_PREPARE
andIPROTO_EXECUTE
requests. Without this privilege or the 'execute' privilege granted onuniverse
, the user is not permitted to execute SQL expressions over IPROTO anymore. Note that before Tarantool 3.0 any user (even guest) could execute SQL expressions over IPROTO. It is possible to revert to the old behavior by toggling thesql_priv
compat option. Please add a description to https://tarantool.io/compat/sql_privExample:
Requested by @locker in tarantool/tarantool@ff64d58.
The text was updated successfully, but these errors were encountered: