ACL

Cyber Katalog 11 min czytania Access Control List Lista kontroli dostępu Lista ACL

Definicja ACL

ACL (Access Control List, lista kontroli dostępu) to w informatyce lista przypisana do konkretnego zasobu, która wylicza podmioty uprawnione do korzystania z niego oraz zakres ich praw. Słownik bezpieczeństwa internetu RFC 4949, na który powołuje się NIST, opisuje ją jako mechanizm kontroli dostępu do zasobu systemu, działający przez wyliczenie podmiotów, które mają do niego dostęp. Zasobem może być plik, katalog, interfejs routera, podsieć w chmurze albo obiekt w magazynie danych, a podmiotem użytkownik, grupa, proces, adres IP lub konto w usłudze chmurowej.

W bezpieczeństwie IT skrót ACL oznacza listę kontroli dostępu. W medycynie te same trzy litery oznaczają więzadło krzyżowe przednie (anterior cruciate ligament), więc w wyszukiwarce dopisek "IT" oddziela od siebie te dwa znaczenia.

Pomysł ma dobrze opisany rodowód. W 1971 roku Butler Lampson przedstawił uprawnienia w systemie jako macierz dostępu: wiersze to podmioty, kolumny to obiekty, a komórka mówi, co dany podmiot może zrobić z danym obiektem. Lista kontroli dostępu to jedna kolumna tej macierzy zapisana przy obiekcie, a lista uprawnień podmiotu (capability list) to jeden wiersz zapisany przy podmiocie. Dlatego ACL dobrze odpowiada na pytanie "kto ma dostęp do tego pliku", a znacznie gorzej na pytanie "do czego ma dostęp ten użytkownik", bo odpowiedź wymaga przejrzenia list wszystkich zasobów.

Trzy kolumny: lista kontroli dostępu w systemie plików, w sieci i w chmurze AWS, z obiektem, podmiotem i rodzajem decyzji w każdej z nich
Każda rodzina ACL inaczej określa, czego dotyczy lista, kogo wylicza i jaką decyzję podejmuje. Dlatego reguła przeniesiona między rodzinami rzadko znaczy to samo

Jak to działa

Gdy podmiot próbuje wykonać operację na zasobie, system odczytuje listę przypiętą do tego zasobu i porównuje żądanie z jej wpisami. Wpis, zwany w Windows ACE (access control entry), łączy identyfikator podmiotu z rodzajem dostępu, a w Windows i na listach sieciowych także z decyzją: zezwól albo zabroń. To, który wpis rozstrzyga, zależy od rodziny ACL, i właśnie w tym miejscu rodziny różnią się najbardziej.

Listy na routerach Cisco działają według zasady pierwszego dopasowania. Router sprawdza pakiet z kolejnymi regułami od góry, a pierwsza pasująca decyduje o przepuszczeniu albo odrzuceniu, więc dalsze reguły już się nie liczą. Według dokumentacji Cisco na końcu każdej listy stoi niejawna reguła odrzucająca pakiety, które nie pasują do żadnego wpisu. Network ACL w AWS również kończy ocenę na pierwszej pasującej regule: reguły mają numery od 1 do 32766 i są sprawdzane od najniższego.

Rozgałęzienie decyzji listy sieciowej: pakiet pasujący do reguły dostaje jej decyzję i ocena się kończy, a pakiet niepasujący idzie do następnej reguły, po ostatniej trafia na niejawny zakaz
Kolejność reguł jest częścią polityki: szeroka reguła wpisana nad wąską przesłania ją, dopóki kolejność się nie zmieni, a pakiet, który nie pasuje do żadnej reguły, odrzuca niejawny zakaz

Windows przechodzi wpisy listy DACL (discretionary access control list) po kolei, aż znajdzie wpisy, które razem przyznają wszystkie żądane prawa, albo wpis, który odmawia któregokolwiek z nich. Kolejność wpisów zmienia więc wynik. Microsoft opisuje porządek kanoniczny: najpierw wpisy nadane wprost, potem odziedziczone po obiektach nadrzędnych, a w każdej z tych grup zakazy przed zezwoleniami. Funkcje API, takie jak AddAccessAllowedAceEx, dopisują nowy wpis na końcu listy, a zadbanie o właściwą kolejność należy do programu, który listę buduje.

