Ograničavanje pristupa na nivou RLS zapisa

Kada je potreban precizniji pristup, mehanizam RLS - Record Level Security dolazi u pomoć.

Konfiguracije sistema 1C:Enterprise 8 prvobitno su bile pozicionirane kao program za računovodstvo u više kompanija, a jedno od prvih pitanja koje se pojavilo bilo je kako osigurati da korisnik vidi samo podatke koje je trebao vidjeti, a ne druge ? Naravno, postoje uloge koje se mogu koristiti za dopuštanje ili zabranu ove ili one radnje na objektu konfiguracije, a postoje i interfejsi koji vam omogućavaju da minimizirate stavke menija. Ali što učiniti u slučaju kada trebate organizirati „inteligentni“ pristup istom objektu konfiguracije, skrivajući samo određene zapise? Upečatljiv primjer je imenik „Organizacije“: evidencija u bazi podataka se vodi za nekoliko kompanija, imenik je fizički isti, dokumenti za preduzeća se čuvaju. Jasno je da u ovom slučaju, u dodijeljenim korisničkim ulogama, ne možete jednostavno ukloniti prava čitanja i pregleda, potrebna su vam detaljnija podešavanja - RLS.

RLS ograničenja se mogu postaviti za sljedeće radnje na objektima baze podataka:
- Čitanje – dobijanje zapisa iz tabele baze podataka;
- Dodavanje – dodavanje novih zapisa bez promjene postojećih;
- Promjena – izmjena postojeće evidencije;
- Brisanje – brisanje nekih zapisa bez promjene drugih.

Ograničenje pristupa je postavljeno na podskup definiran uvjetom odabira specificiranim korištenjem jezika upita. Ako je rezultat upita TRUE, tada će se odobriti pristup određenoj radnji, inače će pristup biti odbijen.
Primjer zahtjeva:
Code 1C v 8.x ##Ako &koristite ograničenje od strane organizacije ILI &koristite ograničenje od strane pojedinaca ##Onda
CurrentTable FROM #CurrentTable AS CurrentTable
LIJEVO PRIDRUŽENJE (IZABIR RAZLIČITIH
Grupa Composition.Link AS korisnička grupa
OD
Directory.User Groups.UsersGroups AS Grupni sastav
GDJE
GroupComposition.User = &TrenutniKorisnik) AS korisničke grupe
OD (TAČNO)
LEFT CONNECTION Directory.Organizacije KAO SeparateDivisions
Softver SeparateDivisions.HeadOrganization = CurrentTable.#Parameter(1)
A NE SeparateDivisions.HeadOrganization = VALUE(Directory.Organizations.EmptyLink)
ILI SeparateDivisions.Ref = Trenutna tabela.#Parametar(1)
GDJE (NE 1 IN
(ODABIR VRH 1
1 KAKO ODABRATI
OD
Registar informacija Svrha tipova objekata pristupa AS Svrha tipova objekata pristupa
GDJE
Svrha tipova pristupa Objects.UserGroup = UserGroups.UserGroup
I IZBOR
##Ako &Koristi organizaciono ograničenje ##Onda
KADA DodjelaAccessObjectTypes.AccessObjectType = VRIJEDNOST(Enumeration.AccessObjectTypes.Organizations)
ONDA IZBOR
KADA 1 V
(ODABIR VRH 1
1
OD
(IZABIR
1 KAKO ODABRATI
) KAKO OPTIMIZIRATI INTERNO PRIDRUŽENJE Postavke prava pristupa korisnika KAKO Postavke prava pristupa korisnika
BY
UserAccessRightsSettings.AccessObject = SeparateUnits.Link
I UserAccessRightSettings.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Organizations)

ILI UserAccessRightSettings.User = VALUE(Directory.UserGroups.AllUsers)))
ONDA ISTINA
ELSE FALSE
KRAJ
##EndIf

##Ako &UseRestrictionByIndividuals ##Onda
KADA Dodjela tipova pristupnih objekata Tip objekta pristupa = VRIJEDNOST (Enumeracija. Vrste pristupnih objekata. Pojedinci).
ONDA IZBOR
KADA 1 V
(ODABIR VRH 1
1
OD
Directory.Individuals AS Individuals INTERNAL JOIN Informacije Registrirajte se. Postavke prava pristupa korisnika KAO postavke korisničkih prava pristupa
BY
UserAccessRightsSettings.AccessObject = Individuals.IndividualAccessGroup
I UserAccessRightsSettings.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Individuals)
I UserAccessRightSettings.DataArea = VALUE(Enumeration.DataAreasAccessObjects.IndividualsData)
I (Postavke prava pristupa korisnika. Korisnik = Dodjela tipova objekata pristupa. Grupa korisnika
ILI UserAccessRightSettings.User = VALUE(Directory.UserGroups.AllUsers))
GDJE
Individuals.Link = Trenutna tabela.#Parametar(2))
ONDA ISTINA
ELSE FALSE
KRAJ
##EndIf

INAČE TAČNO
KRAJ = LAŽ))
A NE UserGroups.UserGroup JE NULL
##EndIf

Posebni objekti konfiguracije—parametri sesije—koriste se kao varijable u RLS zahtjevima. Pored uobičajenih tipova objekata, tip parametra može biti i NULL, UniqueIdentifier, FixedArray, Type of Accumulation Movement, itd. Posebno bih istaknuo tip Value Storage, koji vam omogućava pohranjivanje heterogenih podataka u jednom parametru ( na primjer, GeneralValues). Vrijednosti parametara sesije obično se postavljaju u proceduri Kada se sistem pokrene.

Dakle, kada se prikazuje lista stavki, možete prikazati samo neke grupe imenika prilikom odabira ugovorne strane, možete prikazati ne sve druge ugovorne strane u dokumentu, već samo one sa kojima korisnik može da radi pri generisanju izveštaja; , možete sakriti podatke za određenu podjelu. Postoji mnogo opcija za korištenje RLS-a, poslovne potrebe ponekad diktiraju zapanjujuće zahtjeve, na primjer, kontrola pristupa projektima i specifikacijama.

Navedena ograničenja RLS-a sistem dodaje svakom zahtjevu i svakoj akciji s bazom podataka. Stoga je potrebno zapamtiti da je zloupotreba RLS mehanizma prepuna smanjenja performansi sistema.

