Hozzáférés-vezérlés az Azure Data Lake Storage Gen1-ben
Azure Data Lake Storage Gen1 egy HDFS-ből származó hozzáférés-vezérlési modellt implementál, amely viszont a POSIX hozzáférés-vezérlési modellből származik. Ez a cikk a Data Lake Storage Gen1 hozzáférés-vezérlési modelljének alapjait foglalja össze.
Fájlokra és mappákra vonatkozó hozzáférés-vezérlési listák
Kétféle hozzáférés-vezérlési lista (ACL) létezik – a hozzáférési ACL és az alapértelmezett ACL.
Hozzáférési ACL-ek: Egy objektum hozzáféréseit vezérlik. A fájlok és mappák egyaránt rendelkeznek hozzáférési ACL-lel.
Alapértelmezett ACL: A mappához társított ACL „sablon”, amely meghatározza az adott mappában létrehozott gyermekelemek hozzáférési ACL-jeit. A fájlok nem rendelkeznek alapértelmezett ACL-ekkel.
A hozzáférési ACL-ek és alapértelmezett ACL-ek ugyanazzal a struktúrával rendelkeznek.
Megjegyzés
Ha megváltoztatja az alapértelmezett ACL-eket egy szülő objektumon, akkor az nem módosítja a már létező gyermekelemek hozzáférési ACL-jeit és alapértelmezett ACL-jeit.
Engedélyek
A fájlrendszer objektumaira vonatkozó engedélyek a következők: Olvasás, Írás, és Végrehajtás. Ezek az engedélyek használhatók fájlok és mappák esetében a következő táblázatban látható módon:
Fájl | Mappa | |
---|---|---|
Olvasás (R) | Olvashatja a fájl tartalmát | Olvasás és végrehajtás szükséges a mappa tartalmának listázásához |
Írás (W) | Írhatja a fájlt vagy hozzáfűzhet a fájlhoz | Írás és Végrehajtás szükséges gyermekelemek létrehozásához a mappában |
Végrehajtás (X) | Nem jelent semmit a Data Lake Storage Gen1 | Szükséges egy mappa gyermekelemeinek bejárásához |
Az engedélyek rövid alakjai
RWX az Olvasás + Írás + Végrehajtás engedélyt jelöli. Egy tömörebb, numerikus formátum is létezik, amelyben Olvasás=4, Írás=2 és Végrehajtás=1, és az összegük jelöli az engedélyeket. Az alábbiakban néhány példa látható.
Numerikus alak | Rövid alak | Jelentés |
---|---|---|
7 | RWX |
Olvasás + Írás + Végrehajtás |
5 | R-X |
Olvasás + Végrehajtás |
4 | R-- |
Olvasás |
0 | --- |
Nincs engedély |
Az engedélyek nem öröklődnek
A Data Lake Storage Gen1 által használt POSIX-stílusú modellben az elemek engedélyeit maga az elem tárolja. Vagyis egy elem az engedélyeit nem örökölheti a szülőelemektől.
Az engedélyekhez kapcsolódó gyakori helyzetek
Az alábbiakban néhány gyakori forgatókönyvet ismertetünk, amelyek segítenek megérteni, hogy mely engedélyek szükségesek bizonyos műveletek végrehajtásához egy Data Lake Storage Gen1-fiókon.
Művelet | Objektum | / | Seattle/ | Portland/ | Data.txt |
---|---|---|---|---|---|
Olvasás | Data.txt | --X |
--X |
--X |
R-- |
Hozzáfűzés a | Data.txt | --X |
--X |
--X |
-W- |
Törlés | Data.txt | --X |
--X |
-WX |
--- |
Létrehozás | Data.txt | --X |
--X |
-WX |
--- |
Lista | / | R-X |
--- |
--- |
--- |
Lista | /Seattle/ | --X |
R-X |
--- |
--- |
Lista | /Seattle/Portland/ | --X |
--X |
R-X |
--- |
Megjegyzés
A fájlra vonatkozó írási engedélyek nem szükségesek a fájl törléséhez, amíg az előbbi két feltétel teljesül.
Felhasználók és identitások
Minden fájl és mappa külön engedélyekkel rendelkezik az alábbi identitásokhoz:
- A tulajdonos felhasználó
- A tulajdonoscsoport
- Nevesített felhasználók
- Nevesített csoportok
- Minden egyéb felhasználó
A felhasználók és csoportok identitásai Microsoft Entra identitások. Ha másként nem jelezzük, a "felhasználó" a Data Lake Storage Gen1 kontextusában Microsoft Entra felhasználót vagy Microsoft Entra biztonsági csoportot jelenthet.
A felügyelő
A felügyelők az Data Lake Storage Gen1 fiók összes felhasználójának a legtöbb jogosultságával rendelkezik. A felügyelő:
- RWX-engedéllyel (olvasás, írás és végrehajtás) rendelkezik az összes fájlhoz és mappához.
- Bármely fájl vagy mappa engedélyeit megváltoztathatja.
- Bármely fájl vagy mappa tulajdonosát vagy tulajdonoscsoportját megváltoztathatja.
A Data Lake Storage Gen1-fiók tulajdonosi szerepköréhez tartozó összes felhasználó automatikusan felügyelő lesz.
A tulajdonos felhasználó
Automatikusan az elem tulajdonosa lesz az a felhasználó, aki létrehozta az elemet. A tulajdonos felhasználó:
- Megváltoztathatja a tulajdonában lévő fájl engedélyeit.
- megváltoztathatja a tulajdonában lévő fájl tulajdonos csoportját, ha a tulajdonos felhasználó szintén tagja ennek a csoportnak.
Megjegyzés
A tulajdonos nem változtathatja meg egy fájl vagy mappa tulajdonos felhasználóját. Csak a felügyelők változtathatják meg egy fájl vagy mappa tulajdonosát vagy tulajdonoscsoportját.
A tulajdonoscsoport
Háttér
A POSIX ACL-ekben minden felhasználó egy "elsődleges csoporthoz" van társítva. Az "alice" felhasználó például a "pénzügyi" csoporthoz tartozhat. Alice több csoporthoz is tartozhat, de egy csoport mindig ki van jelölve elsődleges csoportjaként. A POSIX-ban, amikor Alice létrehoz egy fájlt, a fájl tulajdonoscsoportja az elsődleges csoportjára van állítva, amely ebben az esetben a "pénzügy". A tulajdonoscsoport egyébként ugyanúgy viselkedik, mint a többi felhasználó/csoport hozzárendelt engedélyei.
Mivel a Data Lake Storage Gen1 felhasználóihoz nincs "elsődleges csoport" társítva, a tulajdonoscsoport hozzárendelése az alábbiak szerint történik.
Új fájl vagy mappa tulajdonoscsoportjának hozzárendelése
- 1. eset: A gyökérmappa „/”. Ez a mappa Data Lake Storage Gen1 fiók létrehozásakor jön létre. Ebben az esetben a tulajdonoscsoport egy teljesen nulla GUID azonosítóra van állítva. Ez az érték nem engedélyezi a hozzáférést. Ez egy helyőrző, amíg a csoport hozzárendelése meg nem történik.
- 2. eset (minden egyéb eset): Egy új elem létrehozásakor a tulajdonoscsoport a szülőmappából másolódik át.
A tulajdonoscsoport módosítása
A tulajdonoscsoportot megváltoztathatja:
- Bármely felügyelő.
- a tulajdonos, ha szintén tagja ennek a csoportnak.
Megjegyzés
A tulajdonoscsoport nem változtathatja meg egy fájl vagy mappa ACL-eit.
A 2018. szeptemberben vagy azt megelőzően létrehozott fiókok esetében a tulajdonoscsoport a fiókot létrehozó felhasználóra lett beállítva a fenti 1. eset gyökérmappája esetében. Egyetlen felhasználói fiók nem érvényes a tulajdonoscsoporton keresztüli engedélyek megadására, ezért ez az alapértelmezett beállítás nem ad engedélyeket. Ezt az engedélyt hozzárendelheti egy érvényes felhasználói csoporthoz.
Hozzáférés-ellenőrzési algoritmus
Az alábbi pszeudokód az Data Lake Storage Gen1-fiókok hozzáférés-ellenőrzési algoritmusát jelöli.
def access_check( user, desired_perms, path ) :
# access_check returns true if user has the desired permissions on the path, false otherwise
# user is the identity that wants to perform an operation on path
# desired_perms is a simple integer with values from 0 to 7 ( R=4, W=2, X=1). User desires these permissions
# path is the file or folder
# Note: the "sticky bit" is not illustrated in this algorithm
# Handle super users.
if (is_superuser(user)) :
return True
# Handle the owning user. Note that mask IS NOT used.
entry = get_acl_entry( path, OWNER )
if (user == entry.identity)
return ( (desired_perms & entry.permissions) == desired_perms )
# Handle the named users. Note that mask IS used.
entries = get_acl_entries( path, NAMED_USER )
for entry in entries:
if (user == entry.identity ) :
mask = get_mask( path )
return ( (desired_perms & entry.permmissions & mask) == desired_perms)
# Handle named groups and owning group
member_count = 0
perms = 0
entries = get_acl_entries( path, NAMED_GROUP | OWNING_GROUP )
for entry in entries:
if (user_is_member_of_group(user, entry.identity)) :
member_count += 1
perms | = entry.permissions
if (member_count>0) :
return ((desired_perms & perms & mask ) == desired_perms)
# Handle other
perms = get_perms_for_other(path)
mask = get_mask( path )
return ( (desired_perms & perms & mask ) == desired_perms)
A maszk
Ahogy az a Hozzáférés-ellenőrzési algoritmusban is látható, a maszk korlátozza a névvel ellátott felhasználók, a tulajdonoscsoport és a nevesített csoportok hozzáférését.
Megjegyzés
Új Data Lake Storage Gen1 fiók esetén a gyökérmappa ("/") hozzáférési ACL-jének maszkja alapértelmezés szerint RWX.
Ragadós bit
A ragadós (sticky) bit a POSIX-fájlrendszer egy speciális funkciója. A Data Lake Storage Gen1 kontextusában nem valószínű, hogy a ragadós bitre lesz szükség. Összefoglalva, ha a beragadó bit engedélyezve van egy mappában, a gyermekelem csak a gyermekelem tulajdonos felhasználója által törölhető vagy átnevezhető.
A ragadós bit nem látható az Azure Portalon.
Alapértelmezett engedélyek az új fájlokhoz és mappákhoz
Az új fájlok vagy mappák meglévő mappában történő létrehozásakor a szülőmappára vonatkozó alapértelmezett ACL a következőket határozza meg:
- Gyermekmappa alapértelmezett ACL-jei és hozzáférési ACL-jei.
- Gyermekfájl hozzáférési ACL-je (a fájloknak nincs alapértelmezett ACL-je).
umask
Fájl vagy mappa létrehozásakor a rendszer az umask használatával módosítja az alapértelmezett ACL-ek beállítását a gyermekelemen. Az umask egy 9 bites érték a szülőmappákban, amely egy RWX-értéket tartalmaz a tulajdonos felhasználó, a tulajdonoscsoport és egyéb számára.
A Azure Data Lake Storage Gen1 umask értéke egy 007-re beállított állandó érték. Ez az érték a
umask összetevő | Numerikus alak | Rövid alak | Értelmezés |
---|---|---|---|
umask.owning_user | 0 | --- |
Tulajdonos felhasználó esetén másolja a szülő alapértelmezett ACL-jét a gyermek hozzáférési ACL-ére |
umask.owning_group | 0 | --- |
Tulajdonoscsoport esetén másolja a szülő alapértelmezett ACL-jét a gyermek hozzáférési ACL-ére |
umask.other | 7 | RWX |
Egyéb esetben távolítsa el a gyermek hozzáférési ACL-jének összes engedélyét |
A Azure Data Lake Storage Gen1 által használt umask érték gyakorlatilag azt jelenti, hogy a többi érték alapértelmezés szerint soha nem lesz továbbítva az új gyermekeken – függetlenül attól, hogy mit jelez az alapértelmezett ACL.
Az alábbi pszeudokód bemutatja, hogyan lesz alkalmazva az umask a gyermekelem ACL-jeinek létrehozásakor.
def set_default_acls_for_new_child(parent, child):
child.acls = []
for entry in parent.acls :
new_entry = None
if (entry.type == OWNING_USER) :
new_entry = entry.clone(perms = entry.perms & (~umask.owning_user))
elif (entry.type == OWNING_GROUP) :
new_entry = entry.clone(perms = entry.perms & (~umask.owning_group))
elif (entry.type == OTHER) :
new_entry = entry.clone(perms = entry.perms & (~umask.other))
else :
new_entry = entry.clone(perms = entry.perms )
child_acls.add( new_entry )
Gyakori kérdések a Data Lake Storage Gen1 ACL-ekkel kapcsolatban
Engedélyeznem kell az ACL támogatását?
Nem. Az ACL-eken keresztüli hozzáférés-vezérlés mindig be van kapcsolva egy Data Lake Storage Gen1-fiókhoz.
Milyen engedélyek szükségesek egy mappa és tartalma rekurzív törléséhez?
- A szülőmappának rendelkeznie kell Írás + Végrehajtás engedélyekkel.
- A törölni kívánt mappához és a benne található összes mappához Olvasás + Írás + Végrehajtás engedélyre van szükség.
Megjegyzés
A mappákban található fájlok törléséhez nem szükséges írási engedély. A gyökérmappa (/) sem törölhető.
Ki a fájl vagy mappa tulajdonosa?
A fájl vagy mappa létrehozója lesz a tulajdonos.
Melyik csoport lett a fájl vagy mappa tulajdonoscsoportjaként beállítva a létrehozáskor?
A tulajdonoscsoport annak a szülőmappának a tulajdonoscsoportjából lesz kimásolva, amelyben az új fájlt vagy mappát létrehozzák.
Én vagyok egy fájl tulajdonosa, de nem rendelkezem a szükséges RWX-engedéllyel. Mit tegyek?
A tulajdonos módosíthatja a fájlhoz tartozó engedélyeket, így bármilyen szükséges RWX-engedélyt megadhat saját magának.
Amikor megtekintem az ACL-eket az Azure Portalon, felhasználóneveket látok, az API-kon keresztül azonban GUID azonosítókat. Ez miért van?
Az ACL-ek bejegyzéseit a rendszer a Microsoft Entra ID felhasználóinak megfelelő GUID-ként tárolja. Az API-k az aktuális állapotukban adják vissza a GUID azonosítókat. Az Azure Portal megpróbálja könnyebbé tenni az ACL-ek használatát a GUID azonosítóknak rövid nevekre történő lefordításával, amikor csak lehetséges.
Miért látok néha GUID azonosítókat az ACL-eken, amikor az Azure Portalt használom?
A GUID akkor jelenik meg, ha a felhasználó már nem létezik Microsoft Entra. Ez általában akkor fordul elő, ha a felhasználó elhagyta a vállalatot, vagy ha a fiókját törölték Microsoft Entra ID. Győződjön meg arról is, hogy a megfelelő azonosítót használja az ACL-ek beállításához (az alábbi részletek).
Szolgáltatásnév használata esetén milyen azonosítót kell használnom az ACL-ek beállításához?
Az Azure Portalon lépjen a Microsoft Entra ID –> Vállalati alkalmazások lapra, és válassza ki az alkalmazást. Az Áttekintés lapon meg kell jelennie egy objektumazonosítónak, és ezt kell használni az ACL-ek adathozzáféréshez való hozzáadásakor (és nem az alkalmazásazonosítóhoz).
Támogatja Data Lake Storage Gen1 az ACL-ek öröklését?
Nem, az alapértelmezett ACL-ek azonban használhatók a szülő mappán belül újonnan létrehozott gyermekfájlok és mappák ACL-jeinek beállításához.
Milyen korlátok vonatkoznak a fájlokra és mappákra vonatkozó ACL-bejegyzésekre?
Fájlonként és könyvtáronként 32 ACL állítható be. A hozzáférési és az alapértelmezett ACL-ekre külön 32 ACL-bejegyzéses korlát vonatkozik. Ha lehetséges, használjon biztonsági csoportokat ACL-hozzárendelésekhez. Csoportok használatával kisebb valószínűséggel lépi túl az ACL-bejegyzések fájlonkénti vagy könyvtáronkénti maximális számát.
Hol tudhatok meg többet a POSIX hozzáférés-vezérlési modellről?
- POSIX hozzáférés-vezérlési listák Linux rendszeren
- HDFS-engedélyútmutató
- POSIX – gyakori kérdések
- POSIX 1003.1 2008
- POSIX 1003.1 2013
- POSIX 1003.1 2016
- POSIX ACL Ubuntu rendszeren