sql >> Databáze >  >> RDS >> Oracle

Jak napsat politiku v Oracle SQL, která omezuje přístup k tabulce pro nevlastníky?

Nemusíte pro to dělat absolutně nic.

Tabulky (a data v nich uložená) vlastní uživatel A. Nikdo je nevidí pokud uživatel A uděluje určitá oprávnění jiným uživatelům, například uživateli B.

Toho lze dosáhnout udělením výběrového oprávnění, tj.

grant select on my_table to user_B;

a uživatel B by pak načetl data jako

select * from user_A.my_table;

Uživatel B nebude moci upravovat data (protože mu nebylo povoleno vložení/aktualizace/smazání).

Kromě toho můžete (jako uživatel A) vytvořit pohled který vybere pouze část dat, např.

create view v_my_table as 
  select * 
  from my_table
  where score > 4;

grant select on v_my_table to user_B;

Pokud tak učiníte, uživatel B uvidí pouze řádky, jejichž skóre je vyšší než 4.

Pokud je tam uživatel C, nevidí absolutně nic. Pokud byste chtěli, aby viděl nějaká data, udělali byste to, co jste již udělali s uživatelem B – udělili určitá oprávnění.

Existuje však možnost nechat uživatele B „předat“ oprávnění dalším uživatelům – použili byste with grant option , např.

grant select on my_table to user_B with grant option;

To by uživateli B umožnilo udělit výběr jiným uživatelům, např.

grant select on user_A.my_table to user_C;

Nakonec (mluvíme o této odpovědi), pokud existuje mnoho uživatelů, kterým byste chtěli udělit taková oprávnění, můžete vytvořit role . Pak byste udělili oprávnění roli a udělili roli dalším uživatelům. Umožňuje vám upravovat role v závislosti na přání vašich (a ostatních uživatelů).

create role my_role;
grant select on my_table to my_role;

Pro začátek můžete například udělit select na my_role a poté udělte my_role uživatelům B, C a D.

grant my_role to user_B;
grant my_role to user_C;

Později můžete udělit insert na my_role

grant insert on my_table to my_role;

a všem uživatelům byla udělena my_role bude automaticky schopen vkládat řádky do my_table uživatele A.




  1. Importujte data do databáze MySQL

  2. Jak připojit flutter k databázi localhost mysql

  3. Potřebujete najít další a předchozí pracovní den v oracle

  4. Pomocí VBA vyhledejte verzi ovladače MySQL ODBC nainstalovaného ve Windows