Linux z listami POSIX ACL nie przechodzi wpisów po kolei, tylko szuka klasy, do której pasuje proces: najpierw właściciel pliku, potem wskazany użytkownik, potem grupy, na końcu wszyscy pozostali. W klasie grup dostęp daje dowolny pasujący wpis grupy, czy to grupy pliku, czy grupy wskazanej. Pierwsza pasująca klasa rozstrzyga, nawet jeśli dalsza dałaby więcej praw.

Struktura i klasyfikacja

Listy kontroli dostępu dzielą się na rodziny według tego, czego pilnują. Każda ma własny format wpisu i własne reguły oceny:

Rodzina Obiekt Wpis wylicza Decyzja i sposób oceny
POSIX ACL (Linux, Unix) plik, katalog właściciela, użytkowników, grupy, pozostałych odczyt, zapis, wykonanie; rozstrzyga pierwsza pasująca klasa i maska
DACL i SACL (Windows, NTFS) plik, klucz rejestru, obiekt konta i grupy DACL zezwala lub zabrania, SACL zapisuje próby dostępu do dziennika
Lista na routerze lub zaporze interfejs, kierunek ruchu adresy, protokoły, porty przepuść albo odrzuć; pierwsze dopasowanie, na końcu niejawny zakaz
Network ACL w chmurze (AWS) podsieć adresy, protokoły, porty zezwól albo zabroń; numerowane reguły od najniższej, bez śledzenia stanu
ACL obiektu w magazynie (S3) zasobnik, obiekt konta i grupy predefiniowane nadanie praw do obiektu; w nowych zasobnikach domyślnie wyłączone

W Linuksie listę odczytuje polecenie getfacl, a zmienia setfacl. Poniższe polecenie daje kontu anna prawo odczytu i zapisu pliku, którego właścicielem jest jan:

setfacl -m u:anna:rw raport.txt
getfacl raport.txt

Wynik getfacl pokazuje wszystkie klasy wpisów naraz:

# file: raport.txt
# owner: jan
# group: ksiegowosc
user::rw-
user:anna:rw-
group::r--
mask::rw-
other::---

W powyższym wyniku: user:: to właściciel, user:anna: to wpis dla wskazanego użytkownika, group:: to grupa pliku, other:: to wszyscy pozostali, a mask:: to górna granica praw. Strona podręcznika acl(5) opisuje maskę jako maksymalne prawa, jakie mogą dać wpisy wskazanych użytkowników, grupy pliku i wskazanych grup. Wpis user:anna:rwx przy masce r-- daje w praktyce tylko odczyt, dlatego obniżenie maski ogranicza naraz wszystkie te wpisy, nie zmieniając żadnego z nich.

Cztery kolejne kroki sprawdzania POSIX ACL: właściciel, wskazany użytkownik, grupy i pozostali, przy czym dwa środkowe kroki ogranicza maska
Maska nie dotyczy właściciela ani pozostałych, tylko dwóch środkowych kroków, więc to ona wyznacza górny pułap praw wskazanych użytkowników i grup, niezależnie od ich wpisów

Katalog może mieć też listę domyślną. Nowy plik utworzony w takim katalogu dziedziczy ją jako własną listę, a jego prawa są następnie przycinane do trybu, z jakim program go tworzy.

Listy sieciowe Cisco dzielą się na standardowe i rozszerzone. Standardowe, o numerach od 1 do 99 oraz od 1300 do 1999, porównują wyłącznie adres źródłowy pakietu. Rozszerzone, o numerach od 100 do 199 oraz od 2000 do 2699, porównują adres źródłowy i docelowy, a do tego protokół i port. Zakres adresów wskazuje maska odwrotna (wildcard mask), w której zero oznacza bit do dokładnego porównania, a jedynka bit dowolny:

access-list 110 permit tcp 10.1.1.0 0.0.0.255 any eq 443
access-list 110 deny ip any any log

W powyższym przykładzie pierwsza reguła przepuszcza ruch HTTPS z sieci 10.1.1.0/24 do dowolnego celu, a druga odrzuca resztę i zapisuje ją w dzienniku. Lista zaczyna działać dopiero po przypisaniu jej do interfejsu w wybranym kierunku ruchu. Druga reguła robi to samo, co niejawny zakaz na końcu listy, ale dodatkowo zapisuje odrzucone pakiety w dzienniku.

W szerszym kontekście

