АРЕС - RLS мод на компатибилност

Кодот што мора да работи без безбедносен контекст на овластувања треба да се имитира. Достапни се неколку функции и својства за имитирање.
Кога се извршува изјава EXECUTE AS, контекстот на извршување на сесијата се префрла на наведеното најавување или корисничко име. По прекинувачот за контекст, дозволите се проверуваат во однос на токените за најавување и кориснички безбедносни токени за наведената сметка наместо сметката да ја повикува изјавата EXECUTE AS.
Проверете го следниот код:
Select USER_NAME()
execute as user = 'RLS_ALL'
Select USER_NAME()
revert
Select USER_NAME()
Резултат:

 |
Предупредување
Мора да се повика Revert! Корисникот или сметката за најавување се имитираат за времетраењето на извршувањето на сесијата или модулот. После тоа, прекинувачот за контекст се враќа назад.
|
 |
предупредување
Сите функции и методи го менуваат кодот само кога IsRLS = True
|
Истиот код може да се користи на RLS и не-RLS бази на податоци.
- IsRLS: returns True if RLS is enabled on database.
check: select * from [dbo].[fPA_RLSEnabled]()
- Function SQLToSQLRLSAll(ASQL: String): String;
Converts SQL

- ARES.ExecuteStep_RLS_ALL(3);
Кодот во чекор 3 ќе се изврши со користење SQLToSQLRLSAll.
- ExecuteAsUser_RLS_ALLSQL
Користете во исказите за обид-конечно.
- ExecuteAsUser_RLS_ALLSQL(True): execute as user = 'RLS_ALL' statement is run
- ExecuteAsUser_RLS_ALLSQL(False): revert statement is run

- Property TdlDataset.ExceuteAs_RLS_ALL := True;
Код TdlDataset.SQL.Text ќе се изврши со користење SQLToSQLRLSAll.
Related videos:
Video name 1
Related topics:
Row Level Security
How RLS works in practice
Upgrade
Database
Code changes