Szablony uprawnień ACL
Przeczytasz w 10 min.
Spis treści
Streszczenie
W artykule opisano budowanie schematu uprawnień opartego o model ACL (ang. Access Control List — listy kontroli dostępu). To jeden z dwóch dostępnych w nAxiom modeli uprawnień. Drugi to model RBAC (ang. Role Based Access Control — kontrola dostępu na podstawie ról). W artykule przedstawiono sposób użycia uprawnień ACL do filtrowania rekordów (dokumentów biznesowych) w widokach listowych na przykładzie prostego procesu biznesowego obsługi zamówień.
Koncepcja
Model uprawnień ACL określa prawa do wykonywania określonych czynności przez określonego użytkownika (kategorię użytkowników) w odniesieniu do określonej definicji dokumentu biznesowego (klasy dokumentów). Uprawnienia obejmują następujące czynności (w szablonach oznaczane pierwszymi literami terminów angielskich — RUDA):
- odczyt — R (read)
- aktualizacja — U (update)
- usuwanie — D (delete)
- administrowanie — A (admin); nadawanie uprawnień ACL do indywidualnych dokumentów.
W nAxiom można definiować uprawnienia — w formie szablonu uprawnień — według następujących charakterystyk użytkowników:
- predefiniowana relacja użytkownik-dokument; obecnie obsługiwana dla twórcy dokumentu, planowana dla właściciela dokumentu, przełożonego twórcy i przełożonego właściciela,
- rola użytkownika (kombinacja ról), opcjonalnie w połączeniu z przypisaniem do konkretnej jednostki organizacyjnej,
- definiowana przez konsultanta relacja użytkownik-dokument (interesariusz), np. beneficjent wniosku, odbiorca korespondencji, recenzent oferty, autor opinii itp.; patrz sekcja Informacje powiązane.
Szablony uprawnień ACL definiuje się na poziomie definicji dokumentu biznesowego w dwóch wariantach:
- szablony instancji: szablony uprawnień obowiązujące w każdym statusie dokumentu
- szablony statusów: szablony uprawnień definiowane niezależnie dla każdego statusu dokumentu
W tym artykule zostaną opisane szablony uprawnień definiowane dla twórców dokumentów oraz dla użytkowników z określoną rolą dotyczące dokumentów w określonych statusach.
Przypadek biznesowy
Rozważmy proces biznesowy, w którym zamawiający składają zamówienia w systemie dostawcy. Proces obejmuje następujące kroki:
- utworzenie zamówienia (wykonawca: Zamawiający, status: Utworzone)
- przyjęcie do realizacji (wykonawca: Magazynier, status: W toku)
- zakończenie realizacji (wykonawca: Magazynier, status: Zrealizowane)
System powinien umożliwiać kontrolę dostępu do zamówień w taki sposób, że każdy zamawiający ma dostęp wyłącznie do „swoich” zamówień, a magazynier do wszystkich zamówień oczekujących na realizację. Aby zrealizować te postulaty, należy zdefiniować szablony uprawnień ACL zgodnie z poniższą tabelą.
Utworzone | W toku | Zrealizowane | |
---|---|---|---|
Twórca dokumentu | RUD* | R | R |
Magazynier | - | RU | R |
* R - odczyt, U - aktualizacja, D - usuwanie
Budowa rozwiązania
Domyślnie w nAxiom uprawnienia ACL są wyłączone. Aby móc definiować szablony uprawnień, należy wyświetlić definicję odpowiedniego dokumentu biznesowego i na karcie Ogólne
włączyć przełącznik Obsługa uprawnień
. Spowoduje to wyświetlenie dwóch kart: Uprawnienia
i Uprawnienia statusów
.

Teraz możesz utworzyć pierwszy szablon uprawnień do zamówienia (status Utworzone
, zakres: RUD) dla zamawiającego jako twórcy dokumentu. W tym celu kliknij zakładkę Uprawnienia statusów
, a następnie w sekcji statusu Utworzone
kliknij Nowy szablon
. W wyświetlonym oknie zaznacz opcję Twórca dokumentu
oraz zaznacz pola wyboru uprawnień.