ACL bywa mylona z modelami kontroli dostępu, choć odpowiada na inne pytanie. DAC, MAC, RBAC i ABAC to modele kontroli dostępu, a lista kontroli dostępu to mechanizm zapisu uprawnień przy zasobie. Najbliżej jej do modelu uznaniowego (DAC), w którym właściciel zasobu decyduje, kto dostanie dostęp, i robi to właśnie przez wpisy na liście. W modelu ról (RBAC) uprawnienia przydziela się rolom, więc lista zawiera zwykle wpisy grup odpowiadających rolom, a nie nazwiska. Zarządzanie tożsamościami i uprawnieniami w całej organizacji opisuje hasło IAM, a kontrolę kont uprzywilejowanych hasło PAM.

Strona podręcznika acl(5) przyznaje, że prace nad standardem POSIX 1003.1e porzucono, a wiele systemów uniksowych implementuje części jego projektu w wersji 17 albo wcześniejszych. Listy POSIX ACL mogą więc różnić się szczegółami między systemami, bo nie spina ich żaden obowiązujący standard.

W Amazon S3 listy kontroli dostępu tracą znaczenie na rzecz polityk. Usługa tworzy nowe zasobniki (buckets) z ustawieniem Bucket owner enforced, przy którym listy ACL są wyłączone, a dostępem rządzą wyłącznie polityki. AWS zaleca zostawienie ich wyłączonych, poza przypadkami, w których trzeba sterować dostępem do każdego obiektu osobno. W sieci VPC lista ACL działa obok grupy zabezpieczeń (security group), a AWS wskazuje grupę zabezpieczeń jako mechanizm podstawowy, a listę jako warstwę dodatkową, na przykład do zablokowania wybranego ruchu dla całej podsieci.

Porównanie network ACL i security group w AWS: lista działa na podsieci i nie śledzi stanu połączeń, grupa działa na instancji i przepuszcza odpowiedzi sama
Bezstanowa lista wymaga osobnej reguły dla ruchu powrotnego, dlatego reguła, która wpuszcza zapytania do podsieci, nie wystarcza, żeby odpowiedzi z niej wyszły

Klasyczna lista kontroli dostępu ocenia podmiot i rodzaj operacji, a lista sieciowa w miejsce podmiotu ocenia adresy, protokół i port. Architektura Zero Trust dokłada do tej decyzji kontekst, taki jak stan urządzenia czy ryzyko sesji, którego zwykła lista nie bierze pod uwagę.

Zastosowanie w praktyce

  • Wspólne katalogi w firmie. Lista na katalogu działu daje grupie działu prawo zapisu, a pozostałym pracownikom tylko odczyt albo nic. Wpis grupy zamiast wpisów pojedynczych osób sprawia, że zmiana składu zespołu nie wymaga edycji listy.
  • Segmentacja sieci. Lista na interfejsie routera odcina segment z serwerami od sieci biurowej i przepuszcza tylko potrzebne porty. Dokumentacja Cisco uznaje za dobrą praktykę przypisanie listy do interfejsu najbliżej źródła ruchu. Głębszą analizę ruchu, której lista nie wykonuje, zapewnia system IPS.
  • Zasady brzegowe w chmurze AWS. Network ACL blokuje wybrany ruch na poziomie całej podsieci, więc działa także wtedy, gdy nowa instancja trafi do niej bez właściwej grupy zabezpieczeń.
  • Audyt dostępu. Lista SACL w Windows zapisuje w dzienniku zdarzeń udane lub nieudane próby dostępu do wskazanych plików, a te zdarzenia trafiają potem do systemu SIEM, który wiąże je z innymi sygnałami.

