Restrizioni all'accesso ai dati nei ruoli 1s. Diritti di accesso all'SCP. RLS. Informazioni generali e impostazioni. Limitare l'accesso a livello di record

Tutte le impostazioni dei diritti utente che effettueremo nell'ambito di questo articolo si trovano nella sezione 1C 8.3 "Amministrazione" - "Impostazioni utente e diritti". Questo algoritmo è simile nella maggior parte delle configurazioni nei moduli gestiti. Il programma Contabilità 1C verrà utilizzato come esempio, ma l'impostazione dei diritti in altri programmi (1C UT 11, 1C ZUP 3, 1C ERP) viene eseguita esattamente allo stesso modo.

Andiamo alla sezione "Utenti" della finestra delle impostazioni. Qui vediamo due collegamenti ipertestuali: "Utenti" e "Impostazioni di accesso". Il primo ti consente di andare direttamente all'elenco degli utenti di questa infobase. Prima di creare un nuovo utente, considerare le possibili impostazioni di accesso (collegamento ipertestuale a destra).

In questo modulo delle impostazioni è possibile impostare la complessità della password (almeno 7 caratteri, contenuto obbligatorio di vari tipi di caratteri, ecc.). Qui puoi anche specificare la lunghezza della password, il suo periodo di validità e il divieto di accesso al programma per gli utenti che non hanno avuto attività per un certo periodo di tempo.

Ora puoi andare direttamente ad aggiungere un nuovo utente a 1C. Puoi farlo facendo clic sul pulsante "Crea", come mostrato nell'immagine qui sotto.

Prima di tutto, indichiamo il nome completo - "Antonov Dmitry Petrovich" e selezioniamo un individuo dalla directory corrispondente. Qui puoi anche specificare il dipartimento in cui lavora il nostro dipendente.

Il nome di accesso "AntonovDP" è stato sostituito automaticamente come abbreviazione del nome completo "Antonov Dmitry Petrovich". Imposta una password e l'autenticazione per 1C Enterprise. Qui puoi anche specificare se questo utente è autorizzato a modificare la password da solo.

Supponiamo di volere che Dmitry Petrovich Antonov sia disponibile nell'elenco di selezione all'avvio di questa infobase. Per fare ciò è necessario impostare il flag sulla voce "Mostra nella lista di selezione". Di conseguenza, la finestra di autorizzazione all'avvio del programma sarà simile a quella mostrata nella figura seguente.

Prestiamo attenzione a un'altra impostazione importante nella scheda della guida per l'utente: "L'accesso al programma è consentito". Se il ritardo non è impostato, l'utente semplicemente non sarà in grado di accedere a questa infobase.

Diritti di accesso

Dopo aver inserito tutti i dati nella scheda utente - Antonov Dmitry Petrovich, li annoteremo e procederemo all'impostazione dei diritti di accesso, come mostrato nella figura seguente.

Davanti a noi è stato aperto un elenco di profili di accesso precedentemente inseriti nel programma. Seleziona le caselle richieste.

Accedi ai profili di gruppo

I profili dei gruppi di accesso possono essere configurati dal modulo principale per l'impostazione di utenti e diritti. Andare alla sezione "Access Groups" e fare clic sul collegamento ipertestuale "Access Group Profiles".

Creiamo un nuovo gruppo dal modulo elenco aperto. Nella sezione tabellare della scheda "Azioni consentite (ruoli)", è necessario selezionare le caselle per quei ruoli che influenzeranno i diritti di accesso degli utenti inclusi nel gruppo che stiamo creando. Tutti questi ruoli vengono creati e configurati nel configuratore. Non possono essere modificati o creati dalla modalità utente. Puoi scegliere solo da un elenco esistente.

RLS: Restrizione di accesso a livello di record

Consente di configurare in modo più flessibile l'accesso ai dati del programma in determinate sezioni. Per attivarlo apporre il flag sull'omonima voce nella maschera Impostazioni utenti e diritti.

Tieni presente che l'abilitazione di questa impostazione potrebbe influire negativamente sulle prestazioni del sistema. Il punto è che il meccanismo RLS modifica tutte le richieste in base alle restrizioni impostate.

