Ograničenja pristupa podacima u ulogama 1s. Prava pristupa SCP-u. RLS. Opće informacije i postavke. Ograničite pristup na nivou zapisa

Sve postavke korisničkih prava koje ćemo izvršiti u okviru ovog članka nalaze se u odjeljku 1C 8.3 "Administracija" - "Postavke korisnika i prava". Ovaj algoritam je sličan u većini konfiguracija na upravljanim obrascima. Kao primjer će se koristiti program 1C Računovodstvo, ali postavljanje prava u drugim programima (1C UT 11, 1C ZUP 3, 1C ERP) se vrši na potpuno isti način.

Idemo na odjeljak "Korisnici" prozora postavki. Ovdje vidimo dvije hiperveze: "Korisnici" i "Postavke za prijavu". Prvi od njih vam omogućava da direktno odete na listu korisnika ove infobaze. Prije kreiranja novog korisnika, razmotrite moguća podešavanja za prijavu (hiperlink na desnoj strani).

U ovom obrascu za podešavanja možete podesiti složenost lozinke (najmanje 7 karaktera, obavezan sadržaj različitih tipova znakova itd.). Ovdje također možete odrediti dužinu lozinke, period njenog važenja i zabranu pristupa programu za korisnike koji nisu bili aktivni u određenom vremenskom periodu.

Sada možete ići direktno na dodavanje novog korisnika u 1C. To možete učiniti klikom na dugme "Kreiraj", kao što je prikazano na slici ispod.

Prije svega, naznačimo puno ime - "Antonov Dmitrij Petrovič" i izaberemo osobu iz odgovarajućeg imenika. Ovdje možete odrediti i odjel u kojem radi naš zaposlenik.

Korisničko ime "AntonovDP" je automatski zamijenjeno kao skraćenica za puno ime "Antonov Dmitry Petrovich". Postavite lozinku i autentifikaciju za 1C Enterprise. Ovdje također možete odrediti da li je ovom korisniku dozvoljeno da sam promijeni lozinku.

Pretpostavimo da želimo da Dmitrij Petrovič Antonov bude dostupan na listi za odabir kada pokrećemo ovu bazu podataka. Da biste to učinili, morate postaviti zastavicu na stavku "Prikaži na listi izbora". Kao rezultat toga, prozor za autorizaciju pri pokretanju programa će izgledati kao onaj prikazan na donjoj slici.

Obratimo pažnju na još jednu važnu postavku na kartici korisničkog vodiča - "Prijava u program je dozvoljena." Ako kašnjenje nije podešeno, korisnik jednostavno neće moći ući u ovu bazu podataka.

Prava pristupa

Nakon popunjavanja svih podataka u korisničkoj kartici - Antonov Dmitry Petrovich, zapisaćemo ih i nastaviti sa postavljanjem prava pristupa, kao što je prikazano na slici ispod.

Pred nama je otvorena lista prethodno unesenih u program pristupnih profila. Označite polja koja su obavezna.

Pristupite profilima grupe

Profili pristupne grupe mogu se konfigurisati iz glavnog obrasca za podešavanje korisnika i prava. Idite na odjeljak "Grupe za pristup" i kliknite na hipervezu "Profili grupe za pristup".

Kreirajmo novu grupu iz otvorene liste. U tabelarnom dijelu na kartici "Dozvoljene radnje (uloge)" potrebno je označiti kućice za one uloge koje će uticati na prava pristupa korisnika uključenih u grupu koju kreiramo. Sve ove uloge se kreiraju i konfigurišu u konfiguratoru. Ne mogu se mijenjati ili kreirati iz korisničkog načina rada. Možete birati samo sa postojeće liste.

RLS: Ograničenje pristupa na nivou zapisa

Omogućava vam da fleksibilnije konfigurirate pristup podacima programa u određenim odjeljcima. Da biste ga aktivirali, postavite zastavicu na stavku istog imena u obrascu za podešavanja korisnika i prava.