U tipičnim konfiguracijama, mogućnost konfigurisanja prava pristupa na nivou zapisa je obezbeđena samo za grupe korisnika. One. Svaki korisnik sistema je uključen u jednu ili više grupa za koje je konfigurirano pravilo pristupa objektu ili skupu elemenata. Što više grupa pripada korisniku, performanse sistema će biti niže.

1C platforma ne pruža eksplicitno mogućnost otklanjanja grešaka u radu RLS mehanizma, ali je to ipak sasvim moguće učiniti. Da biste to učinili, možete koristiti univerzalnu konzolu za izvještavanje (verzija ne niža od 2.6.9.2), koja ima funkciju „Pokreni kao“ na kartici „Podaci“. Obrada će kreirati COM vezu koristeći specificirano korisničko ime i lozinku, te će rezultat zahtjeva poslati na konzolu.

Koristeći predloške ograničenja dostupnih u konfiguracijama, ili kreirajući vlastiti zahtjev pomoću dizajnera ograničenja pristupa podacima, možete prilagoditi rad baze podataka do najsitnijih detalja, definirajući tko može vidjeti što, što je dostupno i što je dozvoljeno. Jedini nedostatak je smanjenje performansi baze podataka, ali kako kažu, sve dobre stvari moraju biti umjerene.

Možda će vas zanimati i

9
Instalirali smo novi terminal server, instalirali 1C na njega, korisnici terminala su neopisivo sretni, sve jednostavno leti :) I onda se ovo moralo dogoditi, šefu računovodstva se nije svidjelo raditi... 2
Korisnik sa pravima KKM Administrator zatvara smjenu kase (Z). Pojavljuje se poruka: "Brisanje KKM računa nije uspjelo!" FR ispisuje Z-izvještaj, ali se izvještaj o maloprodaji ne generira. Treba dati... 1
Prilikom povezivanja iz jedne baze podataka u drugu preko COM-a, iznenada je počela da se pojavljuje sljedeća greška: “V82.COMConnector.1: Licenca nije pronađena COM vezom,” iako na serverima nisu napravljene nikakve promjene. Izdanje platforme je bilo 8.2.13.... 0
Da biste upisali datoteke u ZIP arhivu, potrebno je izvršiti nekoliko jednostavnih koraka: * Kreirajte arhivu sa potrebnim parametrima u koje će datoteke biti smještene. * Postavite potrebne datoteke u arhivu. * Zapišite... 0
Da biste pročitali fajlove iz ZIP arhive, potrebno je da izvršite nekoliko jednostavnih koraka: - Otvorite potrebnu arhivu - Raspakujte fajlove Kreiranje objekta Read ZIP datoteke može se uraditi na dva načina - kreirati... 4
Morate kreirati prečice (u bilo kojem folderu, desni klik - Novo - Prečica) sa naredbama: Onemogući ili Isključi korisnike: Za opciju Datoteka: " C:

Klasični problem: dati korisniku pristup bilo kojem objektu, ali ne na sve elemente/dokumente, već samo na neke.

Na primjer, tako da menadžer može vidjeti izvještaje samo za svoje klijente.

Ili bi to moglo biti ograničenje “sve osim nekih”.
Ili ograničenje nije na referentne knjige/dokumente, već za registraciju podataka

Na primjer, tako da korisnici ne mogu izvući podatke o uplatama partnerima pomoću bilo kojeg izvještaja.

U suštini, ovo je suptilna i vrlo fleksibilna postavka „šta ovaj korisnik može vidjeti, a o čemu ne mora nagađati“.

Zašto RLS?

Većina implementacija zahtijeva različite korisnike da postave različite razine pristupa informacijama u bazi podataka.

U konfiguracijama, posebni objekti metapodataka - uloge - su odgovorni za moguća prava pristupa podacima. Svakom korisniku infobaze dodijeljena je jedna ili više uloga. Oni određuju da li su operacije na određenim objektima metapodataka moguće (čitanje, pisanje, postavljanje, itd.).

Ali to nije sve.

Često je neophodno ne samo otvoriti/zabraniti pristup određenom objektu, već ograničiti pristup dijelu podataka u njemu.

Ovaj problem se ne može riješiti korištenjem samo uloga.– u tu svrhu je implementiran mehanizam za ograničavanje pristupa na nivou zapisa (RLS).

Ograničenja predstavljaju uslove pod kojima će biti dozvoljena radnja na podacima (čitanje, pisanje, itd.). – na ovaj način možete ograničiti pristup ne objektu u cjelini, već samo dijelu njegovih podataka.

O RLS-u - detaljnije: 8 videa i PDF

Budući da je ovo uobičajen zadatak administracije 1C, predlažemo da pogledate detaljnije materijale:

Ograničavanje pristupa podacima pomoću uloga

Ovaj video objašnjava kako ograničiti pristup podacima pomoću uloga. Pojašnjeno je da uloge ograničavaju pristup tipu objekata infobaze (poseban direktorij, ali ne i specifični elementi direktorija).

Ograničenje nivoa rekorda (RLS)

Ovaj video govori o mehanizmu ograničenja pristupa na razini zapisa (RLS), kada možete konfigurirati pristup ne cijelom direktoriju u cjelini, već njegovim pojedinačnim elementima, ovisno o onima koji su pohranjeni u bazi podataka. Slična ograničenja propisana su u ulogama.

Implementacija ograničenja pristupa na nivou zapisa za imenik izvođača

Ovaj video objašnjava kako postaviti menadžerski pristup samo njihovim vlastitim partnerima koji su im dodijeljeni u demo konfiguraciji Upravljane aplikacije.

Kako funkcionišu ograničenja pristupa na niskom nivou

Ovaj video objašnjava kako platforma transformiše upite dostavljene DBMS serveru za izvršenje kada postoje ograničenja pristupa na nivou zapisa.

Zajednička primjena višestrukih ograničenja pristupa na nivou zapisa

Korisniku infobaze može se dodijeliti nekoliko uloga. Štaviše, svaka uloga može imati svoja ograničenja pristupa na nivou zapisa. Ovaj video objašnjava kako se sistem ponaša kada se nametnu ograničenja.

Nametanje ograničenja korištenjem metode ALL

