PANTHEON™ Help

 Категории
 Главна страна - Добре дојдовте во помош за PANTHEON
[Collapse]PANTHEON
 [Collapse]PANTHEON упатства
  [Expand]Водич за PANTHEON Farming
  [Collapse]Водич за Datalab PANTHEON™
   [Expand]Помош
   [Expand]ПОС
   [Expand]Подесувања
   [Expand]Нарачки
   [Expand]Материјално
   [Expand]Производство
   [Expand]Сервис
   [Expand]ПОС
   [Expand]Финансии
   [Expand]Кадри
   [Expand]Работна површина
   [Expand]Анализи
    Додатно
   [Expand]Аналитика
   [Expand]Пораки и предупредувања
   [Collapse]Системско окружување за Даталаб програми
    [Collapse]Безбедносна политика
      Како надградбата влијае на базите
      Автоматско пријавување на домен корисник
      SQL Server корисници во PANTHEON
     [Collapse]Сигурност на ниво на ред
       Како RLS работи во пракса
       Надградба
       База
       Промени во кодот
       Анализа на проблеми
       АРЕС - RLS мод на компатибилност
       ПРАШАЊА И ОДГОВОРИ ЗА RLS
    [Expand]Инсталација
    [Expand]Автоматско извршување
    [Expand]PANTHEON системска околина
    [Expand]Администрација на бази
    [Expand]Даталаб алатки
   [Expand]Официјални објаснувања
    Речник на термини
   [Expand]Дополнителни програми
   [Expand]Застарени производи
  [Expand]Водич за PANTHEON Ретал
  [Expand]Водич за PANTHEON Вет
 [Collapse]PANTHEON кориснички прирачници
  [Expand]Кориснички прирачник Datalab PANTHEON™
  [Expand]Корисничко упатство за PANTHEON Ретал
  [Expand]Корисничко упатство за PANTHEON Vet
  [Expand]Корисничко упатство за ПАНТЕОН Земјоделство
[Collapse]PANTHEON Web
 [Collapse]Водич за PANTHEON Web
  [Expand]Водич за PANTHEON Web Light
  [Expand]Водич за PANTHEON Chronos Mini
  [Expand]Водич за PANTHEON Web Terminal
  [Expand]Водич за PANTHEON Web Legal
  [Expand]Архива на стари производи
 [Collapse]Кориснички прирачник за PANTHEON Web
  [Expand]Најава во PANTHEON Web
  [Expand]Како да започнете со PANTHEON Web
  [Expand]Кориснички прирачник за PANTHEON Web Light
  [Expand]Кориснички прирачник за PANTHEON Web Terminal
  [Expand]Кориснички прирачник за PANTHEON Web Legal
  [Expand]Стара архивa на производи
[Collapse]PANTHEON Гранула
 [Collapse]Водич за PANTHEON Гранули
  [Expand]Гранула Кадри
  [Expand]Гранула Патни налози
  [Expand]Гранула Документи и задачи
  [Expand]Гранула Контролна табла
  [Expand]Гранула B2B нарачки
  [Expand]Гранула Сервис на терен
  [Expand]Инвентаризација на фиксни средства
  [Expand]Гранула Попис на магацини
 [Collapse]Кориснички прирачник за PANTHEON Гранули
   Започнување
   Користење на PANTHEON Гранули во фиктивната компанија Текта
  [Expand]Гранули и активација
  [Expand]Гранула Кадри
  [Expand]Гранула Патни налози
  [Expand]Гранула Документи и Задачи
  [Expand]Гранула Б2Б нарачки
  [Expand]Гранула Контролна табла
  [Expand]Гранула Сервис на терен
  [Expand]Инвентаризација на фиксни средства
   PANTHEON Гранула - FAQ
  [Expand]Гранула Попис на магацин
   Архива
[Expand]Кориснички сервер

Load Time: 406,2533 ms
"
  1000002563 | 222177 | 439026 | AI translated
