Ograniczenia dostępu do danych w rolach 1s. Prawa dostępu do SCP. RLS. Ogólne informacje i ustawienia. Ogranicz dostęp na poziomie rekordu

Wszystkie ustawienia praw użytkownika, które wprowadzimy w ramach tego artykułu, znajdują się w sekcji 1C 8.3 „Administracja” - „Ustawienia użytkownika i praw”. Ten algorytm jest podobny w większości konfiguracji w formularzach zarządzanych. Program księgowy 1C zostanie użyty jako przykład, ale konfigurowanie praw w innych programach (1C UT 11, 1C ZUP 3, 1C ERP) odbywa się dokładnie w ten sam sposób.

Przejdźmy do sekcji „Użytkownicy” w oknie ustawień. Tutaj widzimy dwa hiperłącza: „Użytkownicy” i „Ustawienia logowania”. Pierwsza z nich pozwala przejść bezpośrednio do listy użytkowników tej bazy danych. Przed utworzeniem nowego użytkownika rozważ możliwe ustawienia logowania (hiperłącze po prawej stronie).

W tym formularzu ustawień możesz ustawić złożoność hasła (co najmniej 7 znaków, obowiązkowa zawartość różnych typów znaków itp.). Tutaj możesz również określić długość hasła, okres jego ważności oraz zakaz dostępu do programu dla użytkowników, którzy nie mieli aktywności przez określony czas.

Teraz możesz przejść bezpośrednio do dodawania nowego użytkownika do 1C. Możesz to zrobić, klikając przycisk „Utwórz”, jak pokazano na poniższym obrazku.

Przede wszystkim podajemy pełne imię i nazwisko - „Antonow Dmitrij Pietrowicz” i wybieramy osobę z odpowiedniego katalogu. Tutaj możesz również określić dział, w którym pracuje nasz pracownik.

Login „AntonovDP” został automatycznie zastąpiony skrótem pełnej nazwy „Antonow Dmitrij Pietrowicz”. Ustaw hasło i uwierzytelnianie dla 1C Enterprise. Tutaj możesz również określić, czy ten użytkownik może samodzielnie zmienić hasło.

Załóżmy, że chcemy, aby Dmitrij Pietrowicz Antonow był dostępny na liście wyboru podczas uruchamiania tej bazy danych. Aby to zrobić, musisz ustawić flagę na elemencie „Pokaż na liście wyboru”. W rezultacie okno autoryzacji podczas uruchamiania programu będzie wyglądało jak na poniższym rysunku.

Zwróćmy uwagę na jeszcze jedno ważne ustawienie w karcie przewodnika użytkownika – „Logowanie do programu jest dozwolone”. Jeśli opóźnienie nie zostanie ustawione, użytkownik po prostu nie będzie mógł wejść do tej bazy danych.

Prawa dostępu

Po wypełnieniu wszystkich danych w karcie użytkownika - Antonow Dmitrij Pietrowicz zapiszemy je i przystąpimy do ustawiania praw dostępu, jak pokazano na poniższym rysunku.

Przed nami otworzyła się lista wcześniej wprowadzonych do programu profili dostępu. Zaznacz pola, które są wymagane.

Uzyskaj dostęp do profili grupowych

Profile grup dostępu można konfigurować z poziomu głównego formularza konfigurowania użytkowników i uprawnień. Przejdź do sekcji „Grupy dostępu” i kliknij hiperłącze „Profile grup dostępu”.

Utwórzmy nową grupę z otwartego formularza listy. W części tabelarycznej na zakładce „Dozwolone akcje (role)” należy zaznaczyć pola przy tych rolach, które będą miały wpływ na prawa dostępu użytkowników wchodzących w skład tworzonej przez nas grupy. Wszystkie te role są tworzone i konfigurowane w konfiguratorze. Nie można ich modyfikować ani tworzyć w trybie użytkownika. Możesz wybrać tylko z istniejącej listy.

RLS: Ograniczenie dostępu na poziomie rekordu

Umożliwia bardziej elastyczną konfigurację dostępu do danych programu w określonych sekcjach. Aby go aktywować należy ustawić flagę na elemencie o tej samej nazwie w formularzu ustawień użytkownika i uprawnień.