Ovaj video opisuje prvu metodu nametanja ograničenja na nivou rekorda - metodu SVE. U tom slučaju, ako izbor uključuje zapise kojima je pristup ograničen, prikazat će se poruka o grešci.

Nametanje ograničenja korištenjem DOZVOLJENE metode

Ovaj video opisuje prvi metod nametanja ograničenja na nivou rekorda - DOZVOLJENI metod. U ovom slučaju, u odabir će biti uključeni samo oni zapisi na koje korisnik ima prava pristupa.

Evo nekoliko tema sa kursa:

  • Instaliranje i ažuriranje platforme 1C:Enterprise 8 – ručni i automatski, za Windows i Linux
  • Automatski start za obavljanje rutinskih operacija
  • Ažuriranje konfiguracija iz korisničkog načina rada
  • Ažuriranje nestandardnih konfiguracija. Kako izbjeći probleme prilikom ažuriranja modificirane standardne konfiguracije
  • Kreirajte svoje isporuka cfu fajlova
  • BSP alati: eksterni obrasci, obrada popunjavanja dokumenata itd.
  • Upotreba besplatni DBMS PostgreSQL
  • Instalacija i pokretanje klaster servera 1C: Preduzeće 8
  • Administrativni program za postavljanje klastera i radnih servera
  • Postavke RLS koristeći primjer UPP 1.3 i ERP 2
  • Šta učiniti, ako podaci u informacionoj bezbednosti su oštećeni
  • Postavke razmjene podataka između konfiguracija
  • Organizacija grupni razvoj
  • Postavljanje i korištenje hardverske zaštitne ključeve
  • 1C softverske licence: ugradnja i vezivanje na vanjsku opremu

U svakom slučaju, u nekom trenutku morat ćete implementirati 1C, konfigurirati rezervacije, prava pristupa, različite načine pokretanja, testirati integritet baza podataka, osigurati rad servera itd.

I bolje je to učiniti odmah.

Da se to kasnije ne desi “...! Pa šta do...! Tvoje...!” – i drugi izrazi žaljenja :)

Mehanizam RLS u 1C (ograničenja pristupa na nivou zapisa) omogućava programeru da postavi sopstvene izbore i uslove direktno na tabelama baze podataka. Takva ograničenja se mogu primijeniti na čitanje, dodavanje, modificiranje i brisanje.

Glavni nedostatak metode je smanjenje performansi sistema u cjelini. Poenta je da se dodatni odabiri dodaju glavnim upitima koji dinamički preuzimaju podatke. Svaki put kada korisnik pristupi podacima u bazi podataka koji su podložni ograničenju, program će izvršiti provjeru izvršavanjem upita.

Uprkos ovom značajnom nedostatku, RLS mehanizam je prilično zgodan i fleksibilan. Uz njegovu pomoć možete konfigurirati sistem tako da nijedan korisnik ne vidi ništa „nepotrebno“. Ograničavanje pristupa vašim zaposlenicima, posebno ako ih ima mnogo, vrlo je produktivno. Poenta nije toliko nepovjerenje, nego zaštita od slučajnih grešaka i ljudskog faktora. Što je manje podataka dostupno, lakše je raditi s njima i ne zbuniti se.

U jednom od naših članaka već smo se djelomično dotakli teme ograničavanja pristupa na nivou zapisa. U ovom slučaju će se uzeti u obzir detaljnija konfiguracija od strane programera.

Konfiguriranje ograničenja pristupa na početnom nivou

Konfiguracija i razvoj radara vrši se u 1C konfiguratoru. Da biste to učinili, prvo kreirajte ulogu u grani metapodataka.

Na kartici „Predlošci ograničenja“ možete kreirati jedan ili više takvih predložaka. Izvana se praktički ne razlikuju od uobičajenih zahtjeva.

Zatim idite na karticu "Prava" uloge za koju želite postaviti ograničenje. Radi praktičnosti, možete koristiti dizajner upita, koji ima samo dvije kartice “Tabele i polja” i “Uvjeti”.

Kao što možete vidjeti na slici ispod, dodali smo samo jedno ograničenje s tekstom:

WHEREProductGroup = &Grupa proizvoda

Kao rezultat toga, kada korisnik pristupi direktoriju “Nomenklatura”, program će dodati red sa ovim uvjetom svim zahtjevima.

Ispis (Ctrl+P)

Ograničavanje pristupa podacima

Mehanizam ograničenja pristupa podacima (također poznat kao RLS, zaštita na nivou reda) omogućava vam da upravljate pravima pristupa ne samo na nivou metapodataka, već i na nivou objekata baze podataka 1C:Enterprise. Za ograničavanje pristupa podacima, mogu se koristiti sljedeći objekti 1C:Enterprise:
● uloge,
● parametri sesije,
● funkcionalne opcije,
● privilegovani zajednički moduli,
● ključna riječ DOZVOLJENO u jeziku upita.
Dijeljenje navedenih objekata omogućava maksimalnu fleksibilnost kada je potrebno razlikovati prava pristupa podacima između korisnika koji obavljaju različite funkcije.
Ograničenja pristupa podacima mogu se nametnuti sljedećim operacijama podataka (prava pristupa): čitanje (pravo čitanja), dodavanje (pravo dodavanja), mijenjanje (pravo promjene) i brisanje (pravo brisanja). Trenutni korisnik će moći izvršiti potrebnu operaciju u sljedećim slučajevima:
● Za operacije čitanja i brisanja, objekt koji se nalazi u bazi podataka mora biti usklađen sa ograničenjem pristupa podacima.
● Za operaciju dodavanja, ograničenje pristupa podacima mora odgovarati objektu koji planirate zapisati u bazu podataka.
● Za operaciju promjene, ograničenje pristupa podacima mora odgovarati objektu i prije promjene (tako da se objekt čita) i nakon promjene (tako da je objekt upisan).
Kada primjenjujete ograničenja pristupa podacima, zapamtite da možete specificirati samo jedan uvjet za operacije promjene, dodavanja i brisanja, ali više od jednog ograničenja pristupa podacima može se navesti za operaciju čitanja. To znači da se mogu postaviti različiti uslovi za čitanje različitih polja objekta, a prilikom postavljanja uslova možete odrediti i naziv određenog polja i posebno polje Ostala polja. U prvom slučaju, uslov će biti nametnut samo ako izbor (koji čita podatke) sadrži polje za koje je postavljeno ograničenje, au drugom slučaju ograničenje će biti nametnuto za sva polja objekta, osim za polja za koja su ograničenja eksplicitno postavljena.
Prilikom postavljanja ograničenja na određeno polje, ovo polje će se čitati ako je ograničenje zadovoljeno, a kada se postavlja ograničenje na ostala polja, podaci o objektu će se čitati samo ako je ograničenje zadovoljeno za sva polja objekta uključena u zahtjev za čitanje podataka.
Za sljedeće tipove objekata baze podataka mogu se nametnuti različita ograničenja na različite vrste promjena (dodavanje, modifikacija, brisanje):
● Planovi razmjene,
● Imenici,
● Dokumenti,
● Planovi za tipove karakteristika,
● Kontni plan,
● Planovi za tipove obračuna,
● Poslovni procesi,
● Zadaci.
Za sljedeće tipove objekata baze podataka moguće je nametnuti ograničenja na čitanje ne samo cijelog objekta, već i njegovih pojedinačnih polja:
● Planovi razmjene,
● Imenici,
● Dokumenti,
● Dnevnici dokumenata,
● Planovi za tipove karakteristika,
● Kontni plan,
● Planovi za tipove obračuna,
● Informacioni registri,
● Poslovni procesi,
● Zadaci.
PAŽNJA! Prilikom pristupa poljima objekata baze podataka koristeći svojstva objekata aplikacije iz ugrađenog jezika 1C:Enterprise, čita se cijeli objekt, a ne samo vrijednost polja koje se koristi. Izuzetak je kod primanja pogleda, kada će se čitati samo vrijednosti polja uključenih u generiranje pogleda.
Ograničenja pristupa su sadržana u ulogama, mogu se navesti za većinu metapodataka objekata i napisana su na posebnom jeziku koji je podskup jezika upita.