Andiamo al profilo del gruppo di accesso "Gruppo di prova" che abbiamo creato in precedenza. La figura seguente mostra che dopo aver abilitato la restrizione di accesso a livello di record, è apparsa una scheda aggiuntiva "Restrizioni di accesso".

Supponiamo di volere che gli utenti a cui è assegnato il gruppo di test abbiano accesso ai dati per tutte le organizzazioni in questa infobase, ad eccezione di quelle specificate nel profilo.

Nella sezione tabulare superiore, imposta la restrizione di accesso per organizzazione. Nella parte inferiore, chiariremo che non sarà fornito l'accesso ai dati (documenti, elenchi, ecc.) per l'organizzazione Roga LLC.

Spesso è necessario limitare parzialmente l'accesso ai dati. Ad esempio, quando un utente deve visualizzare i documenti solo per la propria organizzazione. In tali casi, 1C utilizza un meccanismo di restrizione degli accessi a livello di record (il cosiddetto RLS - Record Level Securiy).

Ad esempio, supponiamo di trovarci di fronte al seguente compito. L'azienda mantiene una contabilità multisocietà e ogni controparte e utente del database appartiene a un'organizzazione specifica. È necessario fornire l'accesso alla directory "Appaltatori" in modo tale che ciascun utente possa visualizzare, modificare e aggiungere controparti solo alla propria organizzazione.

Per risolvere il problema, utilizzeremo la piattaforma “1C:Enterprise 8.2″. Creiamo una nuova configurazione nelle cui proprietà verrà selezionata l'opzione "Applicazione gestita" come modalità di avvio principale.

Successivamente, creiamo la directory "Organizzazioni" e altre due directory: "Appaltatori" e "Utenti" con l'attributo "Organizzazione". Oltre alle directory, abbiamo bisogno di due parametri di sessione: "Organizzazione" e "Utente" (dei tipi appropriati). I valori di questi parametri vengono impostati all'inizio di una sessione di configurazione e vengono memorizzati fino al suo termine. Sono i valori di questi parametri che utilizzeremo quando aggiungeremo le condizioni di restrizione dell'accesso a livello di record.

I parametri della sessione sono impostati in un modulo speciale - "Modulo sessione"

In questo modulo, descriviamo la procedura predefinita "SetSessionParameters" in cui chiamiamo la funzione del modulo generale pre-preparato "FullPermissions". Ciò è necessario a causa delle peculiarità del funzionamento del database nella modalità dell'applicazione gestita, quando parte del codice del programma può essere eseguita solo sul lato server (non mi dilungherò a spiegare questi principi in questo articolo).

Codice 1C v 8.x Procedura Impostazione dei parametri di sessione (parametri obbligatori)
FullPermissions.SetSessionParameters();
FineProcedura