Imajte na umu da omogućavanje ove postavke može negativno uticati na performanse sistema. Poenta je da RLS mehanizam mijenja sve zahtjeve u zavisnosti od postavljenih ograničenja.

Idemo na profil pristupne grupe "Test grupa" koji smo ranije kreirali. Slika ispod pokazuje da se nakon omogućavanja ograničenja pristupa na nivou zapisa pojavila dodatna kartica "Ograničenja pristupa".

Pretpostavimo da želimo da korisnici kojima je dodijeljena test grupa imaju pristup podacima za sve organizacije u ovoj bazi podataka, osim onih navedenih u profilu.

U gornjem dijelu tabele postavite ograničenje pristupa prema organizaciji. U donjem dijelu ćemo pojasniti da neće biti omogućen pristup podacima (dokumentima, imenicima itd.) za organizaciju Roga doo.

Često postoji potreba da se djelimično ograniči pristup podacima. Na primjer, kada korisnik treba da vidi dokumente samo za svoju organizaciju. U takvim slučajevima, 1C koristi mehanizam ograničenja pristupa na nivou zapisa (tzv. RLS - Record Level Securiy).

Na primjer, pretpostavimo da smo suočeni sa sljedećim zadatkom. Preduzeće vodi računovodstvo više kompanija i svaka druga strana i korisnik baze podataka pripada određenoj organizaciji. Potrebno je omogućiti pristup imeniku „Ugovarači“ na način da svaki korisnik može pregledavati, uređivati ​​i dodavati partnere samo svojoj organizaciji.

Za rješavanje problema koristit ćemo platformu „1C:Enterprise 8.2″. Kreirajmo novu konfiguraciju u čijim svojstvima će opcija "Upravljana aplikacija" biti odabrana kao glavni način pokretanja.

Zatim kreirajmo direktorij "Organizacije" i još dva direktorija - "Ugovarači" i "Korisnici" s atributom "Organizacija". Osim direktorija, potrebna su nam dva parametra sesije - “Organizacija” i “Korisnik” (odgovarajućih tipova). Vrijednosti ovih parametara se postavljaju na početku konfiguracijske sesije i pohranjuju se do njenog završetka. Vrijednosti ovih parametara koristit ćemo prilikom dodavanja uvjeta ograničenja pristupa na razini zapisa.

Parametri sesije se postavljaju u posebnom modulu - “Modul sesije”

U ovom modulu opisujemo unaprijed definiranu proceduru “SetSessionParameters” u kojoj funkciju unaprijed pripremljenog općeg modula nazivamo “FullPermissions”. Ovo je neophodno zbog specifičnosti rada baze podataka u režimu upravljane aplikacije, kada se deo programskog koda može izvršiti samo na strani servera (neću se zadržavati na objašnjavanju ovih principa u ovom članku).

Code 1C v 8.x Procedura Postavljanje parametara sesije (potrebni parametri)
FullPermissions.SetSessionParameters();
EndProcedure

U svojstvima modula “FullPermissions” označite kućice “Server”, “Poziv servera” i “Privilegirano” (potonje znači da će se procedure i funkcije ovog modula izvršavati bez kontrole pristupa). Tekst modula će izgledati ovako:

Kod 1C v 8.x Funkcija DetermineCurrentUser()
CurrentUser = Directories.Users.FindByName(UserName(), True);
Vrati CurrentUser;
EndFunctions

Procedura SetSessionParameters() Izvoz
CurrentUser = Odredite CurrentUser();
CurrentOrganization = Directories.Organizations.EmptyReference();
Ako je ValueFilled(TrenutniKorisnik) Onda
CurrentOrganization = CurrentUser.Organization;
EndIf;
SessionParameters.User = CurrentUser;
SessionParameters.Organization = CurrentOrganization;
EndProcedure

FunctionSessionParameterSet(ParameterName) Izvoz
Povratna vrijednost Filled(Parametri sesije[Ime parametra]);
EndFunctions

Funkcija RoleAvailableToUser(RoleName) Izvoz
Vrati RoleAvailable(RoleName);
EndFunctions