Jezik ograničenja pristupa podacima

Ograničenja pristupa podacima su opisana na posebnom jeziku, koji je podskup jezika upita (detaljan opis jezika upita. Jezik ograničenja pristupa podacima ima sljedeće promjene u odnosu na jezik upita:
● U zahtjevu za ograničenje pristupa podacima uvijek postoji jedna tabela kao izvor podataka - to je tabela objekta na koji se primjenjuje ograničenje (glavni objekt ograničenja).
● Opis zahtjeva je skraćen. Jezik ograničenja pristupa podacima koristi samo odeljke FROM i WHERE jezika upita. Dakle, opis jezika upita izgleda ovako:
ODABIR [DOZVOLJENO] [RAZLIČITO] [ PRVO<Количество> ]
<Lista polja za izbor>
[OD <Список источников> ]
[GDJE<Условие отбора> ]
[GROUP BY <Поля группировки> ]
[IMATI<Условие отбора> ]
[ZA PROMJENU [ <Список таблиц верхнего уровня> ]]
Dok je opis jezika upita za ograničenje pristupa podacima sljedeći:
[Alias ​​tabele glavnog objekta ograničenja]
[OD <Список источников> ]
[GDJE<Условие отбора> ]

U ugniježđenim upitima koji se koriste u jeziku ograničenja pristupa podacima, skup dozvoljenih mogućnosti je ograničen;
● Možete specificirati parametre sesije i funkcionalne opcije kao elemente uslova;
● U bilo kom trenutku u zahtevu za ograničenje pristupa podacima, dozvoljeno je koristiti šablone koji pojednostavljuju ograničenja pisanja.
Glavni dio ograničenja je uvjet koji se procjenjuje za svaki zapis tablice baze podataka koji podliježe ograničenju pristupa podacima. Zapis se smatra dostupnim ako se kao rezultat rada uvjeta za jedan tablični zapis glavnog objekta ograničenja dobije neprazna tablica (tj. tabela sa 1 ili više zapisa). Ako uvjet rezultira praznom tablicom, zapis za koji je uvjet ispunjen na ovaj način smatra se nedostupnim. Štaviše, promjena unosa u tablicu glavnog objekta ograničenja
smatra se valjanim ako unos nije u suprotnosti sa ograničenjem navedenim za pravo, i prije i nakon izvršenja operacije izmjene.

Polja tabele

U ograničenjima pristupa podacima možete koristiti:
● Polja tabele objekta za koje je opisano ograničenje pristupa podacima.
Na primjer, ako je nametnuto ograničenje na čitanje elemenata imenika Counterparties, tada ograničenje može koristiti polja imenika Counterparties i njegove tabelarne dijelove. Konkretno, najjednostavnija ograničenja čitanja elemenata imenika Counterparties mogu izgledati ovako:

GDJE Naziv = “Fabrika cigle”
ili ovako:

GDJE Products.Name= “Cigla je crvena”
Gdje su proizvodi tabelarni dio imenika izvođača radova.
● Polja tabela objekata kojima se pristupa preko veza u glavnom objektu ograničenja.
Na primjer, ako atribut glavnog upravitelja direktorija Contractors ima tip veze s direktorijem Korisnici, tada ograničenje pristupa može imati, na primjer, sljedeći oblik:

GDJE MainManager.Code= “Ivanov”
Ili:

GDJE Glavni menadžer.Ime pojedinca= “Petrovski”
● Polja tabela objekata povezana sa glavnim objektom ograničenja određenim uslovima i izrazima nad njima.
Na primjer, sljedeće ograničenje može biti nametnuto na čitanje elemenata imenika Counterparties:

Counterparties
OD
Directory.Counterparties KAKO Counterparties
LIJEVA KONEKCIJA Imenik.Korisnici AS korisnici
Softver = Users.Name
WHERE = “Petrovski”
Ovo ograničenje koristi polja elemenata direktorija Korisnici koji su pridruženi ovom elementu direktorija Counterparties po vrijednosti polja Ime.

Ugniježđeni upiti

Ugniježđeni upiti se koriste za formiranje skupova zapisa koji se mogu koristiti:
● za povezivanje sa tabelom glavnog objekta ograničenja;
● za upotrebu kao operand za B ili NOT B operacije poređenja.
Ugniježđeni upiti mogu koristiti bilo koje funkcije jezika upita osim:
● operator U HIJERARHIJI;
● predlozi REZULTATA;
● rezultati ugniježđenih upita ne bi trebali sadržavati tabelarne dijelove;
● neke virtuelne tabele, posebno Ostaci i obrti.
U sljedećem primjeru ograničenja čitanja iz direktorija Računi, potupit se koristi kao skup zapisa koji se povezuje s glavnim objektom ograničenja:

Counterparties
OD
Directory.Counterparties KAKO Counterparties
LIJEVA KONEKCIJA
(IZABIR
Korisnici.Ime, Korisnici.Pojedinac
OD
Imenik.Korisnici AS korisnici
GDJE
Users.Code> “Petechkin”) AS Korisnici
BY Ime i prezime = Users.Name
GDJE Users.Individual.Name= “Petrovski”
Sljedeći primjer pokazuje ograničenje čitanja iz direktorija podataka o pasošu pojedinaca, u kojem se koristi ugniježđeni upit u
kao operand operacije poređenja B:

GDJE
Podaci o pasošu Pojedinac. Pojedinac IN
(SELECT VARIOUS
Radnici.Pojedinac KAO POJEDINAC
OD
Registar informacija.Zaposleni KAO RADNICI)
Ako je u ugniježđenom upitu potrebno dobiti podatke iz tabelarnog dijela, tada u dijelu FROM ugniježđenog upita morate direktno pristupiti tabelarnom dijelu. Na primjer, umjesto:

SELECT Link AS Link.
Products.Name KAKO Naziv proizvoda
OD Directory.Counterparties
kao upit ugniježđen unutar ograničenja, trebali biste koristiti:

Opcije sesije

Zahtjevi za ograničenje pristupa podacima mogu uključivati ​​parametre sesije. Na primjer, za čitanje elemenata direktorija Grupe e-pošte Mogu se postaviti sljedeća ograničenja pristupa:

GDJE Owner.AccountAccess.User = &Trenutni korisnik
I Owner.AccountAccess.Administration= TRUE

CurrentUser je parametar sesije

Funkcionalne opcije

Zahtjevi za ograničenje pristupa podacima mogu uključivati ​​funkcionalne opcije. Mogu se koristiti samo funkcionalne opcije neovisne o parametrima. Na primjer, ako direktorij Items ima atribut MainWarehouse, tada ograničenje čitanja ovog atributa može izgledati ovako:

GDJE &Skladišno računovodstvo = TRUE

Gdje je računovodstvo skladišta funkcionalna opcija

Karakteristike upotrebe

Ne mogu se sva polja glavnog objekta podataka ograničenja koristiti u ograničenjima na sljedeće tipove objekata baze podataka:
● u registrima akumulacije ograničenja pristupa mogu sadržati samo mjerenja glavnog objekta ograničenja;
● u računovodstvenim registrima u ograničenjima se mogu koristiti samo bilansne mjere glavnog objekta ograničenja.
BILJEŠKA. Ako se, pod uslovima ograničenog pristupa podacima registra akumulacije prometa, koriste mjerenja koja nisu uključena u zbrojeve, tada
Prilikom pristupa virtualnoj tablici okretaja, pohranjeni zbrojevi se ne koriste i zahtjev se izvršava u potpunosti prema tablici kretanja.

Radnje ograničenja pristupa

Ograničenja pristupa se provjeravaju kad god se izvode odgovarajuće operacije nad objektima baze podataka (iz dijaloga, iz ugrađenog jezika, preko upita) i mogu djelovati na jedan od dva načina:
● Sve. Metoda “sve” podrazumijeva da se neka operacija nad podacima (iz dijaloga, iz ugrađenog jezika ili putem upita) mora izvršiti na svim objektima baze podataka koje ova operacija podrazumijeva. Ako takva operacija zahtijeva čitanje ili modificiranje objekata baze podataka za koje nisu ispunjena odgovarajuća ograničenja pristupa, operacija se prekida
abnormalno zbog kršenja pristupa.
● Dozvoljeno. Metoda "dozvoljena" podrazumijeva da prilikom izvođenja operacije nad podacima treba čitati samo one objekte baze podataka koji zadovoljavaju odgovarajuća ograničenja pristupa. Objekti baze podataka koji ne zadovoljavaju ograničenja pristupa smatraju se nedostajućima prilikom izvođenja takve operacije i ne utječu na rezultat operacije.
Ograničenja pristupa podacima nameću se objektima baze podataka u trenutku kada 1C:Enterprise pristupa bazi podataka. U verziji klijent-server 1C:Enterprise, ograničenja se primjenjuju na 1C:Enterprise server.
Način rada ograničenja odabranih za izvođenje svake operacije nad podacima je određen svrhom ove operacije i stepenom odgovornosti njenih rezultata. Konkretno, “dozvoljeni” metod se koristi kada se prikazuju dinamičke liste i neke druge interaktivne radnje. Metoda „sve“ se koristi kada se izvode bilo kakve operacije s objektima aplikacije iz ugrađenog jezika 1C:Enterprise, uključujući sve promjene objekata baze podataka. Stoga, na primjer, mogu nastati poteškoće pri konstruiranju selekcije za metodu Select() menadžera direktorija, dokumenata i drugih s naknadnim zaobilaženjem rezultata ako se na odgovarajući objekt postavi prilično složeno ograničenje, jer nije svaki uvjet u ograničenje prava pristupa može se adekvatno predstaviti kao izbor za metodu Select().
U upitima možete kontrolirati kako funkcionišu ograničenja pristupa podacima. U tu svrhu, jezik upita daje ključnu riječ DOZVOLJENO. Ako zahtjev ne navodi DOZVOLJENO, tada se ograničenja primjenjuju na "sve" način. Ako je navedena riječ DOZVOLJENO, tada se odabire “dozvoljeni” metod.
Važno je da ako upit ne specificira ključnu riječ ALLOWED, tada svi odabiri navedeni u tom upitu ne smiju biti u sukobu s bilo kojim ograničenjem čitanja na objektima baze podataka koji se koriste u upitu. Štaviše, ako upit koristi virtualne tablice, tada se odgovarajući odabiri moraju primijeniti na same virtualne tablice.
primjer:

ODABIRATI
ContactInformationSectionFirst.Introduction
OD RegisterInformation.ContactInformation.SliceLast(, Type = &Type)
KAKO ContactInformationSliceFirst
GDJE
ContactInformationSliceFirst.Type = &Tip
Kada koristite objektnu tehnologiju, pristup podacima u DOZVOLJENOM načinu nije podržan. Pretpostavlja se da se objektna tehnologija koristi za najkritičnije operacije nad podacima, uključujući i njihovu promjenu. Da biste dobili sve podatke koristeći objektnu tehnologiju, bez obzira na postavljena ograničenja, možete izvršiti potrebne radnje u privilegovanom modulu ili u ime korisnika s punim pravima. U objektnoj tehnologiji ne postoje načini za dobijanje samo dozvoljenih podataka.

Mehanizam za nametanje ograničenja

Svaka operacija na podacima pohranjenim u bazi podataka u 1C:Enterprise u konačnici dovodi do pristupa bazi podataka s nekim
zahtjev za čitanje ili promjenu podataka. U procesu izvršavanja upita bazi podataka, interni mehanizmi 1C:Enterprise nameću ograničenja pristupa. pri čemu:
● Generiše se lista prava (čitanje, dodavanje, promena, brisanje), lista tabela baze podataka i lista polja koje koristi ovaj zahtev.
● Iz svih uloga trenutnog korisnika biraju se ograničenja pristupa podacima za sva prava, tabele i polja uključena u zahtjev. Štoviše, ako uloga ne sadrži ograničenja pristupa podacima tablice ili polja, to znači da su vrijednosti potrebnih polja iz bilo kojeg zapisa dostupne u ovoj tablici. Drugim riječima, odsustvo ograničenja pristupa podacima znači postojanje ograničenja
GDE je Istina.
● Dohvaća trenutne vrijednosti svih parametara sesije i funkcionalnih opcija uključenih u odabrana ograničenja.
Da bi dobio vrijednost parametra sesije, trenutni korisnik ne mora imati dozvolu da dobije tu vrijednost. Međutim, ako vrijednost nekog parametra sesije nije postavljena, doći će do greške i upit baze podataka neće biti izvršen.
Na prijem funkcionalnih opcija utiče svojstvo Privilegovani režim nakon prijema funkcionalne opcije.
Ako je ovo svojstvo obrisano, tada trenutni korisnik mora imati pristup za čitanje objekta u kojem je pohranjena opcija funkcije.
● Ograničenja izvedena iz jedne uloge se kombinuju korišćenjem operacije I.
● Ograničenja izvedena iz različitih uloga se kombinuju korišćenjem operacije ILI.
● Konstruisani uslovi se dodaju u SQL upite sa kojima 1C:Enterprise pristupa DBMS-u. Prilikom pristupa podacima iz uvjeta ograničenja pristupa, provjera prava se ne vrši (ni za objekte metapodataka niti za objekte baze podataka). Štaviše, mehanizam za dodavanje uslova zavisi od izabranog načina rada ograničenja „sve“ ili „dozvoljeno“.
Metoda "sve".
Prilikom nametanja ograničenja metodom “sve”, SQL upitima se dodaju uvjeti i polja kako bi 1C:Enterprise mogao dobiti informacije o tome da li su prilikom izvršavanja upita baze podataka korišteni podaci koji su zabranjeni za datog korisnika ili ne. Ako su korišteni zabranjeni podaci, zahtjev će se srušiti. Nametanje ograničenja pristupa metodom „sve“ šematski je prikazano na Sl. 1:

Rice. 1. Metoda “Sve”.

"Dozvoljena" metoda
Kada se primjenjuju ograničenja korištenjem “dozvoljene” metode, SQL upitima se dodaju uvjeti tako da zapisi koji su zabranjeni za trenutnog korisnika ne utječu na rezultat upita. Drugim riječima, kada su ograničenja nametnuta u „dozvoljenom“ načinu rada, zapisi zabranjeni za datog korisnika smatraju se nedostajućim, što je šematski prikazano na slici 3.

Ostali objekti koji se odnose na ograničenja pristupa podacima

Prilikom dizajniranja konfiguracija koje koriste ograničenja pristupa podacima, objekti metapodataka kao što su parametri sesije, funkcionalne opcije i dijeljeni moduli sa oznakom Privileged mogu biti korisni.
Opcije sesije
Parametri sesije se mogu koristiti u ograničenjima pristupa podacima na isti način na koji se parametri zahtjeva mogu koristiti u zahtjevu.
Funkcionalne opcije
Funkcionalne opcije neovisne o parametrima mogu se koristiti u ograničenjima pristupa podacima na isti način na koji se parametri upita mogu koristiti u upitu.
Privilegirani zajednički moduli

Ako je za zajednički modul odabrana Privilegirana zastavica, tada izvršavanje procedura i funkcija ovog modula dobija važne specifičnosti:
● U klijent-server verziji 1C:Enterprise, samo modul koji se izvršava na serveru može biti privilegovan.
● Izvršavanje procedura i funkcija privilegovanog modula i svega što se iz njih poziva vrši se kada je sistem ograničenja isključen
prava i na objekte metapodataka i na podatke. Dakle, iz privilegovanog modula može se izvršiti bilo koja operacija
bilo koji objekt čak i ako trenutni korisnik nema odgovarajuća prava.
Privilegirani moduli su dizajnirani za početno postavljanje vrijednosti parametara sesije koji se koriste u ograničenjima pristupa podacima.
Općenitiji moduli se mogu koristiti za neke holističke radnje nad podacima od strane korisnika s ograničenim pravima.
Na primjer, ako funkcije korisnika uključuju unos i knjiženje dokumenata, ali korisnik ne bi trebao imati pristup podacima na koje utječe knjiženje dokumenta, tada se izvršenje operacije knjiženja može premjestiti u privilegirani modul. Ovo će omogućiti korisniku da postavlja dokumente bez da mu se dodijele prava na druge informacije (na primjer, registre).
Privilegirani način rada
Moguće je programski instalirati privilegirani način rada s podacima. Instalacija softvera privilegovanog načina rada
može biti potrebno u slučaju masovnih operacija sa podacima baze podataka, i nema smisla provjeravati prava pristupa podacima.
Za opis privilegovanog načina rada, pogledajte ovdje.

Korištenje pretprocesora

Prilikom uređivanja teksta ograničenja pristupa podacima moguće je koristiti instrukcije pretprocesora. Dostupna su sljedeća uputstva:

#IF<Выражение>#THEN
#ELSEIF<Выражение>#THEN
#OTHERWISE
#ENDSIF
<Выражение>– proizvoljan logički izraz u ugrađenom jeziku, čiji je rezultat tipa Boolean. Izraz može sadržavati:
● operacije poređenja<, >, <=, >= , =, <> ;
● logičke operacije I, ILI, NE;
● parametri sesije – koristi se sintaksa &Parametar, gde je Parametar ime parametra sesije.
Ako je rezultat izraza #IF ili #ELSEIF izraz Tačan, onda rezultujući tekst izraza ograničenja pristupa sadrži tekst koji se nalazi iza ključne riječi #THEN. Ako je rezultat izraza False, tada se tekst koji se nalazi iza ključne riječi #THEN ne stavlja u tekst instrukcije ograničenja pristupa. Tekst koji slijedi nakon naredbe #ELSE bit će smješten u rezultirajući tekst ograničenja pristupa ako nijedan od prethodnih uvjeta nije ispunjen.
BILJEŠKA. Ako tekst ograničenja pristupa podacima sadrži instrukcije pretprocesora, onda takvo ograničenje ne prolazi provjeru sintakse prilikom uređivanja i ne može se mijenjati pomoću konstruktora.
primjer:

#IF &TrenutniKorisnik<>“Klimova” #ONDA
<текст ограничения доступа>
#ENDSIF
Evo Trenutni korisnik– parametar tipa sesije DirectoryLink.Users.
Ovaj dizajn znači da će se uvjet za postavljanje ograničenja pristupa provjeriti za sve korisnike iz imenika, osim za korisnika Klimova.

Predlošci teksta ograničenja pristupa

Uloga može sadržavati listu predložaka ograničenja pristupa, koji su opisani na kartici Predlošci ograničenja u obrascu uloge. Također možete uređivati ​​šablone ograničenja pristupa u uređivaču za grupno uređivanje ograničenja pristupa i šablona.
Svaki predložak ograničenja pristupa ima ime i tekst. Ime predloška slijedi uobičajena pravila za nazive usvojena u sistemu 1C: Enterprise.
Tekst predloška sadrži dio teksta na jeziku ograničenja pristupa podacima i može sadržavati parametre koji su istaknuti simbolom
“#”.
Nakon simbola “#” može uslijediti:
● Jedna od ključnih riječi:
● Parametar, nakon kojeg je u zagradama naveden broj parametra u šablonu;
● CurrentTable – označava umetanje u tekst punog naziva tabele za koju se gradi ograničenje;
CurrentTableName– označava umetanje u tekst punog naziva tabele (kao vrednost niza, u navodnicima) na koju se primenjuje instrukcija, u trenutnoj verziji ugrađenog jezika;
●Name CurrentAccessRight – sadrži naziv prava za koje se primjenjuje trenutno ograničenje: PROČITAJ/DODAJ/UMETNI/PROMIJENI/
AŽURIRAJ, IZBRIŠI;
● naziv parametra šablona – znači umetanje odgovarajućeg ograničenja parametra šablona u tekst;
● Simbol “#” – označava umetanje jednog simbola “#” u tekst.

Izraz ograničenja pristupa može sadržavati:

● Šablon ograničenja pristupa, koji je naveden u formatu
#TemplateName(“Vrijednost parametra šablona 1”, “Vrijednost parametra šablona 2”, ...). Svaki parametar šablona je stavljen u dvostruke navodnike. Ako trebate navesti znak dvostrukog navodnika u tekstu parametra, morate koristiti dva dvostruka navodnika.
● Funkcija Stranica sadrži (gdje tražimo, šta tražimo). Funkcija je dizajnirana da traži pojavljivanje niza WhatWeLook u stringu WhereWeLook. Vraća True ako je pojava pronađena i False u suprotnom.

● Operator + za konkatenaciju nizova.
Da biste olakšali uređivanje teksta predloška, ​​na kartici Predlošci ograničenja u obrascu uloge kliknite na dugme Postavi tekst predloška. U dijalogu koji se otvori unesite tekst predloška i kliknite na OK.
Sistem 1C:Enterprise provjerava sintaksu tekstova predložaka, provjerava sintaksu korištenja šablona i makro-zamjenjuje tekstove predložaka ograničenja pristupa ulogama u tekst zahtjeva.
Zamjena makro šablona je:
● zamena pojavljivanja parametara u tekstu šablona vrednostima parametara iz izraza za korišćenje šablona u tekstu ograničenja;
● zamjena izraza upotrebe predloška u tekstu zahtjeva sa rezultujućim tekstom šablona.
Kada pozovete konstruktor upita za uvjet koji sadrži predloške ograničenja pristupa, izdaje se upozorenje da će svi predlošci biti zamijenjeni.
Slijede primjeri predložaka ograničenja:

Za fleksibilno upravljanje korisničkim pristupom podacima prema funkcionalnosti prilikom postavljanja ograničenja pristupa podacima, preporučuje se
pridržavati se sljedećih principa:
● Potrebno je odabrati skup informacija (može zavisiti od trenutnog korisnika) za koje je odgovarajuća preliminarna priprema. Odabrani podaci bi, s jedne strane, trebali maksimalno pojednostaviti ograničenja pristupa podacima, a s druge strane ne bi trebali biti preveliki. Distribuirajte ga prema parametrima sesije.
● Postavite vrijednosti parametara sesije u SetSessionParameters() rukovatelju modula sesije.
● Postavite ograničenja pristupa onim podacima za koje je to opravdano (podaci su tajni ili najvažniji za održavanje integriteta sistema). Imajte na umu da postavljanje ograničenja pristupa može usporiti pristup ovim podacima. Pretjerana složenost ograničenja također može dovesti do usporavanja.
● Ako je potrebno osigurati da određeni ograničeni broj operacija nad podacima izvrši korisnik kome nije praktično dati potpuni pristup tim podacima, premjestite ove radnje na privilegirane module ili eksplicitno omogućite i onemogućite privilegirani način rada u odgovarajuća mjesta u programskom kodu.
● Pristup podacima za različite provjere koje sistem vrši prilikom pisanja objekata vrši se u privilegovanom načinu.

Ovo vam omogućava da ne onemogućite ograničenja dopuštenja na nivou zapisa za odgovarajuća polja ako konfiguracija radi s ovim podacima
planirano samo u kontroliranom načinu rada:

● za imenike prilikom provjere nadređenog, vlasnika i jedinstvenosti koda;
● za dokumente, poslovne procese i zadatke prilikom provjere jedinstvenosti broja;
● onemogućeno za planove razmene prilikom provere jedinstvenosti koda;
● za kontne planove i grafikone karakterističnih tipova prilikom provjere nadređenog i jedinstvenosti šifre.

Postoje neka ograničenja i razmatranja koja treba imati na umu kada kreirate upit za ograničenje podataka:

● Ako su ograničenja pristupa podacima specificirana za tablicu objekata i upit podataka koristi spajanje s takvom tablicom, tada u uvjetu veze (odjeljak softverskog zahtjeva) nije dozvoljena upotreba tabelarnog dijela objekta sa navedenim ograničenjem pristupa .
● Ako upit specificira tabelu za koju se ne koriste polja u upitu, tada se ovoj tabeli nameću sva ograničenja pristupa podacima. Na primjer, zahtjev SELECT QUANTITY(*) IZ Directory.Counterpartiesće se izvršiti uzimajući u obzir sva ograničenja pristupa specificirana za Test direktorij. Ograničenja su nametnuta „od strane ILI“. To znači da će svi zapisi koji su dostupni pod barem jednim uslovom biti dostupni. Ako uslovi nisu specificirani za neka polja, upit će se izvršiti za sve zapise u tabeli.
Ako upit koristi tablicu najviše razine, ograničenja navedena za stupce ugniježđenih tablica nisu nametnuta.
Ako upit koristi ugniježđenu tablicu, tada se ograničenja primjenjuju i na ugniježđenu tablicu i na tablicu najvišeg nivoa.
Na primjer, zahtjev ODABERITE KOLIČINU(*) IZ Imenika.Counterparties.Agreements izvršiće se uzimajući u obzir sva ograničenja za imenik ugovornih strana, kao i uzimajući u obzir ograničenja koja se odnose na tabelarni dio Ugovora.

● Ako je pristup poljima potrebnim za dobijanje reprezentacije referentnog objekta metapodataka odbijen zbog ograničenja pristupa
podaci ili pristup objektu su odbijeni na nivou prava pristupa, tada dobijanje reprezentacije takvog objekta ne utiče na napredak trenutne transakcije.

Konstruktor ograničenja pristupa podacima

Da biste pozvali konstruktor u polju tabele Ograničenja pristupa podacima u koloni Ograničenja pristupa, potrebno je da odete u režim za uređivanje i
Kliknite na dugme za odabir i u obrascu koji se otvori kliknite na dugme Query Builder....
Obrazac konstruktora je prikazan na ekranu:


Rice. 3. Kartica “Tabele i polja” dizajnera ograničenja

Uz njegovu pomoć stvaraju se uslovi za postavljanje ograničenja pristupa podacima.
Na kartici Tabele i polja odaberite potrebne objekte na listi Baza podataka i premjestite ih na listu Tabele. Ako je navedeno nekoliko tabela, kartica Veze se dodaje u obrazac dizajnera.


Rice. 4. Kartica “Veze” dizajnera ograničenja

Na kartici Veze formiraju se uslovi koji se nameću vezama između polja tabele. Da biste uneli novi uslov, kliknite na dugme Dodaj i izaberite jednu od tabela u koloni Tabela1. U koloni Tabela2 izaberite tabelu čija su polja povezana sa poljima prve. Ispod liste uslova nalaze se kontrole koje se mogu koristiti za kreiranje uslova za povezivanje tabela.
Ako je odabran jednostavan tip uvjeta, tada se u Polju1 i Polju2 biraju povezana polja navedenih tablica i postavlja se uvjet usporedbe. Ako su izabrana polja koja se ne porede, tada se u redu liste uslova u koloni Uslovi veze prikazuje tekst: Nepravilno popunjen uslov.
Na kartici Uvjeti, ako je potrebno, trebate navesti uvjete prema kojima će se birati izvorni podaci.


Rice. 5. Kartica “Uvjeti” dizajnera ograničenja

Za svako odabrano polje morate odabrati vrstu uvjeta i odrediti naziv parametra. Parametar sesije se može koristiti kao parametar. Dozvoljeno je više uslova. U ovom slučaju, u koloni Stanje polja tabele uslova, tekst uslova se prikazuje u nekoliko redova.
U bilo kom trenutku tokom kreiranja zahteva, tekst zahteva se može pogledati klikom na dugme Zahtev.

Grupno uređivanje ograničenja dozvola i predložaka

Režim za grupno uređivanje ograničenja prava pristupa i predložaka poziva se naredbom Sva ograničenja pristupa kontekstnog menija grane Uloge. Obrazac koji se otvara sadrži dvije kartice: Ograničenja pristupa i Predlošci ograničenja.


Rice. 6 Sva ograničenja dozvola i predlošci

Na obeleživaču Ograničenja pristupa Sva unesena ograničenja pristupa možete vidjeti u općoj listi (za sve uloge, objekte, prava, kombinacije polja).
Moguće je dodati ograničenja pristupa za nekoliko uloga, objekata, prava i kombinacija uloga odjednom.
Listu možete filtrirati prema različitim kriterijima.


Rice. 7. Odabir ograničenja pristupa

Režim grupnog uređivanja vam omogućava da izbrišete ograničenja odabrana na listi.
Moguće je uređivati ​​odabrana ograničenja. U tom slučaju možete promijeniti sastav polja i/ili ograničenja pristupa.
Režim grupnog uređivanja također vam omogućava da kopirate odabrana ograničenja na druge uloge.

Na obeleživaču Predlošci ograničenja možete vidjeti sve šablone ograničenja pristupa koji su prisutni u aplikacijskom rješenju, dok se iz samog teksta predloška prikazuje samo prvih 10 redova u tabeli, koji završavaju simbolom “…” ako je tekst šablona više od 10 redova. Prozor za uređivanje šablona će prikazati puni tekst šablona.


Slika 8. Svi predlošci ograničenja pristupa

Moguće je dodati predložak ograničenja pristupa za nekoliko uloga odjednom.


Zatvori