Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 8
  • Ograničavanje pristupa podacima 1s 8. Korištenje RLS-a

Ograničavanje pristupa podacima 1s 8. Korištenje RLS-a

U sustavu 1C Enterprise 8, danas ćemo nastaviti proučavati mehanizam prava i produbiti dalje u RLS mehanizam (ograničenje prava na razini zapisa).

U nastavku ćemo pogledati prednosti i nedostatke ove metode i pogledati postavljanje RLS-a u 1C Enterprise 8.3 koristeći primjer.

1C RLS (Record Level Security) ili ograničenje prava na razini snimanja- ovo su korisnička prava u sustavu 1C, koja vam omogućuju odvajanje prava za korisnike u kontekstu podataka koji se dinamički mijenjaju.

Najčešća vrsta postavki 1C RLS je ograničavanje vidljivosti korisnika u organizacijama ili klijentima (korisnik vidi samo "svoje" podatke).

Glavna prednost je prisutnost mehanizma uopće, mehanizam je prilično složen i zanimljiv. Omogućuje vrlo fino razlikovanje korisničkih prava - korisnici možda nisu ni svjesni postojanja drugih podataka u sustavu.

Nedostaci 1C 8 RLS

Među nedostacima može se primijetiti primjetan pad performansi sustava. To je zbog činjenice da platforma, kada gradi upit u bazi podataka, komplicira svaki zahtjev programera dodatnim uvjetima.

Također, među nedostacima je složenost postavljanja ove funkcionalnosti i poteškoća s otklanjanjem pogrešaka. 1C je objavio vrlo malo materijala o postavljanju i radu ove funkcionalnosti. Prilično je teško pronaći stručnjaka koji bi ispravno postavio mehanizam.

Postavljanje ograničenja prava na razini zapisa 1C RLS

Dopuštenja na razini zapisa (RLS) koriste se za ograničavanje sljedećih vrsta prava:

  • Čitanje
  • Dodatak
  • Promijeniti
  • Uklanjanje

Besplatno nabavite 267 video lekcija o 1C:

Izvana, postavljanje RLS-a (prava na razinu zapisa) slično je stvaranju jednostavnog . Primjer predloška za ograničavanje pristupa vidljivosti dokumenata klijentu iz zaglavlja dokumenta:

##Ako &koristite ograničenja prava pristupa na razini zapisa ##Onda

CurrentTable FROM #CurrentTable AS CurrentTable
LIJEVO PRIDRUŽIVANJE (ODABIR RAZLIČITIH
Sastav grupe. Grupa korisnika Link AS
IZ
Directory.User Groups.UsersGroups AS sastav grupe
GDJE
GroupComposition.User = &CurrentUser) KAO korisničke grupe
Softver (&Ograničenja prava pristupa na razini zapisa korištenja)
WHERE (&UseRecordLevelPermissionRestrictions = FALSE
ILI (NE 1 V
(ODABERI TOP 1
1 KAKO ODABRATI
IZ
Registar informacija Namjena vrsta objekata pristupa KAO Namjena vrsta objekata pristupa
GDJE
Svrha vrsta objekata pristupa.UserGroup = UserGroups.UserGroup
I IZBOR
WHEN Svrha tipova objekata pristupa. Vrsta objekta pristupa = VRIJEDNOST (Enumeracija. Vrste objekata pristupa. Protustrane)
I CurrentTable.#Parameter(1) LINK Directory.Counterparties
A NE CurrentTable.#Parameter(1) = VALUE(Directory.Accounts.EmptyLink)
ONDA IZBOR
KADA 1 V
(ODABERI TOP 1
1
IZ
Imenik.Druge strane AS Izvođači INTERNI JOIN Registar informacija. Postavke korisničkih prava pristupa AS postavke korisničkih prava pristupa
PO
UserAccessRightSettings.AccessObject = Counterparties.AccessGroupToCounterparty
I UserAccessRightSettings.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Counterparties)
I (Postavke korisničkih prava pristupa. Korisnik = Dodjela vrsta objekata pristupa. Grupa korisnika
ILI UserAccessRightSettings.User = VALUE(Directory.UserGroups.AllUsers))
I UserAccessRightSettings.Record = TRUE
GDJE
Counterparties.Link = CurrentTable.#Parameter(1))
ONDA ISTINA
DRUGO NETOČNO
KRAJ
INAČE TOČNO
KRAJ = NETOČNO))
AND NOT UserGroups.UserGroup IS NULL)
##Završi ako

