Pogledaj upute za PANTHEON™

 Categories
 Početna stranica
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Expand]Vodič kroz Datalab PANTHEON Farming
  [Expand]Vodič za mobilni POS
  [Collapse]Vodič po DataLab PANTHEON™-u
   [Expand]Pomoć
   [Expand]Postavke
   [Expand]Narudžbe
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]Servis
   [Expand]POS
   [Expand]Novac
   [Expand]Kadrovi
   [Expand]Radna površina
   [Expand]Analize
   [Expand]Plansko-analitički alati ZEUS
   [Expand]Poruke programa
   [Expand]Dodatni programi
   [Collapse]Sistemska okolina
     MS SQL server
    [Collapse]SQL poslužitelj
      Instalacija MS SQL Management Studio
      Nadogradnja SQL servera na verziju 2019
     [Expand]Instalacija SQL poslužitelja
      Promjena redoslijeda sortiranja na SQL poslužitelju
      SQL Server Agent
     [Collapse]Sigurnosna politika
       Kako nadogradnja utječe na baze podataka
       Windows NT autorizacija
       SQL Server autorizacija
       Kreiranje korisničkih prijava
      [Collapse]Row Level Security
        Kako RLS funkcionira u praksi
        Unaprijediti
        Baza podataka
        Otklanjanje poteškoća
        Promjene koda
        ARES - RLS Kompatibilni Mod
        RLS Pitanja i Odgovori
       Fixed server role
       Fixed database role
       Postavke prava SQL poslužitelja
       SQL korisnici u DataLab PANTHEON-u
     [Expand]Sigurnosna politika na MS SQL
     [Expand]Biblioteka korisnih T-SQL naredbi
    [Expand]Postavljanje (instalacija)
    [Expand]Automatsko izvođenje
    [Expand]ODBC sučelje
    [Expand]PANTHEON™
    [Expand]DataLab Utilities
    [Expand]Administracija baze podataka
    [Expand]Strojna oprema
   [Expand]Dodatni programi
   [Expand]Stari proizvodi
    Riječnik pojmova
  [Expand]Vodič po PANTHEON Vet
 [Expand]PANTHEON korisnički priručnici
[Expand]PANTHEON Web
[Expand]PANTHEON Granule

Load Time: 1468,7836 ms
print   |
Label

RLS Pitanja & Odgovori

              

 

  1. RLS_ALL korisnik
  2. Dodavanje korisnika
  3. Brisanje korisnika
  4. Savjeti i trikovi

 

1. RLS_ALL korisnik

RLS_ALL je poseban korisnik baze podataka bez ikakvog mapiranja prijave na poslužitelju. To znači da se ne možete prijaviti u SQL Server s njim.

Jedini način da ga koristite je s EXECUTE AS USER = 'RLS_ALL'

Ima pristup svim podacima koji su odvojeni RLS funkcionalnošću.

Ovaj korisnik se koristi, na primjer, za stvaranje agregata na podacima koji pripadaju više korisnika.

Na primjer, izvještaj o ukupnoj prodaji za sve zaposlenike za godinu dana, ali svaki zaposlenik može vidjeti samo svoju vlastitu prodaju.

Da bi korisnik Pantheon mogao koristiti EXECUTE AS USER = 'RLS_ALL', mora imati GRANT IMPERSONATE dozvole na RLS_ALL korisnika.

SAMO korisnici u Pantheonu trebaju imati GRANT IMPERSONATE dozvole.

Davanje tih dozvola ugrađenim SQL Server (kao što su SA, itd.) računima obično nije potrebno.

  • SAMO Pantheon korisnici mogu čitati podatke iz RLS zaštićenih tablica

SA korisnik (ako nije mapiran na PA korisnika) nema pristup zaštićenim podacima.
Bilo koji RLS zaštićeni podaci mogu se čitati samo od strane PA korisnika s odgovarajućim ovlastima.

Kako bi se koristile vanjske veze na bazu podataka, veza na bazu podataka mora se izvršiti s PANTHEON korisnikom povezanom s korisnikom baze podataka.

2. Dodavanje korisnika

Dodavanje korisnika za pristup drugim aplikacijama u PANTHEON bazi podataka.

Možemo dodati korisnika s PANTHEON:

Vidi sljedeće upute: Dodavanje korisnika i Postavljanje ovlasti za korisnika.

Za složenije postavke, gdje želimo dodati korisnika u više baza podataka.

Dodavanje korisnika i naplaćivanje ovlasti bez prava. Postavljamo dozvole korisnika s PANTHEON:

 

declare
    @v_cUserId sysname = #UserName#
,    @p_lang_id varchar(2)
--
,    @p_subject varchar(30) = NULL
--
,    @p_user_id int = NULL  
,    @p_contact_id int = NULL  

