A jogosultság visszavonása után is bent van valaki: a munkamenet nem azonos a jogosultsággal

A jogosultság eltávolítása megtörtént, a fiók letiltása is, az adott személy mégis tud műveleteket végezni. Semmi nem hibás: a hozzáférés visszavonása és a munkamenet lezárása két külön művelet.

AtlasPVE ·

A bejegyzés ezekre válaszol

  • proxmox törölt felhasználó még be tud lépni
  • proxmox jogosultság elvéve mégis van hozzáférés
  • proxmox folyamatosan kiléptet
  • meddig él egy proxmox munkamenet
  • proxmox api token visszavonása

Egy felhasználó jogosultságának eltávolítása megtörtént. Talán a fiók letiltása is. Aztán kiderül, hogy az illető továbbra is tud műveleteket végezni.

Semmi nem hibás. A bejelentkezés és a jogosultság ellenőrzése két külön pillanat, és van közöttük egy rés.

A bejelentkezés egyszer történik, a jogosultság kérdése minden alkalommal felmerül

Bejelentkezéskor a rendszer egy belépőjegyet ad ki. A jegy azt mondja: ez a személy igazolta a kilétét, és ez a jegy eddig és eddig érvényes.

A jogosultság külön kérdés, amely minden egyes kérésnél újra felmerül. A gyakorlatban viszont sok rendszer a gyorsaság kedvéért másolatot készít a jogosultsági térképről a bejelentkezés pillanatában, és egy ideig ezt a másolatot használja.

Ebből két késés következik.

Az első: egy jogosultság eltávolítása után a nyitott munkamenet még viheti magával a régi másolatot. A változás csak a munkamenet megújulásakor ér el hozzá.

A második, és ez a fontosabb: a felhasználó törlése vagy letiltása nem tépi szét a nála lévő jegyet. A jegy önmagában hordozza a tartalmát, és a lejáratáig érvényes marad.

A szabály: a hozzáférés visszavonása nem azonos a munkamenet lezárásával

Ez két külön művelet, és ha csak az első történik meg, egy ablak nyitva marad.

Az ablak nem végtelen, egy jegy nem érvényes egy napig. De nem is nulla, és sürgős helyzetben kevés vigasz, hogy hamarosan bezárul.

Ha valaki távozik, vagy egy jelszó gyanússá válik

Három lépés következik, ebben a sorrendben.

A jogosultság eltávolítása. Ha indokolt, a fiók letiltása is.

A jelszó megváltoztatása. Ez zárja le az utat ahhoz, hogy a meglévő jegy helyett újat lehessen szerezni. A jogosultság eltávolítása önmagában nem teszi meg ezt.

A hozzáférési tokenek külön eltávolítása. Ez a leggyakrabban kihagyott lépés. A token nem munkamenet: magától nem jár le, a törléséig él. A felhasználó jelszavának cseréje nem érvényteleníti a tokenjeit. Egy felhasználó eltávolításakor külön ellenőrzés szükséges arról, mi lett a tokenjeivel.

És egy tévhitet érdemes itt lezárni: a kétlépcsős azonosítás ebben nem segít. Az a bejelentkezés pillanatát őrzi. A már nyitott munkamenetről semmit nem mond.

A másik irány: miért történik folyamatos kiléptetés

Ez ugyanannak a működésnek a másik arca.

A jegy élettartama korlátozott, és a felület rendszeresen megújítja mindaddig, amíg a lap nyitva van. Ha a lap bezárul, és órákkal később nyílik meg újra, megújítás nem történt, a jegy elhalt, és új bejelentkezés következik. Ez nem hiba.

A második, kevésbé ismert ok érdekesebb: a gép órája. A jegy időbélyeget hordoz. Ha a szerver órája elcsúszik, egy éppen kiadott jegy úgy nézhet ki, mintha a jövőből érkezne vagy régen lejárt volna. A tünet zavarba ejtő: a jelszó jó, a bejelentkezés elfogadottnak látszik, a munkamenet pedig rögtön utána elszáll. Azonosítási hiba mellett az óra ellenőrzése senkinek nem jut eszébe, pedig érdemes megnézni.

Mit csinál az Atlas

Az Atlas esetében a böngészőbe kerülő süti nem maga a jegy. A böngésző csak egy jelentés nélküli, véletlenszerű azonosítót visz magával, a tényleges jegy a szerveren marad.

A különbség kézzelfogható: ha egy böngészőhiba ki is olvassa a sütit, magát a jegyet nem viszi el, tehát máshová átvinni és ott felhasználni sem tudja. Egyedül annyit tehet, hogy az adott böngészőből cselekszik, amíg az a munkamenet él. Ez nem nulla kockázat, a fenyegetés hatókörét viszont leszűkíti.

A nyitott munkamenetek lemezre kerülnek, így a termék frissítésekor senki nem esik ki. Az írás szándékosan egyetlen lépésben történik: ha a fájl félig megírva maradna, akkor az olvasó oldal tűrése ellenére is minden nyitott munkamenet elszállna.

Amit itt igazán érdemes elmondani, az egy méréssel megtalált hiba.

A lejárt munkamenet-bejegyzések takarítása csak a memóriában történt, a fájlban nem. Egy éles gép ellenőrzése ezt adta: öt lejárt bejegyzés ült a fájlban, mindegyikben egy jeggyel. A következő bejelentkezésig ott is maradtak volna, mert azt a fájlt semmi más nem írta.

A kód szándéka eleve az volt, hogy ne őrizze meg őket. Egyedül az írási lépés hiányzott.

A tanulság mindenkinek szól, aki biztonsági kódot ír: a felejtésnek két helye van. Ami a memóriából eltűnt, az a lemezről még nem tűnt el, és a kettő közül mindig a lemezen lévő él tovább. Amikor eldől, hogy valamit nem szabad megőrizni, a második kérdés mindig ugyanaz: hol van tárolva?

Források

A Proxmox saját dokumentációja. Angol nyelvű, és ebben a kérdésben az övé az utolsó szó.

Kapcsolódó bejegyzések

Hogyan néz ki ez az Atlason belül?

Tovább a termékoldalra