• authz
  • authn
  • koncepcja

Czym jest AuthZ (autoryzacja)?

Poznaj definicję AuthZ, różnice między AuthN a AuthZ, jak działa AuthZ i najlepsze praktyki autoryzacyjne.

Guamian
Guamian
Product & Design

Co to jest AuthZ i czym różni się od AuthN?

AuthZ to skrót od autoryzacji. Autoryzacja to odrębny mechanizm od uwierzytelnienia. Podczas gdy uwierzytelnienie identyfikuje, kim jesteś, autoryzacja określa, czy możesz uzyskać dostęp do konkretnych zasobów i jakie działania możesz na nich wykonać.

W rzeczywistych przykładach zasoby mogą obejmować oprogramowanie, systemy, dokumenty, zamówienia i aktywa. Autoryzacja dodaje dodatkową warstwę kontroli, określając, kto może uzyskać dostęp do tych zasobów i na jakich warunkach.

Jak działa AuthZ?

Autoryzacja jest oddzielna od uwierzytelnienia, ale często się z nim łączy. Na przykład, standardowe protokoły jak OAuth 2.0, OIDC i SAML zawierają mechanizmy autoryzacji oparte na tokenach.

W systemie autoryzacji opartym na tokenach, serwer autoryzacji przyznaje użytkownikom token dostępu. Ten token, który zawiera uprawnienia, określa, czy użytkownik może uzyskać dostęp do określonych zasobów.

Przydzielanie uprawnień bezpośrednio użytkownikom może być nieefektywne, zwłaszcza gdy wymagana jest bardziej szczegółowa kontrola warunków. Na przykład, dostęp może zależeć od konkretnych okoliczności, takich jak lokalizacja użytkownika, co czyni koniecznym stosowanie polityk zarządzania dostępem dla lepszego zarządzania uprawnieniami.

Oto szczegółowy opis sposobu działania autoryzacji:

  1. Inicjacja uwierzytelnienia: Użytkownik loguje się, wybierając identyfikator i metodę, na przykład używając e-maila i hasła.
  2. Żądanie autoryzacji: Po zalogowaniu, użytkownik żąda dostępu do zasobu, w tym szczegółów jak jego identyfikator użytkownika i role.
  3. Weryfikacja kontroli dostępu: System sprawdza żądanie na podstawie zdefiniowanych polityk autoryzacyjnych, takich jak zasady oparte na rolach lub atrybutach.
  4. Decyzja autoryzacyjna: System określa, czy przyznać, czy odmówić dostępu na podstawie polityk i uprawnień.

Aby zrozumieć przepływ żądania autoryzacyjnego w OAuth 2.0, sprawdź żądanie autoryzacyjne

Jakie są typy autoryzacji?

Kontrola dostępu oparta na rolach i jej działanie

Kontrola Dostępu Oparta na Rolach (RBAC) wykorzystuje role do zarządzania dostępem. Każdy użytkownik ma przypisaną jedną lub więcej wcześniej zdefiniowanych ról, a każda rola zawiera zestaw uprawnień. Kluczem do RBAC jest zrozumienie zależności między podmiotami (lub użytkownikami), rolami i uprawnieniami.

Aby zrozumieć, jak działa Kontrola Dostępu Oparta na Rolach (RBAC), musisz wiedzieć o:

  1. Podmioty: To mogą być użytkownicy lub nie-ludzkie byty, takie jak użytkownik czy aplikacja machine-to-machine.
  2. Role: Reprezentują funkcje zawodowe lub obowiązki. np. admin członek
  3. Uprawnienia: Określają, jakie działania są dozwolone na określonych zasobach, np. odczyt: zamówienie.

RBAC-diagram.png

Kontrola dostępu oparta na atrybutach i jej działanie

Kontrola Dostępu Oparta na Atrybutach (ABAC) jest szeroko stosowana w autoryzacji i wspiera bardziej złożone scenariusze poprzez użycie określonych atrybutów bytu, poza samymi rolami.

Na przykład, firma zarządza globalną platformą do udostępniania dokumentów, gdzie pracownicy potrzebują kontrolowanego dostępu do poufnych plików na podstawie swojej roli zawodowej, lokalizacji i poziomu klasyfikacji dokumentu.

Atrybuty mogą być zaprojektowane w następujący sposób:

  1. Atrybuty użytkownika: Rola (np. „Menedżer”, „Inżynier”), lokalizacja (np. „USA”, „Europa”).
  2. Atrybuty zasobów: Typ dokumentu (np. „Raport finansowy”, „Plik projektowy”), poziom klasyfikacji (np. „Poufne”).
  3. Atrybuty środowiska: Czas dostępu (np. „W godzinach pracy”), typ urządzenia (np. „Laptop firmowy”).

Istnieją również inne modele kontroli dostępu, takie jak kontrola dostępu oparta na politykach (PBAC) . Każdy model ma swoje mocne i słabe strony, a wybór modelu zależy od twojego przypadku użycia i wymagań.

Przypadki użycia i przykłady AuthZ

Oprogramowanie B2C

Oprogramowanie B2C często wymaga określonych ról w oparciu o potrzeby biznesowe. Na przykład aplikacja do zarządzania księgarnią może zawierać role z różnymi obowiązkami, jak zarządzanie zasobami i usługami.

Aplikacja B2B z architekturą wielu najemców