Utworzone
W podobny sposób utwórz szablony dla twórcy w innych statusach. W przypadku magazyniera zaznacz opcję Wymagana rola
i wybierz odpowiednią rolę ze znajdującej się obok listy wielowyboru.
Wybranie kilku ról na tej liście spowoduje, że szablon będzie obowiązywał użytkowników, którzy mają przypisane wszystkie wybrane role.
Po zdefiniowaniu odpowiednich szablonów karta Uprawnienia statusów
powinna wyglądać jak na ilustracjach poniżej.

W nAxiom kontrola dostępu w oparciu o szablony uprawnień jest realizowana wyłącznie dla dokumentów tworzonych po zdefiniowaniu szablonów. Również zmiany szablonów uprawnień są egzekwowane tylko dla dokumentów utworzonych po wprowadzeniu tych zmian.
Aby uprawnienia zdefiniowane w szablonach były weryfikowane w widokach listowych, w konfiguracji listy powiązanej z danym dokumentem biznesowym należy zaznaczyć odpowiednie pola wyboru Według szablonu instancji
i/lub Według szablonu statusu
w grupie Weryfikacja uprawnień
. (W przypadku zaznaczenia obu pól obowiązujące uprawnienia będą logiczną sumą uprawnień zdefiniowanych w szablonach instancji i w szablonach statusu).

Do zapamiętania…
- Definicja dokumentu biznesowego: tu włączasz obsługę uprawnień ACL i definiujesz szablony uprawnień.
- Konfiguracja lisy: tu decydujesz, jakie warianty szablonów uprawnień (statusu czy instancji) mają być stosowane w widokach listowych; jeśli używasz własnego zapytania jako źródła danych dla listy, to zapytanie musi zwracać kolumny Status i ACLId, ponadto w konfiguracji listy muszą zostać włączone przełączniki
Stronicowanie
iFunkcja server-side
(kartaUstawienia listy
). - Jeśli włączysz obsługę i weryfikację uprawnień, ale nie zdefiniujesz szablonów, nikt nie będzie miał dostępu do tworzonych dokumentów.
- Szablony uprawnień nie działają wstecz: kontrola dostępu określona przez szablony uprawnień działa tylko dla dokumentów utworzonych po zdefiniowaniu/zmodyfikowaniu szablonów — dopiero wtedy podczas tworzenia dokumentów są tworzone wpisy uprawnień w systemowych tabelach bazy danych.
- Uprawnienie do aktualizacji (U — update) dokumentu jest egzekwowane w momencie próby zapisu zmienionego dokumentu; nawet jeśli dany użytkownik nie ma uprawnienia do aktualizacji dokumentu, może edytować wartości w polach formularza, jednak nie może zapisać tych zmian. Aby uniemożliwić edycję wartości, należy skorzystać z uprawnień definiowanych na poziomie formularza, które opisano w osobnym artykule.
- Uprawnienie do usuwania (D — delete) dokumentów jest realizowane po skonfigurowaniu obsługi usuwania w edycji inline.
- Jeśli w powiązanym z dokumentem biznesowym widoku listy używane jest własne zapytanie SQL, musi ono zwracać kolumnę ACLId z tabeli dokumentu biznesowego, żeby uprawnienia działały.
- W szablonie uprawnień można wskazać jednostkę organizacyjną, ale tylko w połączeniu z rolą użytkownika; nie można wybrać samej jednostki organizacyjnej jako podmiotu szablonu uprawnień.
Informacje powiązane
- Artykuł z Bazy Wiedzy nr 2. Uprawnienia interesariuszy
- Artykuł z Bazy Wiedzy nr 4. Uprawnienia formularzy
- Leksykon nAxiom: 5.8 Uprawnienia do dokumentów (CRUD/A)
- Leksykon nAxiom: 4.3.2.3 Właściwości listy — karta Edycja inline