|
![]() | Prßva a subjekty prßva v SQL | Zjišovßnφ prßv v jazyce SQL | ![]() |
Z hlediska editace subjekt∙ prßv lze rozliÜit tyto Φinnosti:
Z hlediska vztahu prßv k u₧ivateli (resp. subjektu prßv) lze rozliÜit tyto Φinnosti:
GRANT
a REVOKE
.Vytvß°enφ a ruÜenφ u₧ivatel∙ a skupin
U₧ivatele lze vytvo°it SQL p°φkazem CREATE USER
, zruÜit p°φkazem DROP USER
. Nastavit p°φstupovΘ heslo u₧ivateli lze pomocφ funkce Set_password
.
Skupinu u₧ivatel∙ lze vytvo°it SQL p°φkazem CREATE GROUP
, zruÜit p°φkazem DROP GROUP
.
Vztah mezi subjekty prßv
Zjistit nebo zm∞nit vztah mezi dv∞ma subjekty prßv (nap°. za°adit u₧ivatele do skupiny, obsadit skupinu do role) umo₧≥ujφ funkce Set_membership
a Get_membership
P°φklad:
PROCEDURE `INIT_SET_PRIVILS`();
/*******************************************/
// nastavφ vÜem tabulkßm v aplikaci prßva Φφst, psßt, vklßdat a mazat zßznamy
// pro roli Internet_user
BEGIN
DECLARE sqlstr CHAR(500);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
CALL log_write("Init_set_privils - "||sqlstate||' '||Int2str(sqlcode));
END;
FOR row AS INSENSITIVE CURSOR FOR
SELECT T2.tab_name // seznam tabulek
FROM OBJTAB T1, TABTAB T2
WHERE T1.APL_UUID=T2.APL_UUID
AND (Ord(T1.category)=CATEG_APPL) AND (t1.obj_name=CURRENT_APPLICATION)
DO
SET sqlstr = "GRANT DELETE, INSERT, SELECT, UPDATE ON "||row.tab_name||" TO ROLE INTERNET_USER";
CALL SQL_execute(sqlstr); // provΘst dynamicky sestaven² p°φkaz
END FOR;
END
![]() | Prßva a subjekty prßva v SQL | Zjišovßnφ prßv v jazyce SQL | ![]() |