Aplikacje B2B często wykorzystują architekturę multi-tenant, gdzie każdy najemca reprezentuje organizację. W organizacji potrzebne są role, takie jak admin i członek. Właśnie w tym miejscu autoryzacja (AuthZ) odgrywa kluczową rolę w zarządzaniu użytkownikami na poziomie organizacji, często używając Kontroli Dostępu Opartej na Rolach (RBAC).

Autoryzacja maszyna-do-maszyny

Komunikacja maszyna-do-maszyny odbywa się bezpośrednio między usługami bez interakcji z człowiekiem. Na przykład, wywoływanie usług API. Często wiąże się to z używaniem tokenów (np. tokenów dostępu OAuth 2.0), aby zapewnić bezpieczny, dynamiczny i szczegółowy dostęp.

Jakie są najlepsze praktyki dla AuthZ?

Oto kilka najlepszych praktyk w zakresie autoryzacji (authZ) zapewniających bezpieczną i skuteczną kontrolę dostępu:

  • Zasada najmniejszych uprawnień

    To zapewnia minimalizację ryzyka nieautoryzowanego dostępu lub szkód spowodowanych przez skompromitowane konta. Użytkownicy i systemy powinni uzyskiwać dostęp tylko do tych zasobów i działań, które są potrzebne do ich roli.

  • Stosuj autoryzację opartą na tokenach

    Kontrola dostępu oparta na tokenach oferuje większą elastyczność i bardziej szczegółową kontrolę, przestrzegając otwartych standardów. Używaj bezpiecznych tokenów (np. OAuth 2.0, JWT) do udzielania dostępu na określony czas i zakres.

  • Regularnie audytuj i monitoruj

    Regularne przeglądanie logów dostępu i polityk autoryzacyjnych jest konieczne, aby wykrywać anomalie lub przestarzałe uprawnienia.

  • Stosuj zasadę separacji obowiązków

    Rozpocznij od wdrażania szczegółowych uprawnień, takich jak definiowanie konkretnych działań i zasobów (np. odczyt, zapis, usunięcie). Tworząc role, stosuj jasne nazwy ról i wymuszaj separację obowiązków, aby zminimalizować ryzyko oszustwa lub błędów przez pojedynczego użytkownika.

  • Obsługuj środowiska wielo-najemcowe (jeśli dotyczy)

    Dla systemów z architekturą multi-tenant, izolacja najemców jest ważna. Łącząc ją z kontrolą dostępu opartą na rolach, możesz osiągnąć separację zasobów danych, zapewniając, że odpowiednie role mogą uzyskiwać dostęp do zasobów tylko w obrębie swojego najemcy. Zapobiega to przypadkowemu lub złośliwemu dostępowi do zasobów innych najemców.

  • Dynamicznie usuwaj dostęp

    Podczas projektowania systemu AuthZ, upewnij się, że uprawnienia mogą być aktualizowane lub cofane natychmiast, jeśli warunki się zmienią (np. aktualizacje ról lub zakończenie zatrudnienia). Można to osiągnąć przez dynamiczne sprawdzanie API, webhooki lub inne metody. Celem jest zapobieżenie nieautoryzowanemu dostępowi w czasie rzeczywistym.

Czym różnią się AuthZ (autoryzacja) i AuthN (uwierzytelnienie)?

Różnica między uwierzytelnieniem a autoryzacją polega na ich celu i procesie w zarządzaniu tożsamością i dostępem.

AuthN (uwierzytelnienie) odpowiada na pytanie „Kim jesteś i którą tożsamość posiadasz”. Jest to proces weryfikacji tożsamości użytkownika, usługi lub urządzenia. Uwierzytelnienie zapewnia, że podmiot próbujący uzyskać dostęp do systemu lub zasobu jest autentyczny. Powszechne metody obejmują hasła, biometrię i uwierzytelnianie dwuskładnikowe (2FA). Na przykład, gdy logujesz się na konto, używając swojego e-maila i hasła, system potwierdza twoją tożsamość poprzez uwierzytelnienie.

AuthZ (autoryzacja) odpowiada na pytanie „Co możesz zrobić?”. Jest to proces przyznawania lub odmowy dostępu do zasobów na podstawie uprawnień lub ról użytkownika. Autoryzacja następuje po uwierzytelnieniu i określa, jakie działania może wykonywać uwierzytelniony użytkownik. Na przykład, po zalogowaniu, użytkownik z uprawnieniami administratora może mieć dostęp do modyfikowania ustawień, podczas gdy zwykły użytkownik może je tylko przeglądać.

Podsumowując, AuthN (uwierzytelnienie) potwierdza tożsamość, podczas gdy AuthZ (autoryzacja) definiuje dostęp. Uwierzytelnienie następuje najpierw, a po nim autoryzacja, aby zapewnić bezpieczne i odpowiednie wykorzystanie zasobów.

Budowa AuthZ (autoryzacji) z Logto

Logto Cloud oferuje kluczowe usługi autoryzacyjne na bazie otwartych standardów protokołów, takich jak OIDC, OAuth 2.0 i SAML. Funkcje obejmują Kontrolę Dostępu Opartą na Rolach, Organizacje (wielo-najemcowość) i Niestandardowe Roszczenia Tokenów, aby spełniać różnorodne potrzeby autoryzacyjne z różnych perspektyw.