SQL Server w logistyce

Tabela _role w bazie danych SQL Server

Definicje ról użytkowników — zakres uprawnień, wygląd w menu oraz opis przeznaczenia każdej z nich.

sql.server.net.pl/sql/
Uśmiechnięty analityk w garniturze przy szerokim monitorze
Uśmiechnięty analityk w garniturze przy szerokim monitorze
W skrócie
  • Rola jest podstawową jednostką nadawania uprawnień — użytkownik dostaje dostęp przez przypisanie do roli, nie pojedynczo.
  • Kolumna ROLASYS pozwala łączyć kilka ról w grupę systemową o wspólnych uprawnieniach.
  • Znacznik PROXY tworzy rolę o ograniczonej widoczności danych — przeznaczoną dla kontrahentów zewnętrznych.
  • Kolumny INSTRUKCJA_* pozwalają opisać przeznaczenie roli i podlinkować instrukcję dla jej użytkowników.

Do czego służy tabela [dbo].[_role]

Magazynier, kierownik zmiany, kontroler jakości i przedstawiciel kontrahenta korzystają z tego samego systemu, ale każde z nich powinno widzieć coś innego. Tabela [dbo].[_role] jest miejscem, w którym te różnice są zdefiniowane. Uprawnienia nadaje się roli, a użytkownikowi przypisuje rolę — dzięki czemu zatrudnienie kolejnej osoby na tym samym stanowisku nie wymaga ustalania niczego od nowa.

Definicja obejmuje trzy warstwy. Pierwsza to identyfikacja: nazwa roli, opis, kod firmy oraz symbol PRX objęty ograniczeniem unikalności. Druga — prezentacja w interfejsie: trzy rozmiary ikony, kolor tła i kolejność na liście widocznej dla administratora. Trzecia to dokumentacja: link do instrukcji i opis przeznaczenia roli o pojemności pięciu tysięcy znaków.

Najciekawszy jest znacznik PROXY. Rola oznaczona w ten sposób ma ograniczoną widoczność danych, co pozwala udostępnić system podmiotowi zewnętrznemu — przewoźnikowi, klientowi operatora logistycznego albo dostawcy — bez ryzyka, że zobaczy on cudze dokumenty. Towarzyszący jej znacznik PROXY_KOMUNIKATY steruje osobno powiadomieniami dla takich użytkowników.

Warstwy definicji roli użytkownika
Tożsamość TożsamośćNazwa, opis, firma i symbol PRX identyfikujące rolę
Zakres ZakresGrupa systemowa ROLASYS oraz tryb proxy dla podmiotów zewnętrznych
Wygląd WyglądIkony w trzech rozmiarach, kolor i kolejność na liście
Opis OpisPrzeznaczenie roli i odnośnik do instrukcji dla użytkowników

Ostatnia warstwa bywa pomijana, a to ona odpowiada na pytanie, dlaczego dana rola w ogóle powstała — po dwóch latach nikt tego nie pamięta.

Budowa tabeli — wykaz kolumn

Osiemnaście kolumn opisuje rolę w trzech wymiarach: kim jest, co widzi i jak wygląda w interfejsie.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
Identyfikacja roli
ID_ROLAint
liczba całkowita
takUnikalny identyfikator wiersza tabeli
ROLAvarchar(20)
tekst do 20 znaków
takNazwa roli
OPISvarchar(100)
tekst do 100 znaków
takOpis roli
PRXvarchar(5)
tekst do 5 znaków
takIdentyfikator pozycji
FIRMAvarchar(20)
tekst do 20 znaków
takKod firmy
ROLASYSvarchar(3)
tekst do 3 znaków
nieOznaczenie grupy roli systemowej obejmującej kilka ról
AKTYWNEbit
wartość logiczna 0/1
takOznaczenie czy dana rola jest aktywna
SYSTEMOWEbit
wartość logiczna 0/1
takOznaczenie czy dany wiersz tabeli jest synchronizaowany z bazy ROOT
Zakres widoczności
PROXYbit
wartość logiczna 0/1
nieParametr określający czy rola jest typu proxy - parametr ograniczy widoczność powiadomień w programie. Wartośc true paramtru spowoduje ograniczenie widoczności powiadomień do uproszczonej funkcjonalnośc
PROXY_KOMUNIKATYbit
wartość logiczna 0/1
nieParametr odpowiada za konfigurację powiadomień - wartość true spowoduje, że użytkownik nie będzie miał dostępu do wiadomości
Prezentacja i dokumentacja
OBRAZEKvarchar(100)
tekst do 100 znaków
niePrzypisanie ikony dla danej roli
OBRAZEK16varchar(100)
tekst do 100 znaków
niePrzypisanie ikony dla danej roli w formacie 16×16
OBRAZEK24varchar(100)
tekst do 100 znaków
niePrzypisanie ikony dla danej roli w formacie 24×24
BACKCOLORvarchar(20)
tekst do 20 znaków
nieKolor roli wyświetlany w menu SuperVisor i konfiguracji
KOLEJNOSCint
liczba całkowita
nieOkreślenie kolejności wyświetlania na liście menu dla użytkownika SuperVisor
INSTRUKCJAvarchar(250)
tekst do 250 znaków
nieLink do opisu danej roli, dowolna witryna www
INSTRUKCJA_URLvarchar(250)
tekst do 250 znaków
nieWskazanie linku do instrukcji programu dla poszczególnych ról w programie
INSTRUKCJA_OPISvarchar(5000)
tekst do 5000 znaków
nieOpis przenaczenia danej roli

