Modelowanie systemu uprawnień

82

Jak zamodelowałbyś system, który obsługuje uprawnienia do wykonywania określonych działań w aplikacji?

James P.
źródło

Odpowiedzi:

156

Modele bezpieczeństwa to duży (i otwarty) obszar badań. Do wyboru jest ogromna liczba modeli, od prostych:

  • Macierz kontroli dostępu firmy Lampson wymienia każdy obiekt domeny i każdą jednostkę główną w systemie wraz z działaniami, które jednostka główna może wykonać na tym obiekcie. Jest bardzo rozwlekły i jeśli faktycznie jest zaimplementowany w ten sposób, bardzo intensywnie wykorzystuje pamięć.

  • Listy kontroli dostępu są uproszczeniem macierzy Lampsona: należy przyjąć, że jest to coś podobnego do implementacji macierzy rzadkiej, która wymienia obiekty i podmioty oraz dozwolone akcje, i nie koduje wszystkich „zerowych” wpisów z macierzy Lampsona. Listy kontroli dostępu mogą obejmować „grupy” jako wygody i wykazy mogą być przechowywane przez obiekt lub poprzez główny (czasami za pośrednictwem programu, podobnie jak w AppArmor lub Tomoyo lub LIDS ).

  • Systemy zdolności opierają się na idei posiadania odniesienia lub wskaźnika do obiektów; proces ma dostęp do początkowego zestawu możliwości i może uzyskać więcej możliwości tylko poprzez otrzymanie ich od innych obiektów w systemie. Brzmi to dość daleko, ale pomyśl o deskryptorach plików w Uniksie: są one niemożliwym do podrobienia odniesieniem do konkretnego otwartego pliku, a deskryptor pliku może być przekazany innym procesom lub nie. Jeśli przekażesz deskryptor innemu procesowi, będzie on miał dostęp do tego pliku. Wokół tego pomysłu napisano całe systemy operacyjne. (Najbardziej znane to prawdopodobnie KeyKOS i EROS, ale jestem pewien, że jest to kwestia dyskusyjna. :)

... do bardziej złożonych, które mają etykiety bezpieczeństwa przypisane do obiektów i zleceniodawców:

  • Pierścienie zabezpieczające , takie jak zaimplementowane między innymi w procesorach Multics i x86, i zapewniają pułapki bezpieczeństwa lub bramki umożliwiające procesom przejście między pierścieniami; każdy pierścień ma inny zestaw przywilejów i obiektów.

  • Denning's Lattice to model, w którym zleceniodawcy mogą wchodzić w interakcje z określonymi etykietami bezpieczeństwa w bardzo hierarchiczny sposób.

  • Bell-LaPadula jest podobna do Denning's Lattice i zapewnia reguły zapobiegające wyciekaniu ściśle tajnych danych na niesklasyfikowane poziomy, a wspólne rozszerzenia zapewniają dalszą podział na segmenty i kategoryzację, aby lepiej zapewnić wsparcie w stylu wojskowym „trzeba wiedzieć”.

  • Biba model jest podobny do dzwonu LaPadula, ale „na głowie” - Bell-LaPadula koncentruje się na tajemnicy, ale nic nie robi dla integralności i Biba skupia się na uczciwości, ale nie robi nic dla zachowania poufności. (Bell-LaPadula uniemożliwia komuś przeczytanie Listy wszystkich szpiegów, ale z radością pozwoliłby każdemu coś w niej napisać. Biba z radością pozwoliłby każdemu przeczytać Listę wszystkich szpiegów, ale prawie wszystkim zabroniłby do niej pisać).

  • Egzekwowanie typu (i jego odpowiednik, wymuszanie typu domeny) zapewnia etykiety na podmiotach głównych i obiektach oraz określa dozwolone tabele obiekt-czasownik-podmiot (klasa). To jest znany SELinux i SMACK.

.. a są też takie, które uwzględniają upływ czasu:

  • Chiński Mur powstał w środowisku biznesowym, aby oddzielić pracowników w organizacji, która świadczy usługi konkurentom na danym rynku: np. Po rozpoczęciu pracy z kontem Exxon-Mobil Johnson nie ma dostępu do konta BP. Gdyby Johnson zaczął pracować nad BP, odmówiono by mu dostępu do danych Exxon-Mobil.

  • LOMAC i high-watermark to dwa dynamiczne podejścia: LOMAC modyfikuje uprawnienia procesów w miarę uzyskiwania dostępu do coraz wyższych poziomów danych i zabrania pisania na niższych poziomach (procesy migrują w kierunku „najwyższego poziomu bezpieczeństwa”), a znak wodny o wysokim poziomie wodnym modyfikuje etykiety na dane, ponieważ procesy wyższego poziomu mają do nich dostęp (migracja danych w kierunku „najwyższego poziomu bezpieczeństwa”).

  • Modele Clarka-Wilsona są bardzo otwarte; zawierają niezmienniki i reguły zapewniające, że każda zmiana stanu nie narusza niezmienników. (Może to być tak proste, jak księgowanie podwójnego zapisu lub tak złożone, jak HIPPA ). Pomyśl o transakcjach i ograniczeniach bazy danych.

Warto przeczytać książkę Matta Bishopa „Bezpieczeństwo komputerowe: sztuka i nauka”, jeśli chcesz uzyskać więcej informacji na temat opublikowanych modeli.

sarnold
źródło
7
Doskonała odpowiedź. Ciekawa lektura. Zastanawiam się, gdzie ten zbyt prosty, ale nie tak rzadki system mieści się na Twojej liście: „Domyślnie goście mają poziom 0, zarejestrowani użytkownicy mają poziom 5, administratorzy sys mają poziom 9. Każda akcja ma przypisany poziom, i może być wykonywane tylko przez kogoś na tym lub wyższym poziomie ”.
Oddthinking
1
@Oddthinking, ten prosty model może być w kilku :) ale najprostszym „dopasowaniem” jest model Ring. Jak zaimplementowano w x86, ma cztery poziomy, tak jak w twoim przykładzie, i każdy dodaje operacje, które można wykonać tylko na tym poziomie kodu lub wyższym. (To, co je nazywasz, jest kwestią ortogonalną.) Mogę łatwo wyobrazić sobie implementacje ACL, Capability, Lattice, BLP i TE również w tym przykładzie. Nie zdziwiłbym się, gdyby inni też mogli wdrożyć ten model; ale prostota jest dobrą cnotą. :)
sarnold
@Frank, dzięki! Moja pisownia jest okropna, dzięki za połowy.
sarnold