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 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?

Lásd még