POČNI
 
  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;  

    SET @p_user_id = (SELECT anUserId FROM [dbo].[tHE_SetSubjContact] WHERE acUserId = @v_cUserId);

    set @p_contact_id = NULL;

    IF (@p_user_id IS NULL)
    BEGIN
        Exec ppa_user_create @v_cUserId, @v_cUserId, 1;
    
    select @p_subject = P.acOurCompany, @p_lang_id = PS.acLocalization from tPA_SysParam P, tPA_SysParamSys PS;
    
    SELECT @p_user_id = anUserId FROM [dbo].[tHE_SetSubjContact] WHERE acUserId = @v_cUserId;


      EXEC [dbo].[ppa_user_save]
          @p_user_id = @p_user_id OUTPUT -- @p_user_id int OUTPUT
      ,    @p_contact_id = @p_contact_id OUTPUT -- @p_contact_id int OUTPUT
      ,    @p_user_name = @v_cUserId -- sysname
      ,    @p_lang_id = @p_lang_id --  varchar(2)
      ,    @p_active = 'T' --  char(1)
      ,    @p_license_server = Null --  sysname = NULL
      ,    @p_license_database = Null --  sysname = NULL
      ,    @p_profile = Null --  varchar(10) = NULL
      ,    @p_additpersonmark = Null --  varchar(100) = NULL
      ,    @p_code = Null --  varchar(20)= NULL
      ,    @p_pin = Null --  varchar(11) = NULL
      ,    @p_foreigner = 'F'
      --
      ,    @p_subject = @p_subject --  varchar(30) = NULL
      ,    @p_name = @v_cUserId --  varchar(30) = NULL
      ,    @p_surName = @v_cUserId --  varchar(30) = NULL
      ;

    exec [dbo].[ppa_security_insert] @p_user_id, False, False;--nema ovlasti
    exec ppa_security_save @p_user_id, False, False;
    print @p_user_id
    exec [dbo].[ppa_authorization_security_save]
     NULL -- @p_authorization varchar(50)
    , @p_user_id -- @p_principal_id int
    , 0 -- @p_principal_type bit
    , NULL -- @p_parent_id varchar(50)
    , 0 -- @p_acquired bit
    , 0 -- @p_inherited bit
    , 0 -- @p_permission_select bit
    , 0 -- @p_permission_update bit
    , 0 -- @p_permission_delete bit
    , 32767 -- @p_permission_update_period int
    , 1 -- @p_propagate_entities bit = 0
    , Null -- @p_licence char(2) = 'MF'

    exec pPA_SysSQLLoginPswdChange @v_cUserId, Null, @v_cUserId;

    EXEC sp_addrolemember N'db_owner', @v_cUserId;
    EXEC sp_addrolemember N'db_datawriter', @v_cUserId;
    EXEC sp_addrolemember N'db_datareader', @v_cUserId;

  end;

  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;  
  select * from tPA_SetDoctypeUserSecurity where anUserId = @p_user_id;
end;

 

3. Brisanje korisnika

 

declare
    @v_cUserId sysname = #USER#,
  @command nvarchar(max);
begin
    select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;

    delete from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;

    IF (DATABASE_PRINCIPAL_ID(@v_cUserId) IS NOT NULL)
    BEGIN
        SET @command = N'DROP USER ' + QUOTENAME(@v_cUserId) + N';'
        EXEC(@command);
    END;


    IF (SUSER_ID(@v_cUserId) IS NOT NULL)
    BEGIN
        SET @command = N'DROP LOGIN ' + QUOTENAME(@v_cUserId) + N';'
        EXEC(@command);
    END;

  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;
end;  

 

4. Savjeti i trikovi

Uz Row Level Security (RLS) u SQL Serveru, ovo dodaje jednostavno odvajanje korisničkih podataka, ali dodaje malo složenosti plana izvršenja upita za svaki upit koji koristi tablice na kojima je RLS omogućen.

Cilj je minimizirati tu složenost plana izvršenja upita.

- Korištenje u pohranjenim procedurama

Izbjegavajte puno spajanja s RLS tablicama. Ako trebate spojiti puno tablica, bolje je spojiti nekoliko (2-4 tablice), staviti rezultat u privremenu tablicu (koja može biti pravilno indeksirana) i spojiti tu privremenu tablicu s drugim tablicama.

To će olakšati posao optimizatoru upita jer je upit razbijen na više dijelova.

- Korištenje u okidačima

U after okidačima nema potrebe spajati se na osnovnu tablicu kako bi se dobili podaci.

Za update ili insert izjavu, umetnuta pseudo tablica već sadrži nove vrijednosti koje su također u osnovnoj tablici.

Stoga sve što trebate učiniti je spojiti se na nju.

Ako imate scenarij u kojem morate provjeriti postojanje nekih podataka u okidaču i ažurirati podatke na temelju te provjere, bolje je staviti rezultate provjere u privremenu tablicu, provjeriti zadovoljava li ti podaci željeni uvjet i koristiti ih za ažuriranje osnovne tablice.

- Ugrađena funkcija SQL Servera podrška za paralelizam

Ako ikada trebate provjeriti korisničko ime ili SQL prijavu pod kojom se trenutni kontekst izvršava, koristite sljedeće funkcije u select izjavama.

One su jedine koje podržavaju paralelizam u SQL Server planovima izvršenja:

USER_NAME, CURRENT_USER, SUSER_NAME, SUSER_SNAME, SUSER_ID, SUSER_SID.

Bilo koja druga ugrađena funkcija sprječava razmatranje paralelnih planova izvršenja upita.



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!