Kolumna ROLASYS ma zaledwie trzy znaki i grupuje role o wspólnych uprawnieniach systemowych. To do niej, a nie do nazwy roli, odwołują się definicje zapytań w tabeli _code_sql.

Indeksy i wydajność zapytań

Trzy indeksy odpowiadają odczytowi przy logowaniu, przy budowaniu menu i przy kontroli unikalności symbolu.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__roleID_ROLAklucz główny
PRXPRXunikalny
ROLAROLAzwykły

Indeks na kolumnie PRX jest unikalny, co wyklucza przypisanie tego samego symbolu dwóm rolom. Ma to znaczenie szersze niż porządkowe: symbol występuje w innych tabelach konfiguracyjnych, więc jego niejednoznaczność przełożyłaby się na nieprzewidywalne uprawnienia.

Ile ról zdefiniować i jak je rozgraniczyć

Najczęstszy błąd przy wdrożeniu to odwzorowanie w rolach struktury organizacyjnej firmy zamiast rzeczywistych potrzeb dostępowych. Poniżej praktyka, która sprawdza się w magazynach.

  • Rola odpowiada zestawowi czynności, nie stanowisku. Dwa różne stanowiska wykonujące te same operacje mogą dzielić jedną rolę.
  • Zaczynaj od minimum. Rozszerzenie uprawnień jest prostą operacją; ich odebranie po tym, jak ludzie przywykli, znacznie trudniejszą.
  • Rozdziel dostęp do odczytu i zatwierdzania. Możliwość obejrzenia dokumentu i możliwość wprowadzenia go do obiegu to dwie różne rzeczy.
  • Dla podmiotów zewnętrznych używaj trybu proxy zamiast zwykłej roli o zawężonym menu — ukrycie pozycji nie ogranicza dostępu do danych.
  • Nazywaj role opisowo. MAGAZYN_WYDANIA mówi więcej niż ROLA7, a nazwy nie da się później bezboleśnie zmienić.

Warto też pilnować liczby ról. Kilkanaście definicji jest łatwe do ogarnięcia i sprawdzenia; kilkadziesiąt sprawia, że nikt nie ma pewności, kto co widzi — a wtedy audyt uprawnień staje się osobnym projektem. Jeżeli liczba ról zbliża się do liczby stanowisk, zwykle oznacza to, że rozgraniczono je według struktury organizacyjnej zamiast według wykonywanych czynności.

Jak korzystać z tabeli w praktyce

Przy definiowaniu i utrzymaniu ról obowiązują następujące zasady:

  • Wypełniaj kolumnę INSTRUKCJA_OPIS przy zakładaniu roli — po dwóch latach to jedyne źródło informacji o tym, po co powstała.
  • Nie zmieniaj nazwy roli już używanej; występuje w dzienniku zdarzeń i w definicjach zapytań, a zmiana zrywa te powiązania.
  • Wyłączaj role nieużywane znacznikiem AKTYWNE zamiast je usuwać; wpisy historyczne nadal się do nich odwołują.
  • Stosuj tryb PROXY dla każdego dostępu udzielanego podmiotowi spoza firmy, także przy krótkotrwałej współpracy.
  • Przeglądaj listę ról okresowo pod kątem definicji nieprzypisanych żadnemu użytkownikowi — zwykle są to pozostałości po wdrożeniu.
  • Uzupełniaj komplet trzech ikon; brakująca miniatura objawia się pustym miejscem w konfiguracji uprawnień.

Przegląd ról wraz z liczbą przypisanych użytkowników — podstawa okresowego audytu uprawnień:

SELECT  r.ROLA,
        r.OPIS,
        r.ROLASYS,
        CASE WHEN r.PROXY = 1 THEN 'tak' ELSE 'nie' END AS PROXY,
        COUNT(u.LOGIN)                                  AS UZYTKOWNIKOW