U suštini, ovaj se upit dodaje svaki put kada se postavi upit tablici "#CurrentTable". Iz čega možemo zamisliti kakvo dodatno opterećenje nosi mehanizam ograničenja na rekordnoj razini.

Kao što vidite, zahtjev ima posebne parametre, na primjer "&Upotreba ograničenja prava pristupa na razini zapisa". Ovi parametri u radaru su odabrani iz metapodataka objekata - “ “. U pravilu se postavljaju na početku korisničke sesije.

Konstruktor ograničenja pristupa podacima

Radi praktičnosti programera, 1C 8.3 ima poseban uslužni program koji pomaže u konfiguriranju radara - Dizajner ograničenja pristupa podacima. Poziva se iz polja "Ograničenje pristupa". Kako slijedi:

RLS- ovo je sposobnost programera da postavi uvjete na tablice baze podataka za određene korisnike (grupe korisnika) i spriječi ih da vide nepotrebne stvari. Uvjet je boolean tipa. Ako se uvjet ocijeni istinitim, tada je pristup dopušten, u suprotnom je odbijen.

RLS se koristi istovremeno s postavljanjem normalnih prava pristupa. Stoga, prije nego počnete konfigurirati RLS, trebate dodijeliti redovita prava konfiguracijskim objektima.

RLS se koristi za sljedeće vrste prava pristupa:

  • Čitanje
  • Dodatak
  • Promijeniti
  • Uklanjanje

Kako konfigurirati RLS

Pogledajmo jednostavan primjer kako ga konfigurirati. Snimke zaslona su snimljene na verziji 1C Enterprise 8.2 (8.2.9.356). Sintaksa tekstualnih predložaka ograničenja opisana je u dokumentaciji za 8.2 u knjizi “Developer's Guide. 1. dio", pa se nećemo zadržavati na tome.

Dakle, prvi korak je definiranje predložaka ograničenja za svaku postojeću ulogu.

Nakon toga, na temelju navedenih predložaka, postavljaju se ograničenja na potrebne objekte. Za uređivanje teksta uvjeta možete koristiti dizajner ograničenja pristupa podacima.

Za uređivanje više uloga prikladno je upravljati kroz prozor "Sve uloge".

Možete koristiti prozor All Access Restrictions za kopiranje uvjeta na druge uloge. Predlošci se mogu samo ručno kopirati na druge uloge.

To je sve. Možete provjeriti rezultat.

Nedostaci korištenja RLS-a:

  1. Korištenje mehanizma ograničenja pristupa na razini zapisa dovodi do implicitnog povećanja tablica koje sudjeluju u upitu, što može dovesti do pogrešaka u klijent-poslužiteljskom načinu baze podataka.
  2. Može biti teško ili nemoguće implementirati složenu logiku aplikacije za kontrolu pisanja. U takvim slučajevima, bolje je koristiti uvjete u proceduri OnWrite().
  3. Pisanje uvjeta (upita) zahtijeva određene kvalifikacije programera.
  4. Dodatne poteškoće može stvoriti nemogućnost debugiranja uvjeta (upita).

U tipičnim konfiguracijama, prava na razini zapisa mogu se postaviti interaktivno za sljedeće objekte: organizacije, ugovorne strane, stavke, skladišta, odjele, pojedince, prijave kandidata i druge.

Treba imati na umu da su ograničenja prava pristupa na razini zapisa prilično intenzivan mehanizam, a što su složenija ograničenja postavljena, program će sporije raditi, posebno s velikom bazom podataka.