Należy pamiętać, że włączenie tego ustawienia może niekorzystnie wpłynąć na wydajność systemu. Chodzi o to, że mechanizm RLS zmienia wszystkie żądania w zależności od ustawionych ograniczeń.

Przejdźmy do utworzonego wcześniej profilu grupy dostępu „Grupa testowa”. Na poniższym rysunku widać, że po włączeniu ograniczenia dostępu na poziomie rekordu pojawiła się dodatkowa zakładka „Ograniczenia dostępu”.

Załóżmy, że chcemy, aby użytkownicy, do których przypisana jest grupa testowa, mieli dostęp do danych dla wszystkich organizacji w tej infobazie, z wyjątkiem określonych w profilu.

W górnej części tabeli ustaw ograniczenie dostępu według organizacji. W dolnej części wyjaśnimy, że dostęp do danych (dokumentów, katalogów itp.) nie zostanie udzielony dla organizacji Roga LLC.

Często zachodzi potrzeba częściowego ograniczenia dostępu do danych. Na przykład, gdy użytkownik chce zobaczyć dokumenty tylko dla swojej organizacji. W takich przypadkach 1C stosuje mechanizm ograniczenia dostępu na poziomie rekordu (tzw. RLS - Record Level Securiy).

Załóżmy na przykład, że mamy do czynienia z następującym zadaniem. Przedsiębiorstwo prowadzi księgowość wielofirmową, a każdy kontrahent i użytkownik bazy danych należy do określonej organizacji. Konieczne jest zapewnienie dostępu do katalogu „Kontrahenci” w taki sposób, aby każdy użytkownik mógł przeglądać, edytować i dodawać kontrahentów tylko do swojej organizacji.

Aby rozwiązać problem, użyjemy platformy „1C:Enterprise 8.2″. Stwórzmy nową konfigurację, we właściwościach której jako główny tryb uruchamiania zostanie wybrana opcja „Aplikacja zarządzana”.

Następnie utwórzmy katalog „Organizacje” oraz dwa kolejne katalogi – „Kontrahenci” i „Użytkownicy” z atrybutem „Organizacja”. Oprócz katalogów potrzebujemy dwóch parametrów sesji - „Organizacja” i „Użytkownik” (odpowiednich typów). Wartości tych parametrów są ustawiane na początku sesji konfiguracyjnej i przechowywane do jej zakończenia. To właśnie wartości tych parametrów wykorzystamy podczas dodawania warunków ograniczenia dostępu na poziomie rekordu.

Parametry sesji ustawiane są w specjalnym module – „Moduł sesji”

W tym module opisujemy predefiniowaną procedurę „SetSessionParameters”, w której wywołujemy funkcję wstępnie przygotowanego modułu ogólnego „FullPermissions”. Jest to konieczne ze względu na specyfikę działania bazy danych w trybie aplikacji zarządzanej, kiedy część kodu programu może być wykonana tylko po stronie serwera (nie będę się rozwodził nad wyjaśnianiem tych zasad w tym artykule).

Kod 1C v 8.x Procedura Ustawianie parametrów sesji (parametry wymagane)
FullPermissions.SetSessionParameters();
Procedura końcowa

We właściwościach modułu „FullPermissions” zaznacz pola „Server”, „Server call” i „Privileged” (to ostatnie oznacza, że ​​procedury i funkcje tego modułu będą wykonywane bez kontroli dostępu). Tekst modułu będzie wyglądał następująco:

Kod 1C v 8.x Funkcja DetermineCurrentUser()
CurrentUser = Directories.Users.FindByName(UserName(), True);
Zwróć bieżącego użytkownika;
Funkcje końcowe

Procedura SetSessionParameters() Eksport
ObecnyUżytkownik = Określ ObecnegoUżytkownika();
CurrentOrganization = Directories.Organizations.EmptyReference();
If ValueFilled(CurrentUser) To
Bieżąca organizacja = Bieżący użytkownik.Organizacja;
KoniecJeżeli;
SessionParameters.User = CurrentUser;
SessionParameters.Organization = CurrentOrganization;
Procedura końcowa

Eksport FunctionSessionParameterSet(ParameterName).
Return ValueFilled(SessionParameters[ParameterName]);
Funkcje końcowe

Funkcja RolaDostępna dla użytkownika(NazwaRoli) Eksport
Zwróć RolęDostępną(NazwaRoli);
Funkcje końcowe