U modulu upravljane aplikacije provjerit ćemo prisutnost konfiguracijskog korisnika u direktoriju „Korisnici“ (radi jednostavnosti tražit ćemo ga po imenu) i isključiti sistem ako ga ne pronađe. Ovo je neophodno kako bi se osiguralo da su parametri sesije popunjeni.

Code 1C v 8.x Predsistemski radni postupak (neuspjeh)
// svi osim administratora će biti provjereni za prisutnost u direktoriju "Korisnici".
Ako nije FullPermissions.RoleAvailableToUser("FullPermissions") Onda
Ako NIJE FullPermissions.SessionParameterSet("Korisnik") Onda
Upozorenje("Korisnik """ + Korisničko ime() + """ nije pronađeno u direktoriju!");
Odbijanje = istina;
Povratak;
EndIf;
EndIf;
EndProcedure

Sada možemo prijeći direktno na opis ograničenja pristupa. Da biste to učinili, kreirajte ulogu "Korisnik" i idite na karticu "Šabloni ograničenja", gdje dodajemo novi predložak "AccountsReadingChange" sa sljedećim tekstom predloška: WHERE Organizacija = Organizacija #Parametar(1)


Tekst predloška ograničenja je proširenje jezika upita. Za razliku od običnog zahtjeva, tekst ograničenja mora nužno sadržavati klauzulu “WHERE”. Kao vrijednosti parametara upita (u našem slučaju to je “&Organization”), koriste se vrijednosti parametara sesije istog imena. Konstrukcija forme #Parameter(1) znači da će sistem zamijeniti tekst proslijeđen kao prvi parametar na mjestu gdje se šablon koristi na ovom mjestu. Uz pomoć datog šablona, ​​svaki zapis tabele će biti proveren (u našem slučaju to će biti pretraga "Izvođači"). Za zapise čija vrijednost atributa “Organizacija” odgovara onoj navedenoj u odgovarajućem parametru sesije, uvjet opisan u predlošku će biti ispunjen. Dakle, ovi unosi će biti dostupni za čitanje, uređivanje ili dodavanje (u zavisnosti od toga na koja se od ovih prava šablon odnosi). Pokazat ću gore navedeno na našem primjeru.

Idemo na karticu "Prava" uloge "Korisnik" i otvorimo listu prava u direktoriju "Računi". Koristit ćemo predložak ograničenja „AccountsReadChange“ za dozvole „Čitanje“, „Promjena“ i „Dodaj“.

Za pravo „Čitanje“ koristićemo šablon sa parametrom „OR ThisGroup“. Istovremeno, korisnicima ove uloge biće dozvoljeno da čitaju ne samo elemente direktorijuma "Računi" svoje organizacije, već i sve grupe ovog direktorijuma.

#AccountsReadingChange("ILI ova grupa")

Budući da pri dodavanju novih elemenata direktorija sistem vrši implicitno čitanje unaprijed definiranih atributa (ovo je neophodno npr. za numeriranje), potrebno je osigurati nesmetano čitanje ovih polja. Da biste to učinili, dodajte dodatni red s praznim tekstom ograničenja u tablicu ograničenja pristupa podacima i navedite polja za koja se ovo pravilo primjenjuje - Link, Verzija podataka, Roditelj, Šifra.

Time je riješen zadatak ograničavanja pristupa na nivou zapisa. Korisnici s postojećim ograničenjima imat će pristup za pregled i uređivanje podataka samo za svoju organizaciju.

Platforma 1C:Enterprise 8 ima ugrađeni mehanizam za ograničavanje pristupa podacima na nivou zapisa. Opće informacije o tome možete pročitati ovdje. Ukratko, RLS će vam omogućiti da ograničite pristup podacima prema nekim uvjetima na vrijednosti polja. Na primjer, možete ograničiti korisnikov pristup dokumentima ovisno o vrijednosti atributa "Organizacija". Neki korisnici će raditi sa dokumentima za organizaciju "Kompanija za upravljanje", a ostali za organizaciju "Mljekara". Kao primjer.

Priprema

Primjer je implementiran u demonstracijskoj konfiguraciji SCP 1.3. Kreirajmo korisnika "Storekeeper" i dodajmo mu ulogu "Storekeeper" istog imena.

Sada idemo direktno na postavljanje prava pristupa na nivou zapisa. Prijeđimo na sučelje "Korisnička administracija". U glavnom meniju izaberite "Pristup na nivou zapisa -> Opcije". Ovdje čekiramo polje "Ograniči pristup na nivou zapisa prema vrstama objekata", a na listi objekata biramo "Organizacije".

Time smo omogućili korištenje RLS-a. Sada ga trebate podesiti.

Kontrola pristupa na nivou zapisa nije konfigurisana posebno za svakog korisnika ili profile dozvola. RLS je konfiguriran za korisničke grupe. Dodajmo novu korisničku grupu, nazovimo je "Skladištari"

Sastav grupe na desnoj strani obrasca prikazuje listu korisnika koji pripadaju ovoj grupi. Dodajmo korisnika kojeg smo kreirali ranije. Na lijevoj strani je tabela ograničenja pristupa. U postavci RLS-a odabrali smo da će pristup biti ograničen samo od strane organizacija, tako da vidimo samo jednu vrstu objekta pristupa. Kliknite na dugme "Postavke pristupa". Otvara se obrada za postavljanje dozvola za trenutnu grupu.

U listu objekata pristupa za grupu dodajte organizaciju "PPE "Preduzetnik"". Vrsta nasljeđivanja prava ostavljamo nepromijenjenom. Pravo na objekt pristupa će biti postavljeno za čitanje i pisanje. Kliknite na "OK", postavke su spremne. Upravo smo postavili RLS na nivou organizacije.

Šta korisnik vidi

Pokrenite program pod prethodno kreiranim korisnikom i otvorite direktorij "Organizacije". Ovako će lista izgledati za našeg korisnika i za korisnika sa punim pravima:

Kao što vidimo, korisnik skladištara vidi samo jednu organizaciju za koju smo otvorili pristup za čitanje. Isto se odnosi i na dokumente, kao što su primici robe i usluga.

Dakle, korisnik ne samo da neće vidjeti organizacije kojima pristup nije postavljen za njega, već neće moći ni čitati/pisati dokumente i druge objekte u infobazi, za koje su prava u ulozi na atributu „Organizacija " su postavljeni.

Razmotrili smo najjednostavniji primjer postavljanja RLS-a. U sljedećem članku ćemo govoriti o implementaciji RLS mehanizma u konfiguraciji "Upravljanje proizvodnim poduzećem" verzije 1.3.

1C ima ugrađen sistem prava pristupa (ovaj sistem se zove 1C uloge). Ovaj sistem je statičan - kako je administrator postavio prava na 1C, neka bude.

Dodatno, postoji i dinamički sistem prava pristupa (nazvan - RLS 1C). U njemu se 1C prava dinamički izračunavaju u trenutku rada korisnika na osnovu navedenih parametara.

Jedna od najčešćih sigurnosnih postavki u raznim programima je skup dozvola za čitanje/pisanje za korisničke grupe, a zatim - uključivanje ili isključivanje korisnika iz grupa. Na primjer, sličan sistem se koristi u Windows AD (Active Directory).

Takav sigurnosni sistem u 1C naziva se Roles 1C. Uloge 1C se nalaze u konfiguraciji u grani Općenito / Uloge. 1C uloge djeluju kao grupe za koje su dodijeljena 1C prava. Zatim se korisnik uključuje ili isključuje iz ove grupe.

Dvostrukim klikom na naziv 1C uloge otvorit ćete uređivač prava za 1C ulogu. Na lijevoj strani je lista 1C objekata. Odaberite bilo koji i opcije za prava pristupa će biti prikazane na desnoj strani (najmanje: čitanje, dodavanje, promjena, brisanje).

Za gornju granu (naziv trenutne konfiguracije) postavljena su administrativna prava 1C i pristup za pokretanje raznih opcija.

Sva 1C prava podijeljena su u dvije grupe - "jednostavno" pravo i isto pravo s dodatkom "interaktivnog". Šta to znači?

Kada korisnik otvori obrazac (na primjer, obrada) i pritisne gumb na njemu, program u ugrađenom 1C jeziku izvodi određene radnje, na primjer, brisanje dokumenata. Za dozvolu ovih radnji (izvršenih programski) - "jednostavno" su odgovorna prava 1C.

Kada korisnik otvori dnevnik i počne samostalno raditi nešto s tipkovnice (na primjer, unositi nove dokumente), to su "interaktivna" 1C prava.

Korisnik može imati više dostupnih uloga, u kom slučaju se dozvole zbrajaju.

Odjeljak o mogućnostima postavljanja prava pristupa korištenjem uloga je 1C objekat. To jest, možete ili omogućiti pristup direktoriju ili ga onemogućiti. Ne može se malo uključiti.

Za to postoji proširenje 1C sistema uloga pod nazivom 1C RLS. Ovo je dinamički sistem prava pristupa koji vam omogućava da delimično ograničite pristup. Na primjer, korisnik vidi samo dokumente za određeno skladište i organizaciju, a ne vidi ostale.

Pažljivo! Kada koristite zbunjujuću RLS 1C šemu, različiti korisnici mogu imati pitanja kada pokušaju da provjere isti izvještaj generiran od strane različitih korisnika.

Uzimate određeni imenik (npr. organizacije) i određeno pravo (npr. čitanje). Dozvoljavate čitanje za ulogu 1C. U panelu Ograničenje pristupa podacima postavljate tekst upita koji vraća TRUE ili FALSE u zavisnosti od postavki. Postavke se obično pohranjuju u registar informacija (na primjer, registar informacija o konfiguraciji Accounting UserAccessRightsSettingsUsers).

Ovaj zahtjev se izvršava dinamički (kada pokušava implementirati čitanje), za svaki unos u direktorij. Dakle, za one zapise za koje je sigurnosni upit vratio TRUE, korisnik će to vidjeti, ali ostali neće.
1C prava koja podliježu ograničenjima RLS 1C označena su sivom bojom.

Kopiranje istih postavki RLS 1C vrši se pomoću šablona. Napravite predložak, imenujete ga (na primjer) MyTemplate, specificirate sigurnosni zahtjev u njemu. Zatim, u postavkama prava pristupa 1C, navedite naziv predloška ovako: "#MyTemplate".

Kada korisnik radi u 1C Enterprise modu, kada je pokrenut RLS 1C, može dobiti poruku o grešci "Nedovoljna prava" (na primjer, za čitanje Xxx direktorija).

To znači da je RLS 1C blokirao čitanje nekoliko zapisa.

Da biste spriječili pojavljivanje takve poruke, potrebno je koristiti riječ DOZVOLJENO () u tekstu zahtjeva na ugrađenom 1C jeziku.

Na primjer:

Program 1C ima ugrađen sistem prava pristupa, koji se nalazi u Konfiguratoru - Općenito - Uloge.

Šta karakteriše ovaj sistem i koja je njegova osnovna svrha? Omogućava vam da opišete skupove prava koja odgovaraju pozicijama korisnika ili njihovim aktivnostima. Ovaj sistem prava pristupa je statičan po prirodi, što znači da, pošto je administrator postavio prava pristupa na 1C, jeste. Pored statičkog, postoji i drugi sistem prava pristupa - dinamički (RLS). U ovom sistemu se prava pristupa izračunavaju na dinamičan način, u zavisnosti od zadatih parametara, u toku rada.

Uloge u 1C

Najčešća sigurnosna podešavanja u različitim programima su takozvani skup dozvola za čitanje/pisanje za različite grupe korisnika iu budućnosti: uključivanje ili isključivanje određenog korisnika iz grupa. Takav sistem se, na primjer, koristi u operativnom sistemu Windows AD (Active Directory). Sigurnosni sistem koji se koristi u 1C softveru naziva se uloge. Šta je to? Uloge u 1C je objekt koji se nalazi u konfiguraciji u grani: Općenito - Uloge. Ove 1C uloge su grupe za koje su dodijeljena prava. U budućnosti svaki korisnik može biti uključen i isključen iz ove grupe.

Dvostrukim klikom na naziv uloge otvorit ćete uređivač prava za ulogu. Na lijevoj strani je lista objekata, označite bilo koji od njih, a desno ćete vidjeti opcije za moguća prava pristupa:

— čitanje: preuzimanje zapisa ili njihovih djelomičnih fragmenata iz tabele baze podataka;
- dodavanje: novih zapisa uz održavanje postojećih;
— promjena: izmjena postojećih zapisa;
- brisanje: neki zapisi, ostali nepromijenjeni.

Imajte na umu da se sva prava pristupa mogu podijeliti u dvije glavne grupe - ovo je "jednostavno" pravo i takvo pravo s dodatkom "interaktivne" karakteristike. Šta se ovde misli? A stvar je sledeća.

U slučaju kada korisnik otvori neki obrazac, na primjer, obrada, i istovremeno klikne na njega mišem, program na ugrađenom 1C jeziku počinje izvršavati određene radnje, na primjer, brisanje dokumenata. Za dozvolu takvih radnji koje izvodi program, prava 1C su odgovorna, odnosno "jednostavno".

U slučaju da korisnik otvori dnevnik i počne sam unositi nešto s tipkovnice (novi dokumenti, na primjer), tada su "interaktivna" 1C prava odgovorna za omogućavanje takvih radnji. Svaki korisnik može imati nekoliko dostupnih uloga odjednom, a zatim se dodaje dozvola.

RLS u 1C

Možete omogućiti pristup direktoriju (ili dokumentu) ili ga onemogućiti. Ne možete ga samo malo uključiti. U tu svrhu postoji određeno proširenje 1C sistema uloga, koje se zove RLS. Ovo je dinamički sistem prava pristupa koji uvodi delimična ograničenja pristupa. Na primjer, samo dokumenti određene organizacije i skladišta postaju dostupni pažnji korisnika, ostalo ne vidi.

Treba imati na umu da se RLS sistem mora primjenjivati ​​vrlo pažljivo, jer je prilično teško razumjeti njegovu zamršenu shemu, a različiti korisnici mogu imati pitanja kada, na primjer, upoređuju isti izvještaj, koji se generira iz različitih korisnika. Razmotrimo takav primjer. Vi birate određeni direktorij (organizacije, na primjer) i određeno pravo (čitanje, na primjer), odnosno dopuštate čitanje za ulogu 1C. Istovremeno, na udaljenom panelu Ograničenja pristupa podacima postavljate tekst zahtjeva, prema kojem se postavlja False ili Tačno, ovisno o postavkama. Obično se postavke pohranjuju u poseban registar informacija.

Ovaj upit će se izvršiti dinamički (kada se pokuša organizirati čitanje), za sve unose direktorija. Radi ovako: oni zapisi za koje je sigurnosni zahtjev dodijeljen - Istina, korisnik će vidjeti, ali drugi neće. 1C prava s utvrđenim ograničenjima označena su sivom bojom.

Operacija kopiranja identičnih RLS postavki izvodi se pomoću predložaka. Za početak kreirate predložak dajući mu naziv, na primjer, MyTemplate, u kojem odražavate sigurnosni zahtjev. Zatim, u postavkama prava pristupa navedite naziv ovog šablona na ovaj način: "#MyTemplate".

Kada korisnik radi u 1C Enterprise modu, prilikom povezivanja na RLS, može se pojaviti poruka o grešci poput: "Nedovoljna prava" (na primjer, za čitanje direktorija XXX). Ovo ukazuje da je RLS sistem blokirao čitanje nekih zapisa. Da biste spriječili da se ova poruka ponovo pojavi, potrebno je da u tekst zahtjeva unesete riječ DOZVOLJENO.



Slični članci