
Terminologia używana w branży IT może wprowadzać niezłe zamieszanie. Stąd tak ważne jest precyzyjne posługiwanie się specjalistycznym słownictwem. Wiele terminów brzmi podobnie, ale niesie ze sobą całkiem odmienne znaczenie.
Jako przykład częstych pomyłek możemy posłużyć się pojęciami authentication i authorization. Pierwszy z tym terminów tłumaczymy zwykle jako uwierzytelnianie, drugi jako autoryzacja. Często są one nieprawidłowo używane zamiennie. Choć brzmią podobnie, oznaczają zupełnie odmienne koncepcje z zakresu bezpieczeństwa.
Programiści integrują silne procesy uwierzytelniania i autoryzacji, aby zabezpieczyć swoje aplikacje przed atakami hakerów. Większość aplikacji oraz usług internetowych wymaga do ich prawidłowego funkcjonowania uwierzytelnienia, czyli poświadczenia, kim jest użytkownik. Prawidłowe zalogowanie się umożliwia skorzystanie z pełni funkcjonalności, jakie oferują swoim użytkownikom fora, blogi, sklepy internetowe, portale, serwisy oraz narzędzia do współpracy bazujące na usługach subskrypcji. Jednak uwierzytelnienie nie jest to tożsame z autoryzacją (authorization).
Jaka zatem jest różnica? Spróbujemy to wyjaśnić.
Czym jest uwierzytelnianie?
Uwierzytelnianie to poświadczanie i potwierdzanie tożsamości. Na przykład mój identyfikator to „Jan_kowalski” i mogę udowodnić, że jestem Janem Kowalskim, bo znam swoje hasło. Uwierzytelnianie to proces weryfikacji tożsamości użytkownika w celu przyznania mu dostępu do systemu lub sieci. Określa prawo użytkownika do dostępu do zasobów takich jak usługi, serwisy, sieci, bazy danych, pliki itp.
W jaki sposób aplikacja zapewnia uwierzytelnianie użytkowników? Większość ma stronę logowania, na której użytkownicy muszą wprowadzić dane uwierzytelniające, aby potwierdzić swoją tożsamość.
Za identyfikator użytkownika może posłużyć login, nazwa użytkownika, adres e-mail lub numer telefonu. Drugim elementem wymaganym do poświadczenia jest powiązane z identyfikatorem hasło. Jeśli poświadczenia wprowadzone przez użytkownika są zgodne z danymi przechowywanymi w bazie danych aplikacji, użytkownik zostaje uwierzytelniony i uzyskuje dostęp do aplikacji.
Jakie są popularne metody uwierzytelniania?
Istnieją takie metody autentykacji jak hasła jednorazowe, dane biometryczne, aplikacje uwierzytelniające, tokeny sprzętowe, tokeny programowe i wiele innych. Jednym z najczęstszych sposobów uwierzytelniania są hasła. Jednak hakerzy często atakują hasła i są one podatne na ataki cybernetyczne, takie jak „brute force”, „man-in-the-middle”, naruszenia danych oraz łamanie haseł. Z tego powodu, aby zwiększyć bezpieczeństwo, firmy często stosują bardziej rozbudowane metody zabezpieczeń, takie jak uwierzytelnianie dwuskładnikowe lub wieloskładnikowe (2FA / MFA).
Czym jest autoryzacja?
Po uwierzytelnieniu użytkownika aplikacja wie, z kim ma do czynienia, a dzięki temu może określić, co ten użytkownik może zrobić w aplikacji (np. czy jest administratorem, czy zwykłym użytkownikiem) oraz do jakich danych ma mieć dostęp.
Autoryzacja to proces nadawania użytkownikowi niezbędnych uprawnień do dostępu do określonych zasobów, takich jak informacje, pliki, bazy danych oraz dopuszczenia do wykonania takich czynności jak zapis, edycja, usuwanie lub tylko sam odczyt danych. Autoryzacja musi nastąpić zaraz po uwierzytelnieniu, czyli po sprawdzeniu tożsamości użytkownika, ale przed przyznaniem dostępu zgodnie z jego uprawnieniami. Dzięki temu możemy zabezpieczyć naszą aplikację przed działaniem niepowołanych osób. Można zezwolić administratorom na przeglądanie poufnych informacji, ale ograniczać dostęp do wrażliwych danych dla osób spoza firmy. Słowo autoryzacja może być używane zamiennie z wyrażeniami kontrola dostępu użytkownika i uprawnienia użytkownika.
Rodzaje autoryzacji
Istnieje wiele sposobów implementacji autoryzacji:
– Bazujące na tokenach: Użytkownicy otrzymują token, który określa, jakie uprawnienia są im przyznane oraz do jakich danych mają dostęp z miejsca, w którym token jest podpisany kryptograficznie.
– Kontrola dostępu oparta na rolach (RBAC Role-Based Access Control): użytkownicy są przypisany do roli, która ma zdefiniowane uprawnienia. Rola ma zdefiniowane także dostępy do danych. Np. użytkownik może mieć przypisane uprawnienia „edytora” albo tylko „viewera” .
– Listy kontroli dostępu (Access Control List): ACL określa, którzy użytkownicy mają dostęp do określonych zasobów. Na przykład, aby użytkownik miał dostęp do folderu sieciowego, jego login musi być dopisany do listy ACL danego folderu. Innymi słowy folder ma zdefiniowaną listę użytkowników wraz z ich uprawnieniami.
Firmy często przypisują użytkownikom uprawnienia i wpisują ich na listy ACL. Mogą w ten sposób wdrażać „grupy” i „role”, które umożliwiają kategoryzację użytkowników oraz przypisują im kontrolę dostępu i uprawnienia na podstawie ich pozycji w organizacji i funkcji zawodowych.
Zazwyczaj, gdy uwierzytelniony użytkownik ma dostęp do swojego konta, może wykonywać wszystkie operacje, do których jest upoważniony. Na przykład po zalogowaniu się na konto e-mail można wyświetlić wszystkie wiadomości e-mail, odpowiedzieć na nie, usuwać je, podzielić na kategorie, zmodyfikować dane osobowe i wykonać inne zadania związane z pocztą e-mail. Jeśli jednak użytkownik chce wykonać szczególnie wrażliwą operację (np. edycja profilu użytkownika), może być konieczne wykonanie dodatkowych kroków w celu autoryzacji żądania. W bezpiecznych środowiskach aplikacje mogą stosować dodatkowe metody autoryzacji w celu zwiększenia bezpieczeństwa, jeśli zauważą nietypowe zachowanie użytkownika, takie jak nietypowy adres IP, nietypowy czas logowania lub próba wykonania transakcji o wysokiej wartości. Ma to na celu zapewnienie, że tylko autoryzowani użytkownicy mają dostęp do swojego konta i udowodnienie, że ich konto nie zostało przejęte.
Przykład:
Użytkownik chce uzyskać dostęp do swojego konta bankowego.
Aby się zalogować, potrzebuje znać dane logowania do swojego konta. Po wprowadzeniu poprawnego loginu i hasła aplikacja udziela mu dostępu. To jest uwierzytelnienie. Po zalogowaniu użytkownik może wykonać operacje: np. zlecić przelew, sprawdzić historię transakcji, edytować dane teleadresowe itp. Użytkownik może wykonać wymienione czynności ponieważ jego konto w systemie zostało upoważnione do ich wykonywania czyli ma autoryzację do ich wykonania.
Natomiast, gdyby użytkownik chciał zwiększyć sobie samemu dostępny limit karty kredytowej, nie będzie w stanie tego zrobić, ponieważ jego konto nie zostało upoważnione do tego – nie ma autoryzacji.
Podsumowanie
Uwierzytelnianie i autoryzacja to dwa filary cyberbezpieczeństwa, które chronią aplikacje oraz dane przed potencjalnymi atakami.
Uwierzytelnianie to proces sprawdzania, czy użytkownik jest tym, za kogo się podaje, poprzez sprawdzenie jego poświadczeń. Autoryzacja to metoda sprawdzania uprawnień użytkownika i przyznawania dostępu tylko do określonych zasobów.
Pojęcia te się nie zastępują. Wręcz przeciwnie, uzupełniają się. Oba są kluczowe do zapewnienia bezpieczeństwa aplikacji, użytkowników oraz danych.

Odkąd się zorientował, że istnieje, jest programistą. Programuje, planuje, organizuje, optymalizuje i wdraża. Przeszedł drogę od juniora, przez seniora, team leadera do architekta rozwiązań mobilnych. Współtworzył i nadal tworzy aplikacje mobilne dla największych polskich banków.