Label

ПРАШАЊА И ОДГОВОРИ ЗА RLS

              

 

  1. RLS_ALL корисник
  2. Додавање корисници
  3. Отстранување корисници
  4. Совети и трикови

 

1. RLS_ALL корисник

RLS_ALL е специјален корисник на базата на податоци без никакво мапирање на серверски логини. Тоа значи дека не можете да се најавите во SQL Server со него.

Единствениот начин да се користи е со EXECUTE AS USER = 'RLS_ALL'

Има пристап до сите податоци кои се одделени со RLS функционалност.

Овој корисник се користи, на пример, за создавање агрегати на податоци кои припаѓаат на повеќе корисници.

На пример, извештај за вкупна продажба за сите вработени за една година, но секој вработен може да види само својата продажба.

За корисник од пантеон да може да користи EXECUTE AS USER = 'RLS_ALL', мора да има GRANT IMPERSONATE дозволи на RLS_ALL корисник.

Само корисниците во Пантеон треба да имаат GRANT IMPERSONATE дозволи.

Давањето на тие дозволи на вградени SQL Server (како SA, итн.) сметки обично не е потребно.

  • Само корисниците на Пантеон можат да читаат податоци од RLS заштитени таблици

SA корисник (ако не е мапиран на PA корисник) нема пристап до заштитени податоци.
Секои RLS заштитени податоци можат да се читаат само од PA корисник со соодветни авторизации.

За да се користат надворешни врски до базата на податоци, врската до базата на податоци мора да се направи со PANTHEON корисник поврзан со корисник на базата на податоци.

2. Додавање корисници

Додавање корисници за пристап до други апликации на PANTHEON базата на податоци.

Можеме да додадеме корисник со PANTHEON:

Видете ги следните инструкции: Додавање корисник и Поставување авторизации за корисник.

За покомплексни поставувања, каде што сакаме да додадеме корисник на повеќе бази на податоци.

Додавање корисник и наплаќање авторизации без права. Поставуваме дозволи на корисникот со 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  

BEGIN
 
  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;--без авторизации
    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. Отстранување корисници

 

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. Совети и трикови

Со Row Level Security (RLS) на SQL Server, ова овозможува лесно одвојување на податоците на корисниците, но додава малку комплексност на планот за извршување на секој упит што ги користи таблиците на кои е овозможен RLS.

Целта е да се минимизира таа комплексност на планот за извршување на упитот.

- Употреба во складирани процедури

Избегнувајте многу спојувања со RLS таблици. Ако треба да споите многу таблици, подобро е да споите неколку (2-4 таблици), да го ставите резултатот во привремена табела (која може дури и да биде правилно индексирана) и да ја споите таа привремена табела со други таблици.

Ова ќе ја олесни работата на оптимизаторот на упити бидејќи упитот е поделен на повеќе парчиња.

- Употреба во тригери

Во тригерите по извршување, нема потреба да се спојувате со основната табела за да ги добиете податоците.

За изјавата за ажурирање или вметнување, вметнатата псевдо табела веќе содржи нови вредности кои исто така се во основната табела.

Така што, сè што треба да направите е да се споите со неа.

Ако имате сценарио каде што треба да проверите за постоење на некои податоци во тригер и да ажурирате податоци врз основа на таа проверка, подобро е да ги ставите резултатите од проверката во привремена табела, да проверите дали тие податоци ги задоволуваат посакуваните услови и да ги користите за ажурирање на основната табела.

- Поддршка на вградени функции на SQL Server за паралелизам

Ако некогаш треба да проверите корисничко име или SQL логин под кој се извршува тековниот контекст, користете ги следниве функции во select изјавите.

Тие се единствените кои поддржуваат паралелизам во плановите за извршување на SQL Server:

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

Секоја друга вградена функција спречува разгледување на паралелни планови за извршување на упити.

 

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