Sve postavke korisničkih prava koje ćemo napraviti u okviru ovog članka nalaze se u odjeljku 1C 8.3 “Administracija” - “Postavke korisnika i prava”. Ovaj je algoritam sličan u većini konfiguracija na upravljanim obrascima. Kao primjer poslužit će program 1C Računovodstvo, no postavljanje prava u drugim programima (1C UT 11, 1C ZUP 3, 1C ERP) radi se na potpuno isti način.

Idemo u odjeljak "Korisnici" u prozoru postavki. Ovdje vidimo dvije hiperveze: “Korisnici” i “Postavke prijave”. Prvi od njih omogućuje vam da idete izravno na popis korisnika ove baze podataka. Prije kreiranja novog korisnika, pogledajmo moguće postavke prijave (hiperveza s desne strane).

U ovom obrascu postavki možete konfigurirati složenost lozinke (najmanje 7 znakova, obavezan sadržaj raznih vrsta znakova itd.). Također možete odrediti duljinu lozinke, rok valjanosti te zabraniti korisnicima prijavu u program ako nisu bili aktivni određeno vrijeme.

Sada možete izravno nastaviti s dodavanjem novog korisnika u 1C. To možete učiniti klikom na gumb "Stvori", kao što je prikazano na slici ispod.

Prije svega, navest ćemo puno ime - "Dmitry Petrovich Antonov", i odabrati pojedinca iz odgovarajućeg imenika. Ovdje također možete naznačiti odjel u kojem naš zaposlenik radi.

Ime za prijavu “AntonovDP” automatski je zamijenjeno skraćenicom za puno ime “Dmitry Petrovich Antonov”. Postavimo lozinku i autentifikaciju 1C Enterprise. Ovdje također možete naznačiti može li ovaj korisnik samostalno promijeniti svoju lozinku.

Recimo da želimo da Dmitry Petrovich Antonov bude dostupan na popisu za odabir prilikom pokretanja ove baze podataka. Da biste to učinili, morate postaviti potvrdni okvir na stavku "Prikaži na popisu za odabir". Kao rezultat toga, prozor autorizacije prilikom pokretanja programa izgledat će kao što je prikazano na slici ispod.

Obratimo pozornost na još jednu važnu postavku na kartici korisničkog imenika - "Dopuštena je prijava u program." Ako kašnjenje nije postavljeno, tada korisnik jednostavno neće moći ući u ovu informacijsku bazu.

Prava pristupa

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

Pred nama se otvorio popis pristupnih profila prethodno unesenih u program. Označite okvire koji su potrebni.

Pristupite grupnim profilima

Profili pristupnih grupa mogu se konfigurirati iz glavnog obrasca za postavljanje korisnika i prava. Idite na odjeljak "Grupe pristupa" i kliknite na hipervezu "Profili grupa pristupa".

Kreirajmo novu grupu iz obrasca popisa koji se otvori. U tabelarnom odjeljku na kartici “Dopuštene radnje (uloge)” potvrdite okvire za one uloge koje će utjecati na prava pristupa korisnika uključenih u grupu koju stvaramo. Sve te uloge kreiraju se i konfiguriraju u konfiguratoru. Ne mogu se mijenjati ili stvarati novi iz korisničkog načina rada. Možete birati samo s postojećeg popisa.

RLS: Ograničenje pristupa na razini zapisa

Omogućuje vam fleksibilnije konfiguriranje pristupa programskim podacima u određenim područjima. Za aktiviranje označite istoimeni okvir na obrascu postavki korisnika i prava.

Imajte na umu da omogućavanje ove postavke može negativno utjecati na performanse sustava. Stvar je u tome da RLS mehanizam modificira sve zahtjeve ovisno o postavljenim ograničenjima.

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

Recimo da želimo da korisnici dodijeljeni testnoj grupi imaju pristup podacima za sve organizacije u ovoj informacijskoj bazi, osim za one navedene u profilu.

U gornjem tabličnom dijelu postavit ćemo ograničenja pristupa po organizaciji. U donjem dijelu ćemo pojasniti da pristup podacima (dokumentima, imenicima, itd.) neće biti omogućen za organizaciju “Roga LLC”.