Najczęstsze nieporozumienia

  • "DAC, MAC, RBAC i ABAC to rodzaje ACL" - nie. To modele kontroli dostępu. Lista kontroli dostępu jest mechanizmem zapisu, który dobrze oddaje DAC, a RBAC zwykle przez wpisy grup. Wymuszanie polityki w modelu MAC, na przykład w SELinux, opiera się na etykietach, których zwykła lista nie przechowuje.
  • "Obiekt bez listy jest niedostępny" - w Windows jest odwrotnie. Microsoft opisuje, że obiekt bez DACL daje pełny dostęp każdemu, a dopiero pusta DACL, bez żadnego wpisu, blokuje wszystkie próby dostępu.
  • "Zakaz zawsze wygrywa z zezwoleniem" - nie zawsze. Windows zatrzymuje się na pierwszych wpisach, które rozstrzygają żądanie, więc zezwolenie obejmujące wszystkie żądane prawa i stojące przed zakazem wygrywa. W porządku kanonicznym zakaz poprzedza zezwolenie tylko w obrębie jednej grupy wpisów, a wpisy nadane wprost stoją przed odziedziczonymi, dlatego jawne zezwolenie na pliku pokonuje zakaz odziedziczony po katalogu.
  • "Kolejność reguł na routerze nie ma znaczenia" - ma, i to rozstrzygające. Przy pierwszym dopasowaniu szeroka reguła wpisana nad wąską sprawia, że wąska nigdy nie zadziała.
  • "Lista przepuszczająca ruch do podsieci przepuszcza też odpowiedzi" - nie w przypadku network ACL w AWS. Ta lista nie śledzi stanu połączeń, więc ruch powrotny trzeba przepuścić osobną regułą, czego nie wymaga stanowa grupa zabezpieczeń.

FAQ

Co to jest ACL w IT?

ACL (Access Control List) to lista kontroli dostępu przypisana do zasobu, na przykład pliku, interfejsu routera albo podsieci w chmurze. Każdy wpis na liście wskazuje podmiot, taki jak użytkownik, grupa albo adres IP, i mówi, co ten podmiot może z zasobem zrobić. System sprawdza listę przy każdej próbie dostępu i na jej podstawie zezwala albo odmawia.

Czym różni się ACL od RBAC?

RBAC (Role-Based Access Control) to model, w którym uprawnienia przypisuje się rolom, a użytkownikom role. ACL to mechanizm zapisu uprawnień przy konkretnym zasobie. Oba często działają razem: role z RBAC trafiają do list kontroli dostępu zwykle jako wpisy grup, więc lista mówi, które role mają dostęp do danego zasobu.

Jak sprawdzić listę ACL w Linuksie i Windows?

W Linuksie polecenie getfacl plik wyświetla wszystkie wpisy listy POSIX ACL, a setfacl je zmienia. W Windows wpisy DACL pliku pokazuje karta Zabezpieczenia we właściwościach pliku oraz polecenie icacls plik w wierszu poleceń. Jeśli katalog ma listę domyślną, getfacl wypisuje ją dodatkowo; dziedziczą ją pliki tworzone w tym katalogu.

Co to jest niejawny zakaz w liście ACL?

Niejawny zakaz (implicit deny) to reguła, która odrzuca każdy ruch niepasujący do żadnego wpisu na liście. W routerach Cisco stoi na końcu każdej listy, choć nie widać jej w konfiguracji. Dlatego lista zawierająca same zakazy blokuje cały ruch, a nie tylko ten wymieniony w regułach.

Czy security group w AWS to lista ACL?

Nie w ścisłym sensie. Grupa zabezpieczeń działa na poziomie instancji, ma wyłącznie reguły zezwalające, ocenia wszystkie reguły razem i śledzi stan połączeń, więc odpowiedzi przepuszcza sama. Network ACL działa na poziomie podsieci, ma reguły zezwalające i zabraniające, ocenia je według numerów i nie śledzi stanu połączeń.

Powiązane pojęcia

Powiązane pojęcia
  • IAM - zarządzanie tożsamościami i uprawnieniami, w którym listy ACL są jednym z narzędzi egzekwowania dostępu.
  • PAM - nadzór nad kontami uprzywilejowanymi, na przykład sejfy haseł i nagrywanie sesji, czego same wpisy na listach nie zapewniają.
  • Zero Trust - architektura, która do decyzji o dostępie dokłada kontekst żądania, którego zwykła lista nie bierze pod uwagę.
  • IPS - system, który analizuje treść ruchu sieciowego, a nie tylko adresy i porty z reguł listy.
  • SIEM - system zbierający zdarzenia, w tym zapisy prób dostępu z list SACL i odrzucenia z list sieciowych.

Bezpieczeństwo infrastruktury

Znajdziesz tu firmy, które zabezpieczają sieci, systemy i infrastrukturę IT.

Zobacz kategorię

Kanał RSS

Nowe pozycje z tej sekcji w formacie RSS. Adres kanału do subskrypcji w dowolnym czytniku.

Hasła słownika https://cyberkatalog.pl/feed-slownik.xml