Nelle proprietà del modulo “FullPermissions”, spuntare le caselle “Server”, “Server call” e “Privileged” (quest'ultimo significa che le procedure e le funzioni di questo modulo verranno eseguite senza controllo di accesso). Il testo del modulo sarà simile a questo:

Codice 1C v 8.x Funzione DetermineCurrentUser()
CurrentUser = Directory.Users.FindByName(UserName(), True);
Restituisce Utente Corrente;
Funzioni finali

Procedura SetSessionParameters() Esportazione
CurrentUser = Determina CurrentUser();
CurrentOrganization = Directory.Organizations.EmptyReference();
If ValueFilled(CurrentUser) Then
OrganizzazioneCorrente = UtenteCorrente.Organizzazione;
Finisci se;
SessionParameters.User = UtenteCorrente;
SessionParameters.Organization = CurrentOrganization;
FineProcedura

FunctionSessionParameterSet(NomeParametro) Esportazione
Return ValueFilled(SessionParameters[ParameterName]);
Funzioni finali

Funzione RoleAvailableToUser(RoleName) Esportazione
Restituisce RoleAvailable(RoleName);
Funzioni finali

Nel modulo dell'applicazione gestita, verificheremo la presenza di un utente di configurazione nella directory "Utenti" (per semplicità, lo cercheremo per nome) e spegniamo il sistema se non viene trovato. Ciò è necessario per garantire che i parametri della sessione siano popolati.

Codice 1C v 8.x Procedura operativa pre-sistema (errore)
// verrà verificata la presenza di tutti tranne l'amministratore nella directory "Utenti".
If Not FullPermissions.RoleAvailableToUser("FullPermissions") Then
Se NON FullPermissions.SessionParameterSet("Utente") Allora
Warning("Utente """ + Username() + """ non trovato nella directory!");
Rifiuto = vero;
Ritorno;
Finisci se;
Finisci se;
FineProcedura

Ora possiamo andare direttamente alla descrizione delle restrizioni di accesso. Per fare ciò, crea il ruolo "Utente" e vai alla scheda "Modelli di restrizione", dove aggiungiamo un nuovo modello "AccountsReadingChange" con il seguente testo del modello: WHERE Organizzazione = Organizzazione #Parametro(1)


Il testo del modello di vincolo è un'estensione del linguaggio di query. A differenza di una normale richiesta, il testo della restrizione deve necessariamente contenere la clausola “WHERE”. Come valori dei parametri di query (nel nostro caso è "&Organizzazione"), vengono utilizzati i valori dei parametri di sessione con lo stesso nome. Una costruzione della forma #Parameter(1) significa che il sistema sostituirà il testo passato come primo parametro nel punto in cui viene utilizzato il modello in questo luogo. Con l'aiuto del modello fornito, verrà controllato ogni record della tabella (nel nostro caso, sarà la ricerca "Appaltatori"). Per i record il cui valore dell'attributo "Organizzazione" corrisponde a quello specificato nel parametro di sessione corrispondente, sarà soddisfatta la condizione descritta nel modello. Pertanto, queste voci saranno disponibili per la lettura, la modifica o l'aggiunta (a seconda di quale di questi diritti si applica il modello). Dimostrerò quanto sopra con il nostro esempio.

Andiamo alla scheda "Diritti" del ruolo "Utente" e apriamo l'elenco dei diritti nella directory "Account". Utilizzeremo il modello di vincolo "AccountsReadChange" per le autorizzazioni "Lettura", "Modifica" e "Aggiungi".

Per il diritto "Lettura", utilizzeremo un modello con il parametro "OR ThisGroup". Allo stesso tempo, gli utenti con questo ruolo potranno leggere non solo gli elementi della directory "Account" della loro organizzazione, ma anche tutti i gruppi di questa directory.

#AccountsReadingChange("O QuestoGruppo")

Poiché quando si aggiungono nuovi elementi della directory, il sistema esegue una lettura implicita di attributi predefiniti (questo è necessario, ad esempio, per la numerazione), è necessario garantire la lettura senza ostacoli di questi campi. Per fare ciò, aggiungi una riga aggiuntiva con un testo di restrizione vuoto alla tabella delle restrizioni di accesso ai dati ed elenca i campi per i quali si applica questa regola: Collegamento, Versione dati, Padre, Codice.

Pertanto, il compito di limitare l'accesso a livello di record è risolto. Gli utenti con restrizioni esistenti avranno accesso per visualizzare e modificare i dati solo per la loro organizzazione.

La piattaforma 1C:Enterprise 8 dispone di un meccanismo integrato per limitare l'accesso ai dati a livello di record. Puoi leggere informazioni generali a riguardo qui. In breve, RLS ti consentirà di limitare l'accesso ai dati in base ad alcune condizioni sui valori dei campi. Ad esempio, è possibile limitare l'accesso degli utenti ai documenti in base al valore dell'attributo "Organizzazione". Alcuni utenti lavoreranno con documenti per l'organizzazione "Società di gestione" e il resto con l'organizzazione "Dairy Plant". Come esempio.

Preparazione

L'esempio è implementato nella configurazione dimostrativa di SCP 1.3. Creiamo un utente "Magazziniere" e aggiungiamogli il ruolo "Magazziniere" con lo stesso nome.

Ora procediamo direttamente all'impostazione dei diritti di accesso a livello di record. Passiamo all'interfaccia "Amministrazione utenti". Nel menu principale selezionare "Accesso a livello di record -> Opzioni". Qui selezioniamo la casella "Limita l'accesso a livello di record per tipi di oggetti" e nell'elenco degli oggetti selezioniamo "Organizzazioni".

Pertanto, abbiamo abilitato l'uso di RLS. Ora devi configurarlo.

Il controllo degli accessi a livello di record non è configurato separatamente per ciascun utente o profilo di autorizzazione. La sicurezza a livello di riga è configurata per i gruppi di utenti. Aggiungiamo un nuovo gruppo di utenti, chiamiamolo "Magazzinieri"

La composizione del gruppo sul lato destro del modulo mostra un elenco di utenti appartenenti a questo gruppo. Aggiungiamo l'utente che abbiamo creato in precedenza. Sulla sinistra c'è una tabella delle restrizioni di accesso. Nell'impostazione RLS, abbiamo scelto che l'accesso sarà limitato solo dalle organizzazioni, quindi vediamo solo un tipo di oggetto di accesso. Fare clic sul pulsante "Impostazioni di accesso". Viene aperta l'elaborazione per l'impostazione delle autorizzazioni per il gruppo corrente.

Nell'elenco degli oggetti di accesso per il gruppo, aggiungi l'organizzazione "PPE "Imprenditore"". Lasceremo invariato il tipo di eredità dei diritti. Il diritto all'oggetto di accesso sarà impostato su lettura e scrittura. Fai clic su "OK", le impostazioni sono pronte. Abbiamo appena impostato RLS a livello di organizzazione.

Cosa vede l'utente

Esegui il programma con l'utente creato in precedenza e apri la directory "Organizzazioni". Ecco come apparirà l'elenco per il nostro utente e per un utente con diritti completi:

Come possiamo vedere, l'utente storekeeper vede solo un'organizzazione per la quale abbiamo aperto l'accesso in lettura. Lo stesso vale per i documenti, come le ricevute di beni e servizi.

Pertanto, l'utente non solo non vedrà le organizzazioni il cui accesso non è impostato per lui, ma non sarà nemmeno in grado di leggere / scrivere documenti e altri oggetti nell'infobase, per i quali i diritti nel ruolo sull'attributo "Organizzazione " sono impostati.

Abbiamo considerato l'esempio più semplice di configurazione di RLS. Nel prossimo articolo parleremo dell'implementazione del meccanismo RLS nella configurazione "Manufacturing Enterprise Management" versione 1.3.

1C ha un sistema di diritti di accesso integrato (questo sistema è chiamato ruoli 1C). Questo sistema è statico, poiché l'amministratore ha impostato i diritti su 1C, così sia.

Inoltre, esiste un sistema dinamico di diritti di accesso (chiamato - RLS 1C). In esso, i diritti 1C vengono calcolati dinamicamente al momento del lavoro dell'utente in base ai parametri specificati.

Una delle impostazioni di sicurezza più comuni in vari programmi è un insieme di autorizzazioni di lettura / scrittura per gruppi di utenti e quindi - inclusione o esclusione di un utente dai gruppi. Ad esempio, un sistema simile viene utilizzato in Windows AD (Active Directory).

Tale sistema di sicurezza in 1C è chiamato Roles 1C. Ruoli 1C si trova nella configurazione nel ramo Generale/Ruoli. I ruoli 1C fungono da gruppi per i quali vengono assegnati i diritti 1C. Successivamente, l'utente viene incluso o escluso da questo gruppo.

Facendo doppio clic sul nome del ruolo 1C, si aprirà l'editor dei diritti per il ruolo 1C. Sulla sinistra c'è un elenco di oggetti 1C. Selezionare qualsiasi e le opzioni per i diritti di accesso verranno visualizzate sulla destra (come minimo: leggi, aggiungi, modifica, elimina).

Per il ramo superiore (il nome della configurazione corrente), sono impostati i diritti amministrativi 1C e l'accesso per avviare varie opzioni.

Tutti i diritti 1C sono divisi in due gruppi: diritto "semplice" e lo stesso diritto con l'aggiunta di "interattivo". Cosa significa?

Quando un utente apre un modulo (ad esempio l'elaborazione) e preme un pulsante su di esso, il programma nel linguaggio 1C integrato esegue determinate azioni, ad esempio l'eliminazione di documenti. Per l'autorizzazione di queste azioni (eseguite a livello di codice) - "semplicemente" sono responsabili i diritti di 1C.

Quando un utente apre un diario e inizia a fare qualcosa dalla tastiera da solo (ad esempio, inserendo nuovi documenti), questi sono diritti 1C "interattivi".

Un utente può avere più ruoli disponibili, nel qual caso le autorizzazioni vengono sommate.

La sezione sulle possibilità di impostare i diritti di accesso utilizzando i ruoli è un oggetto 1C. Cioè, puoi abilitare l'accesso alla directory o disabilitarlo. Non si può accendere un po'.

Per questo, esiste un'estensione del sistema di ruolo 1C chiamato 1C RLS. Si tratta di un sistema dinamico di diritti di accesso che consente di limitare parzialmente l'accesso. Ad esempio, l'utente vede solo i documenti per un determinato magazzino e organizzazione e non vede il resto.

Accuratamente! Quando si utilizza lo schema RLS 1C confuso, diversi utenti potrebbero avere domande quando tentano di verificare lo stesso rapporto generato da utenti diversi.

Prendi una certa directory (es. organizzazioni) e un certo diritto (es. lettura). Consenti la lettura per il ruolo 1C. Nel pannello Restrizione di accesso ai dati, si imposta il testo della query, che restituisce VERO o FALSO a seconda delle impostazioni. Le impostazioni sono generalmente memorizzate nel registro delle informazioni (ad esempio, il registro delle informazioni di configurazione Accounting UserAccessRightsSettingsUsers).

Questa richiesta viene eseguita dinamicamente (quando si tenta di implementare la lettura), per ogni voce di directory. Pertanto, per quei record per i quali la query di sicurezza ha restituito TRUE, l'utente lo vedrà, ma il resto no.
I diritti 1C soggetti alle restrizioni RLS 1C sono evidenziati in grigio.

La copia delle stesse impostazioni RLS 1C viene eseguita utilizzando i modelli. Si crea un modello, lo si chiama (ad esempio) MyTemplate, si specifica una richiesta di sicurezza in esso. Successivamente, nelle impostazioni dei diritti di accesso 1C, specificare il nome del modello in questo modo: "#MyTemplate".

Quando un utente lavora in modalità 1C Enterprise, quando RLS 1C è in esecuzione, potrebbe ricevere un messaggio di errore "Diritti insufficienti" (ad esempio, per leggere la directory Xxx).

Ciò significa che RLS 1C ha bloccato la lettura di diversi record.

Per evitare che tale messaggio appaia, è necessario utilizzare la parola CONSENTITO () nel testo della richiesta nel linguaggio 1C integrato.

Per esempio:

Il programma 1C ha un sistema integrato di diritti di accesso, che si trova nel Configuratore - Generale - Ruoli.

Cosa caratterizza questo sistema e qual è il suo scopo principale? Consente di descrivere insiemi di diritti che corrispondono alle posizioni degli utenti o alle loro attività. Questo sistema di diritti di accesso è di natura statica, il che significa che, poiché l'amministratore ha impostato i diritti di accesso su 1C, lo è. Oltre a quello statico, esiste un secondo sistema di diritti di accesso - dinamico (RLS). In questo sistema, i diritti di accesso sono calcolati in modo dinamico, a seconda dei parametri dati, nel corso del lavoro.

Ruoli in 1C

Le impostazioni di sicurezza più comuni in diversi programmi sono il cosiddetto insieme di autorizzazioni di lettura / scrittura per vari gruppi di utenti e in futuro: inclusione o esclusione di un utente specifico dai gruppi. Tale sistema, ad esempio, viene utilizzato nel sistema operativo Windows AD (Active Directory). Il sistema di sicurezza utilizzato nel software 1C è chiamato ruoli. Cos'è? Ruoli in 1C è un oggetto che si trova nella configurazione nel ramo: Generale - Ruoli. Questi ruoli 1C sono gruppi per i quali vengono assegnati diritti. In futuro, ogni utente potrà essere incluso ed escluso da questo gruppo.

Facendo doppio clic sul nome del ruolo, si aprirà l'editor dei diritti per il ruolo. Sulla sinistra c'è un elenco di oggetti, contrassegnane uno qualsiasi e sulla destra vedrai le opzioni per i possibili diritti di accesso:

— lettura: ottenere record o loro frammenti parziali da una tabella di database;
- aggiunta: nuovi record mantenendo quelli esistenti;
— cambiamento: apportare modifiche ai record esistenti;
- cancellazione: alcuni record, mantenendo invariati gli altri.

Si noti che tutti i diritti di accesso possono essere divisi in due gruppi principali: questo è un diritto "semplice" e tale diritto con l'aggiunta della caratteristica "interattiva". Cosa si intende qui? E la cosa è la seguente.

Nel caso in cui l'utente apra un modulo, ad esempio l'elaborazione, e allo stesso tempo faccia clic su di esso con il mouse, il programma nel linguaggio 1C integrato inizia a eseguire azioni specifiche, ad esempio l'eliminazione di documenti. Per l'autorizzazione di tali azioni eseguite dal programma, i diritti di 1C sono responsabili, rispettivamente, "semplicemente".

Nel caso in cui l'utente apra il diario e inizi a inserire qualcosa da solo dalla tastiera (nuovi documenti, ad esempio), i diritti 1C "interattivi" sono responsabili di consentire tali azioni. Ogni utente può avere più ruoli disponibili contemporaneamente, quindi viene aggiunta l'autorizzazione.

RLS in 1C

È possibile abilitare l'accesso alla directory (o documento) o disabilitarlo. Non puoi semplicemente accenderlo un po'. A tale scopo, esiste una certa estensione del sistema di ruolo 1C, che si chiama RLS. Si tratta di un sistema di diritti di accesso dinamico che introduce restrizioni di accesso parziali. Ad esempio, solo i documenti di una determinata organizzazione e magazzino diventano disponibili all'attenzione dell'utente, non vede il resto.

Va tenuto presente che il sistema RLS deve essere applicato con molta attenzione, poiché è piuttosto difficile comprenderne lo schema intricato e utenti diversi possono avere domande quando, ad esempio, confrontano lo stesso rapporto, che viene generato da vari utenti. Consideriamo un esempio del genere. Scegli una directory specifica (organizzazioni, ad esempio) e un diritto specifico (lettura, ad esempio), ovvero consenti la lettura per il ruolo 1C. Allo stesso tempo, si imposta il testo della richiesta nel pannello remoto Data Access Restrictions, in base a quale False o True è impostato, a seconda delle impostazioni. In genere, le impostazioni vengono memorizzate in uno speciale registro delle informazioni.

Questa query verrà eseguita dinamicamente (quando si tenta di organizzare la lettura), per tutte le voci della directory. Funziona così: quei record per i quali è stata assegnata la richiesta di sicurezza - Vero, l'utente vedrà, ma altri no. I diritti 1C con restrizioni stabilite sono evidenziati in grigio.

L'operazione di copia di impostazioni RLS identiche viene eseguita utilizzando i modelli. Per cominciare, crei un modello, nominandolo, ad esempio, MyTemplate, in cui rifletti la richiesta di sicurezza. Quindi, nelle impostazioni dei diritti di accesso, specificare il nome di questo modello in questo modo: "#MyTemplate".

Quando un utente lavora in modalità 1C Enterprise, durante la connessione a RLS, potrebbe apparire un messaggio di errore del tipo: "Diritti insufficienti" (per leggere la directory XXX, ad esempio). Questo indica che il sistema RLS ha bloccato la lettura di alcuni record. Per evitare che questo messaggio appaia nuovamente, è necessario inserire la parola CONSENTITO nel testo della richiesta.



Articoli simili