Osma verzija platforme 1C:Enterprise (danas 8.3) donijela je mnoge promjene u odnosu na „sedmorku“, među kojima se posebno ističe mehanizam ograničenja prava pristupa na rekordnoj razini. Unatoč činjenici da je teoretski moguće učiniti bez njega, koristeći samo uloge, RLS vam omogućuje postizanje finijih postavki pristupa. Ali da biste pravilno upravljali ovim mehanizmom, morate jasno razumjeti njegovu bit i imati dovoljno iskustva u razvoju u 1C.

Što je RLS?

Bit ove funkcionalnosti je mogućnost programera da spriječi određenog korisnika ili grupu korisnika u pristupu tablicama ili poljima tablica baze podataka. Obično se ograničenja koriste za sprječavanje korisnika 1C da vide i uređuju povjerljive, tajne podatke, na primjer, ograničavajući zaposlenike tvrtke uključene u grupu na pregled dokumenata samo za svoju organizaciju. Također, mehanizam za ograničavanje prava pristupa na razini zapisa može se koristiti za uklanjanje nepotrebnih informacija sa sučelja.

Da biste mogli pisati upite za RLS ograničenja, trebate stvoriti ulogu ili preuzeti postojeću. Postavljanje RLS-a u 1C 8.3 može se koristiti za sljedeće korisničke radnje:

  • Dodatak;
  • Čitanje;
  • Izbrisati;
  • Promijeniti.

Osim najširih mogućnosti prilagodbe pristupa, RLS ima i nedostatke:

  1. Zahtjevi za kvalifikacije programera, budući da će zahtjev morati biti napisan na ugrađenom jeziku, uzimajući u obzir pravila sintakse;
  2. Nedostatak mogućnosti brzog otklanjanja pogrešaka u uvjetima;
  3. Ograničene mogućnosti za opisivanje logike: presloženi uvjeti i dalje će se morati pisati u modulima dokumenata i priručnika;
  4. U klijent-poslužiteljskoj verziji baze podataka moguć je implicitni rast tablica uključenih u upit. Štoviše, vrlo je teško pratiti ovaj proces;
  5. Zahtjevi za resursima. RLS ograničenja troše puno energije na klijentskom stroju i poslužitelju;
  6. Malo dokumentacije je besplatno dostupno.

Drugi problem koji se može pojaviti nakon postavljanja 1C RLS mogu biti izvješća. Činjenica je da programeri predviđaju moguća ograničenja RLS-a i grade izvješća na takav način da prikazuju samo dopuštene podatke. Ako korisnici imaju različita konfigurirana RLS ograničenja, podaci u izvješću za iste parametre mogu biti drugačiji. To može izazvati pitanja, pa trebate uzeti u obzir ove situacije kada dizajnirate izvješća ili pišete upite u RLS-u.

Stvorite RLS ograničenje

Kako biste dodali RLS ograničenje potrebno je pronaći željenu ulogu i otvoriti je duplim klikom.

Prozor koji se otvara sadrži 2 kartice: “Prava” i “Predlošci ograničenja”. Da biste nametnuli određena ograničenja za određenu radnju, morate je odabrati i kliknuti na zeleni plus u donjem desnom dijelu. Pojavit će se linija u kojoj možemo postaviti 1C RLS ograničenja na jeziku ugrađenom u 1C.


Ako znate sintaksu 1C (kao svoj džep), možete pisati izravno u polje "Ograničenje pristupa". Programeri 1C pružili su mogućnost otvaranja konstruktora upita, koji će pomoći i predložiti koja se ograničenja mogu napraviti. Da biste ga otvorili, potrebno je kliknuti na gumb s tri točkice (Select) ili F4 i pojavit će se prozor s gumbom “Query Builder…”.


U prozoru koji se pojavi možete konfigurirati ograničenja ne samo za ovaj direktorij, već i za druge objekte sustava. Da biste to učinili, morate ih dodati na karticu "Tablice i polja". Registriramo ograničenja u poljima imenika "Nomenklatura" i kliknemo na "U redu". Pazite na nazive varijabli: RLS parametri se postavljaju na početku korisničke sesije i moraju biti sadržani u objektu metapodataka.