W module aplikacji zarządzanej sprawdzimy obecność użytkownika konfiguracji w katalogu „Użytkownicy” (dla uproszczenia wyszukamy go po nazwie) i zamkniemy system, jeśli nie zostanie znaleziony. Jest to konieczne, aby upewnić się, że parametry sesji są wypełnione.

Kod 1C v 8.x Procedura działania przed uruchomieniem systemu (awaria)
// każdy oprócz administratora zostanie sprawdzony pod kątem obecności w katalogu „Użytkownicy”.
If Not FullPermissions.RoleAvailableToUser("FullPermissions") Wtedy
Jeśli NIE FullPermissions.SessionParameterSet("Użytkownik") Wtedy
Warning("Użytkownik """ + nazwa użytkownika() + """ nie został znaleziony w katalogu!");
Odrzucenie = prawda;
Powrót;
KoniecJeżeli;
KoniecJeżeli;
Procedura końcowa

Teraz możemy przejść bezpośrednio do opisu ograniczeń dostępu. W tym celu tworzymy rolę „Użytkownik” i przechodzimy do zakładki „Szablony ograniczeń”, gdzie dodajemy nowy szablon „AccountsReadingChange” o następującej treści szablonu: WHERE Organizacja = Organizacja #Parametr(1)


Tekst szablonu ograniczeń jest rozszerzeniem języka zapytań. W przeciwieństwie do zwykłego żądania tekst ograniczenia musi koniecznie zawierać klauzulę „WHERE”. Jako wartości parametrów zapytania (w naszym przypadku jest to „&Organizacja”) używane są wartości parametrów sesji o tej samej nazwie. Konstrukcja formularza #Parametr(1) oznacza, że ​​system podstawi tekst podany jako pierwszy parametr w miejscu, w którym szablon jest używany w tym miejscu. Za pomocą podanego szablonu sprawdzimy każdy rekord tabeli (w naszym przypadku będzie to wyszukiwarka „Kontrahenci”). Dla rekordów, których wartość atrybutu „Organizacja” jest zgodna z określoną w odpowiednim parametrze sesji, warunek opisany w szablonie zostanie spełniony. Tym samym wpisy te będą dostępne do czytania, edytowania lub dodawania (w zależności od tego, którego z tych uprawnień dotyczy szablon). Powyższe zademonstruję na naszym przykładzie.

Przejdźmy do zakładki „Prawa” roli „Użytkownik” i otwórzmy listę uprawnień w katalogu „Konta”. Użyjemy szablonu ograniczenia „AccountsReadChange” dla uprawnień „Odczyt”, „Zmień” i „Dodaj”.

Dla prawa „Odczyt” użyjemy szablonu z parametrem „OR ThisGroup”. Jednocześnie użytkownicy tej roli będą mogli czytać nie tylko elementy katalogu „Konta” swojej organizacji, ale także wszystkie grupy tego katalogu.

#AccountsReadingChange("OR ThisGroup")

Ponieważ podczas dodawania nowych elementów katalogu system dokonuje niejawnego odczytu predefiniowanych atrybutów (jest to niezbędne np. do numeracji), konieczne jest zapewnienie niezakłóconego odczytu tych pól. W tym celu do tabeli ograniczeń dostępu do danych dodaj dodatkowy wiersz z pustym tekstem ograniczenia i wypisz pola, których dotyczy ta reguła - Link, Wersja danych, Rodzic, Kod.

W ten sposób zadanie ograniczenia dostępu na poziomie rekordu zostało rozwiązane. Użytkownicy z istniejącymi ograniczeniami będą mieli dostęp do przeglądania i edytowania danych tylko dla swojej organizacji.

Platforma 1C:Enterprise 8 posiada wbudowany mechanizm ograniczania dostępu do danych na poziomie rekordu. Ogólne informacje na ten temat można przeczytać tutaj. Krótko mówiąc, RLS pozwoli ci ograniczyć dostęp do danych zgodnie z pewnymi warunkami dotyczącymi wartości pól. Na przykład możesz ograniczyć dostęp użytkowników do dokumentów w zależności od wartości atrybutu „Organizacja”. Niektórzy użytkownicy będą pracować z dokumentami dla organizacji „Firma zarządzająca”, a pozostali z organizacją „Zakład mleczarski”. Jako przykład.

Przygotowanie

Przykład jest zaimplementowany w konfiguracji demonstracyjnej SCP 1.3. Utwórzmy użytkownika „Storekeeper” i dodajmy do niego rolę „Storekeeper” o tej samej nazwie.

Przejdźmy teraz bezpośrednio do ustawiania praw dostępu na poziomie rekordu. Przejdźmy do interfejsu „Administracja użytkownikami”. W menu głównym wybierz „Dostęp na poziomie ewidencji -> Opcje”. Tutaj zaznaczamy pole „Ogranicz dostęp na poziomie rekordu według typów obiektów”, a na liście obiektów wybierz „Organizacje”.

W ten sposób umożliwiliśmy korzystanie z RLS. Teraz musisz to ustawić.

Kontrola dostępu na poziomie rekordu nie jest konfigurowana oddzielnie dla każdego użytkownika lub profilu uprawnień. RLS jest skonfigurowany dla grup użytkowników. Dodajmy nową grupę użytkowników, nazwijmy ją „Storekeepers”

Skład grupy po prawej stronie formularza pokazuje listę użytkowników należących do tej grupy. Dodajmy użytkownika, którego utworzyliśmy wcześniej. Po lewej stronie znajduje się tabela ograniczeń dostępu. W ustawieniu RLS wybraliśmy, że dostęp będzie ograniczony tylko przez organizacje, więc widzimy tylko jeden typ obiektu dostępu. Kliknij przycisk „Ustawienia dostępu”. Otworzy się proces ustawiania uprawnień dla bieżącej grupy.

Na liście obiektów dostępu dla grupy dodaj organizację „PPE „Przedsiębiorca””. Rodzaj dziedziczenia praw pozostawimy bez zmian. Prawo do obiektu dostępu zostanie ustawione na odczyt i zapis. Kliknij „OK”, ustawienia są gotowe. Właśnie skonfigurowaliśmy RLS na poziomie organizacji.

Co widzi użytkownik

Uruchom program pod wcześniej utworzonym użytkownikiem i otwórz katalog „Organizacje”. Tak będzie wyglądać lista dla naszego użytkownika i dla użytkownika z pełnymi uprawnieniami:

Jak widzimy, użytkownik storekeeper widzi tylko jedną organizację, dla której otworzyliśmy dostęp do odczytu. To samo dotyczy dokumentów, takich jak rachunki za towary i usługi.

W ten sposób użytkownik nie tylko nie zobaczy organizacji, do których dostęp nie jest dla niego ustawiony, ale także nie będzie mógł odczytywać / zapisywać dokumentów i innych obiektów w bazie danych, dla których uprawnienia w roli na atrybucie „Organizacja " są ustawione.

Rozważaliśmy najprostszy przykład konfiguracji RLS. W kolejnym artykule opowiemy o implementacji mechanizmu RLS w konfiguracji „Manufacturing Enterprise Management” w wersji 1.3.

1C ma wbudowany system praw dostępu (ten system nazywa się rolami 1C). Ten system jest statyczny - ponieważ administrator ustawił prawa na 1C, niech tak będzie.

Dodatkowo istnieje dynamiczny system praw dostępu (tzw. - RLS 1C). W nim prawa 1C są obliczane dynamicznie w czasie pracy użytkownika na podstawie określonych parametrów.

Jednym z najczęstszych ustawień zabezpieczeń w różnych programach jest zestaw uprawnień do odczytu/zapisu dla grup użytkowników, a następnie – włączenie lub wykluczenie użytkownika z grup. Na przykład podobny system jest używany w Windows AD (Active Directory).

Taki system bezpieczeństwa w 1C nazywa się Role 1C. Role 1C znajdują się w konfiguracji w gałęzi Ogólne / Role. Role 1C działają jak grupy, do których przypisane są prawa 1C. Następnie użytkownik jest włączany lub wykluczany z tej grupy.

Klikając dwukrotnie nazwę roli 1C, otworzysz edytor praw dla roli 1C. Po lewej stronie znajduje się lista obiektów 1C. Wybierz dowolne, a opcje praw dostępu zostaną wyświetlone po prawej stronie (minimum: przeczytaj, dodaj, zmień, usuń).

Dla górnej gałęzi (nazwa bieżącej konfiguracji) ustawione są prawa administracyjne 1C i dostęp do uruchamiania różnych opcji.

Wszystkie prawa 1C są podzielone na dwie grupy - „proste” prawo i to samo prawo z dodatkiem „interaktywne”. Co to znaczy?

Gdy użytkownik otwiera formularz (na przykład przetwarzanie) i naciska na nim przycisk, program we wbudowanym języku 1C wykonuje określone czynności, na przykład usuwa dokumenty. Za pozwolenie na te działania (wykonywane programowo) - „po prostu” odpowiadają prawa 1C.

Kiedy użytkownik otwiera dziennik i zaczyna samodzielnie robić coś z klawiatury (na przykład wprowadzać nowe dokumenty), są to „interaktywne” prawa 1C.

Użytkownik może mieć wiele dostępnych ról, w którym to przypadku uprawnienia są sumowane.

Sekcja dotycząca możliwości ustawiania praw dostępu za pomocą ról jest obiektem 1C. Oznacza to, że możesz włączyć dostęp do katalogu lub go wyłączyć. Nie da się trochę włączyć.

W tym celu istnieje rozszerzenie systemu ról 1C o nazwie 1C RLS. Jest to dynamiczny system praw dostępu, który pozwala na częściowe ograniczenie dostępu. Na przykład użytkownik widzi tylko dokumenty dla określonego magazynu i organizacji, a nie widzi pozostałych.

Ostrożnie! Podczas korzystania z mylącego schematu RLS 1C różni użytkownicy mogą mieć pytania, gdy próbują zweryfikować ten sam raport wygenerowany przez różnych użytkowników.

Bierzesz określony katalog (np. organizacje) i określone prawo (np. czytanie). Zezwalasz na czytanie dla roli 1C. W panelu Ograniczenie dostępu do danych ustawiasz tekst zapytania, który zwraca PRAWDA lub FAŁSZ w zależności od ustawień. Ustawienia są zwykle przechowywane w rejestrze informacji (na przykład w rejestrze informacji o konfiguracji Accounting UserAccessRightsSettingsUsers).

To żądanie jest wykonywane dynamicznie (podczas próby zaimplementowania odczytu) dla każdego wpisu w katalogu. Zatem dla tych rekordów, dla których zapytanie zabezpieczające zwróciło wartość PRAWDA, użytkownik je zobaczy, ale pozostałe nie.
Prawa 1C podlegające ograniczeniom RLS 1C są zaznaczone na szaro.

Kopiowanie tych samych ustawień RLS 1C odbywa się za pomocą szablonów. Tworzysz szablon, nazywasz go (na przykład) MyTemplate, określasz w nim żądanie bezpieczeństwa. Następnie w ustawieniach praw dostępu 1C podaj nazwę szablonu w następujący sposób: „#MyTemplate”.

Gdy użytkownik pracuje w trybie 1C Enterprise, gdy działa RLS 1C, może otrzymać komunikat o błędzie „Niewystarczające uprawnienia” (na przykład do odczytu katalogu Xxx).

Oznacza to, że RLS 1C zablokował odczyt kilku rekordów.

Aby zapobiec pojawieniu się takiego komunikatu, konieczne jest użycie słowa DOZWOLONE () w tekście żądania we wbudowanym języku 1C.

Na przykład:

Program 1C ma wbudowany system praw dostępu, który znajduje się w Konfiguratorze - Ogólne - Role.

Co charakteryzuje ten system i jaki jest jego główny cel? Pozwala opisać zestawy uprawnień, które odpowiadają pozycjom użytkowników lub ich działaniom. Ten system praw dostępu ma charakter statyczny, co oznacza, że ​​\u200b\u200bgdy administrator ustawił prawa dostępu na 1C, tak jest. Oprócz statycznego istnieje drugi system praw dostępu – dynamiczny (RLS). W systemie tym prawa dostępu naliczane są w sposób dynamiczny, w zależności od zadanych parametrów, w trakcie pracy.

Role w 1C

Najczęściej spotykanymi ustawieniami zabezpieczeń w różnych programach jest tzw. zestaw uprawnień do odczytu/zapisu dla różnych grup użytkowników, aw przyszłości: włączenie lub wykluczenie konkretnego użytkownika z grup. Taki system jest używany na przykład w systemie operacyjnym Windows AD (Active Directory). System bezpieczeństwa używany w oprogramowaniu 1C nazywa się rolami. Co to jest? Role w 1C to obiekt, który znajduje się w konfiguracji w gałęzi: Ogólne - Role. Te role 1C to grupy, którym przypisano uprawnienia. W przyszłości każdy użytkownik będzie mógł być włączany i wyłączany z tej grupy.

Dwukrotne kliknięcie nazwy roli spowoduje otwarcie edytora uprawnień dla roli. Po lewej stronie znajduje się lista obiektów, zaznacz dowolny z nich, a po prawej stronie zobaczysz opcje możliwych praw dostępu:

— czytanie: pobieranie rekordów lub ich częściowych fragmentów z tabeli bazy danych;
- dodawanie: nowych rekordów przy zachowaniu istniejących;
— zmiana: dokonywanie zmian w istniejących zapisach;
- usunięcie: niektóre rekordy, reszta bez zmian.

Należy zauważyć, że wszystkie prawa dostępu można podzielić na dwie główne grupy - jest to prawo „zwykłe” i takie z dodatkiem cechy „interaktywnej”. Co to znaczy tutaj? A rzecz jest następująca.

W przypadku, gdy użytkownik otwiera jakiś formularz, na przykład przetwarza, i jednocześnie klika go myszą, program we wbudowanym języku 1C zaczyna wykonywać określone czynności, na przykład usuwać dokumenty. Za zezwolenie na takie działania wykonywane przez program prawa 1C odpowiadają odpowiednio „po prostu”.

W przypadku, gdy użytkownik otworzy dziennik i zacznie samodzielnie wprowadzać coś z klawiatury (na przykład nowe dokumenty), wówczas prawa „interaktywne” 1C są odpowiedzialne za zezwolenie na takie działania. Każdy użytkownik może mieć jednocześnie dostępnych kilka ról, następnie uprawnienia są dodawane.

RLS w 1C

Możesz włączyć dostęp do katalogu (lub dokumentu) lub go wyłączyć. Nie możesz go po prostu trochę włączyć. W tym celu istnieje pewne rozszerzenie systemu ról 1C, które nazywa się RLS. Jest to dynamiczny system praw dostępu, który wprowadza częściowe ograniczenia dostępu. Na przykład tylko dokumenty określonej organizacji i magazynu stają się dostępne dla uwagi użytkownika, reszty nie widzi.

Należy pamiętać, że system RLS należy stosować bardzo ostrożnie, ponieważ zrozumienie jego zawiłego schematu jest raczej trudne, a różni użytkownicy mogą mieć pytania, gdy np. porównują ten sam raport, który jest generowany pod różnymi użytkownicy. Rozważmy taki przykład. Wybierasz określony katalog (na przykład organizacje) i określone prawo (na przykład czytanie), to znaczy zezwalasz na czytanie dla roli 1C. Jednocześnie ustawiasz tekst żądania w panelu zdalnym Ograniczenia dostępu do danych, zgodnie z którym ustawia się Fałsz lub Prawda, w zależności od ustawień. Zazwyczaj ustawienia są przechowywane w specjalnym rejestrze informacyjnym.

To zapytanie będzie wykonywane dynamicznie (przy próbie uporządkowania odczytu) dla wszystkich wpisów w katalogu. Działa to tak: te rekordy, do których przypisano żądanie bezpieczeństwa - To prawda, użytkownik zobaczy, ale inni nie. Prawa 1C z ustalonymi ograniczeniami są zaznaczone na szaro.

Operacja kopiowania identycznych ustawień RLS odbywa się za pomocą szablonów. Na początek tworzysz szablon, nazywając go, na przykład MyTemplate, w którym odzwierciedlasz żądanie bezpieczeństwa. Następnie w ustawieniach praw dostępu określ nazwę tego szablonu w ten sposób: "#MyTemplate".

Gdy użytkownik pracuje w trybie 1C Enterprise, podczas łączenia się z RLS może pojawić się komunikat o błędzie: „Niewystarczające uprawnienia” (na przykład do odczytu katalogu XXX). Oznacza to, że system RLS zablokował odczyt niektórych rekordów. Aby zapobiec ponownemu pojawieniu się tego komunikatu, musisz wpisać słowo DOZWOLONE w treści żądania.



Podobne artykuły