FROM    dbo._role AS r
        LEFT JOIN dbo._users AS u
               ON u.ROLA = r.ROLA AND u.AKTYWNE = 1
WHERE   r.AKTYWNE = 1
GROUP BY r.ROLA, r.OPIS, r.ROLASYS, r.PROXY
ORDER BY UZYTKOWNIKOW DESC, r.ROLA;

Role z zerową liczbą użytkowników zasługują na sprawdzenie — albo są pozostałością po wdrożeniu, albo czekają na przypisanie, o którym ktoś zapomniał.

Uprawnienia są jednym z niewielu obszarów systemu, w których nadmiar szkodzi bardziej niż niedobór. Zbyt wąska rola objawi się zgłoszeniem tego samego dnia; zbyt szeroka nie objawi się wcale, dopóki ktoś nie zobaczy danych, których widzieć nie powinien.

Powiązane tabele i dokumentacja

Definicje ról są punktem odniesienia dla uprawnień opisanych w pozostałych tabelach:

FAQ

Najczęściej zadawane pytania o tabelę _role

01

Do czego służy tryb PROXY?

Tworzy rolę o ograniczonej widoczności danych, przeznaczoną dla użytkowników spoza firmy — przewoźników, klientów operatora logistycznego, dostawców. Użytkownik takiej roli widzi wyłącznie dokumenty go dotyczące. To istotna różnica wobec zwykłej roli z zawężonym menu: ukrycie pozycji w menu nie ogranicza dostępu do danych.

02

Czym ROLASYS różni się od nazwy roli?

ROLA identyfikuje pojedynczą rolę, ROLASYS grupuje kilka ról o wspólnych uprawnieniach systemowych. To do tej trzyznakowej wartości odwołują się definicje zapytań w tabeli _code_sql, więc kilka ról może dzielić dostęp do tych samych zestawień bez powielania konfiguracji.

03

Ile ról powinno być zdefiniowanych?

Tyle, ile jest odrębnych zestawów czynności — nie tyle, ile stanowisk. Kilkanaście definicji jest łatwe do sprawdzenia; kilkadziesiąt sprawia, że nikt nie ma pewności, kto co widzi. Jeżeli liczba ról zbliża się do liczby stanowisk, zwykle oznacza to rozgraniczenie według struktury organizacyjnej zamiast według wykonywanych operacji.

04

Czy można zmienić nazwę istniejącej roli?

Lepiej nie. Nazwa występuje w dzienniku zdarzeń, w przypisaniach użytkowników i w definicjach zapytań ograniczających dostęp. Zmiana zrywa te powiązania bez zgłoszenia błędu — a skutkiem bywa albo utrata dostępu, albo, co gorsze, jego rozszerzenie na dane, których rola nie powinna widzieć.

Słownik pojęć

Słownik pojęć

Pojęcia związane z nadawaniem uprawnień i kontrolą dostępu.

RRole i uprawnienia
Mechanizm przypisywania użytkownikom dostępu do funkcji i danych. Zamiast nadawać uprawnienia pojedynczo, przypisuje się je do roli odpowiadającej stanowisku.
RRODO
Rozporządzenie o ochronie danych osobowych. Wymaga ograniczenia dostępu do danych, rejestrowania operacji na nich i wskazania podstawy przetwarzania.
GGRC
Governance, Risk and Compliance — ład korporacyjny, zarządzanie ryzykiem i zgodność z przepisami. Wymaga dokumentowania procedur i śladu rewizyjnego.
ŚŚlad rewizyjny
Nieusuwalny zapis, kto i kiedy zmienił dane w systemie. Podstawa wiarygodności ewidencji podczas audytu i kontroli.
MMicrosoft SQL Server
Serwer relacyjnej bazy danych, na którym pracują aplikacje SoftwareStudio. Odpowiada za spójność danych, uprawnienia dostępu, kopie zapasowe i wydajność zapytań.
IIndeks bazodanowy
Struktura przyspieszająca wyszukiwanie wierszy w tabeli. Dobrze dobrane indeksy skracają czas zapytań, ale spowalniają zapisy i zajmują miejsce na dysku.
33PL
Third Party Logistics — operator, któremu firma zleca magazynowanie i transport. Rozlicza się z usług, dlatego potrzebuje ewidencji czynności w podziale na klientów.
IIntegracja kurierska
Automatyczne przekazanie przesyłki do systemu przewoźnika wraz z wydrukiem etykiety i pobraniem numeru śledzenia.

Zobacz to w praktyce

Sprawdź, jak systemy SoftwareStudio oparte na MS SQL Server wspierają ten obszar Twojej firmy.