Na kartici "Predlošci ograničenja" navodite upite koji su potrebni prilikom kopiranja istih RLS postavki u 1C 8.3. Nakon što ste dodali svoj predložak, možete koristiti njegov naziv u postavkama prava pristupa.

Također je moguće istovremeno dodati ograničenja za nekoliko uloga. Da biste to učinili, u konfiguracijskom stablu morate desnom tipkom miša kliknuti odjeljak "Uloge" i odabrati "Sve uloge".


Kao zaključak, želio bih napomenuti da je ovaj članak namijenjen konzultantima za programere 1C i može pomoći prvenstveno onima koji već imaju iskustva u razvoju 1C:Enterprise. Unatoč prividnoj jednostavnosti, poznavanje semantike i razumijevanje strukture poslovnih procesa vlastitog poduzeća ili organizacije korisnika za ispravnu raspodjelu prava zahtijevaju određenu razinu znanja i iskustva.

Platforma 1C:Enterprise 8 ima ugrađen mehanizam za ograničavanje pristupa podacima na razini zapisa. Ovdje možete pročitati opće informacije o tome. Ukratko, RLS će vam omogućiti da ograničite pristup podacima na temelju određenih uvjeta vrijednosti polja. Na primjer, možete ograničiti korisnički pristup dokumentima ovisno o vrijednosti atributa "Organizacija". Neki će korisnici raditi s dokumentima za organizaciju "Društvo za upravljanje", a drugi s organizacijom "Mliječna tvornica". Kao primjer.

Priprema

Primjer ćemo implementirati u demo konfiguraciju SCP 1.3. Kreirajmo korisnika "Skladištar" i dodajmo mu istoimenu ulogu "Skladištar".

Sada nastavimo izravno s postavljanjem prava pristupa na razini zapisa. Prijeđimo na sučelje "User Administration". U glavnom izborniku odaberite "Pristup na razini zapisa -> Opcije". Ovdje označite okvir "Ograniči pristup na razini zapisa prema vrsti objekta" i odaberite "Organizacije" na popisu objekata.

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

Kontrola pristupa na razini zapisa nije konfigurirana zasebno za svakog korisnika ili profil dopuštenja. RLS je konfiguriran za grupe korisnika. Dodajmo novu korisničku grupu, nazovimo je "Skladištari"

Sastav grupe na desnoj strani obrasca prikazuje popis korisnika koji pripadaju ovoj grupi. Dodajmo korisnika kojeg smo prethodno stvorili na popis. S lijeve strane nalazi se tablica ograničenja pristupa. Prilikom postavljanja RLS-a, odabrali smo da će pristup biti ograničen samo organizacijom, tako da vidimo samo jednu vrstu objekta pristupa. Kliknite na gumb "Postavke pristupa". Otvorit će se obrada postavljanja prava pristupa za trenutnu grupu.

Dodajmo organizaciju "IPE "Poduzetnik" na popis objekata pristupa za grupu. Vrsta nasljeđivanja prava ostat će nepromijenjena. Postavit ćemo pravo pristupnom objektu za čitanje i pisanje. Kliknite "OK", postavke su spremne. Upravo smo konfigurirali RLS na razini organizacije.

Ono što korisnik vidi

Pokrenimo program pod prethodno stvorenim korisnikom i otvorimo direktorij "Organizacije". Ovako će lista izgledati za našeg korisnika i za korisnika s punim pravima:

Kao što vidimo, korisnik skladištenja vidi samo jednu organizaciju za koju smo odobrili pristup za čitanje. Isto vrijedi i za dokumente, na primjer, primitak robe i usluga.

Dakle, korisnik ne samo da neće vidjeti organizacije za koje mu nije postavljen pristup, već neće moći čitati/pisati dokumente i druge objekte u informacijskoj bazi za koje su prava postavljena u ulozi za “Organizaciju” atribut.

Pogledali smo najjednostavniji primjer postavljanja RLS-a. U sljedećem članku govorit ćemo o implementaciji RLS mehanizma u konfiguraciji "Manufacturing Enterprise Management" verzija 1.3.

Najbolji članci na temu