Apa­che Ran­ger vs. Apa­che Sentry

Manage­ment Summary

Bei gro­ßen Hadoop-Umge­bun­gen ist die Ver­wal­tung von ein­zel­nen Zugriffs­rech­ten auf­wän­dig. Sowohl Sen­try als auch Ran­ger sind eine Lösung, um sol­che Rechte zen­tral zu administrieren.

Beide Anwen­dun­gen haben eine unter­schied­li­che Vor­ge­hens­weise bei der Abbil­dung der zen­tral ver­ge­be­nen Rechte in die ein­zel­nen Pro­gramme.
Hier­bei zeigt sich, dass die Archi­tek­tur von Ran­ger deut­lich fle­xi­bler ist und fer­ner deut­lich mehr Anwen­dun­gen unterstützt.

Ein­füh­rung

Bei der Bereit­stel­lung gro­ßer Hadoop-Umge­bun­gen fällt viel Ver­wal­tungs­auf­wand an. Nut­zer­rechte müs­sen ver­ge­ben wer­den und gepflegt wer­den. Je nach Anzahl an genutz­ten Anwen­dun­gen wird dies zuneh­mend unüber­sicht­lich. Neben dem hohen Auf­wand gefähr­det dies auch die Sicher­heit der Archi­tek­tur, da ein Über­blick über die gewähr­ten Rechte kaum mög­lich ist.

Hier sol­len Apa­che Ran­ger und Apa­che Sen­try eine Lösung anbie­ten. Beide Anwen­dun­gen wur­den ent­wi­ckelt, um eine zen­trale Platt­form bereit­zu­stel­len, mit der Nut­zer­rechte zen­tral ver­ge­ben und ver­wal­tet wer­den kön­nen. Dort getrof­fene Ent­schei­dun­gen wer­den dann in die von Ran­ger bzw. Sen­try unter­stütz­ten Anwen­dun­gen auf Pro­zess­ebene eingebunden.

Apa­che Ran­ger star­tete als kom­mer­zi­el­les Pro­dukt von XA Secure. Die­ses Unter­neh­men wurde 2014 von Hor­ton­works über­nom­men und das Pro­dukt als Apa­che Ran­ger als Open-Source-Pro­dukt neu veröffentlicht.

Die Ent­wick­lung von Apa­che Sen­try star­tete 2012 als inter­nes Pro­jekt („Clou­dera Access“) von Clou­dera. 2013 erfolgte die Umbe­nen­nung in Sen­try und die Auf­nahme in den Apa­che Incubator.

Im Fol­gen­den wird zunächst beschrie­ben, wie die Rech­te­prü­fung durch die Anwen­dun­gen umge­setzt wird und wie das jewei­lige Pro­gramm in den Hadoop-Stack ein­ge­bun­den ist bzw. wel­che Pro­jekte es unter­stützt (4). Abschlie­ßend wird ein Fazit getrof­fen und eine Emp­feh­lung gege­ben (5).

Funk­tio­na­li­tät

All­ge­mei­nes

Bei der Admi­nis­tra­tion von Zugriffs­rech­ten muss man fol­gende Ter­mini von­ein­an­der unterscheiden:

  • Res­source: Ein Objekt (bspw. ein Daten­satz), des­sen Zugriffs­mög­lich­kei­ten regu­liert wer­den soll
  • Nut­zer: Ein indi­vi­du­el­ler Nutzer
  • Gruppe: Eine Samm­lung an Nut­zern. Nor­ma­ler­weise wer­den in Grup­pen Nut­zer mit glei­chen Tätig­kei­ten zusammengefasst
  • Pri­vi­leg: Ein Recht eine bestimmte Tätig­keit aus­füh­ren zu dürfen
  • Authen­ti­fi­zie­rung: Veri­fi­zie­rung der Nut­zer­iden­ti­tät. ([icon name=”arrow-right” class=”” unprefixed_class=””] Anmeldesystem)
  • Auto­ri­sie­rung: Veri­fi­zie­rung eines Pri­vi­legs – gestatten/verhindern eines Vorganges
  • Rolle: Eine Samm­lung an Privilegien.

Sowohl Ran­ger als auch Sen­try the­ma­ti­sie­ren vor allem das Pro­blem der Auto­ri­sie­rung von Nut­zern. Hierzu kön­nen bei bei­den Anwen­dun­gen Rol­len defi­niert wer­den, um Pri­vi­le­gien ein­fa­cher zu verwalten.

Apa­che Ranger

Ran­ger ver­gibt Pri­vi­le­gien sowohl auf Grup­pen- als auch auf Nut­zer­ebene. Die Pri­vi­le­gien wer­den zen­tral im Admin Por­tal defi­niert und von Ran­ger Plug­ins eva­lu­iert. Diese klei­nen Plug­ins setz­ten auf den jewei­li­gen Mas­ter-Nodes auf (NameNode, Hive2Server, Nim­bus, etc.) und lau­fen inner­halb des jewei­li­gen Mas­ter-Node-Pro­zes­ses. Hier­durch ent­ste­hen keine wei­te­ren Kos­ten auf Betriebs­sys­tem­ebene. Die von Ran­ger ver­wal­te­ten Pri­vi­le­gien sind unab­hän­gig von nati­ven Privilegien.

Neben einer Res­sour­cen-basier­ten Pri­vi­le­gi­en­de­fi­ni­tion kön­nen auch Pri­vi­le­gien basie­rend auf Mar­kie­run­gen („Tags“) vor­ge­nom­men wer­den, bei­spiels­weise könn­ten Dateien mar­kiert wer­den, die private Infor­ma­tio­nen ent­hal­ten mit der Folge, dass das zu die­ser Mar­kie­rung zuge­hö­rige Pri­vi­leg for­ciert wird ohne, dass neue Pri­vi­le­gien für die Res­source erstellt wer­den müssen.

Apa­che Sentry

Sen­try ver­gibt Pri­vi­le­gien – nur auf Grup­pen­e­bene – nicht auf dem indi­vi­du­el­len Nut­zer­ni­veau, dabei kön­nen nur Rol­len Grup­pen zuge­ord­net wer­den. Weder kön­nen ein­zelne Pri­vi­le­gien direkt einer Gruppe zuge­ord­net wer­den noch kön­nen Rol­len direkt einem ein­zel­nen Nut­zer zuge­ord­net sein. Fer­ner müs­sen die Grup­pen als sekun­däre Unix-Grup­pen erzeugt werden.

Die Archi­tek­tur Sen­trys besteht aus drei Teilen:

  • Sen­try Ser­ver: ver­wal­tet die Sentry-Metadaten
  • Data Engine: Daten­pro­zes­sor (Hive oder Impala), der das Sen­try-Plugin aus­führt, so dass alle Abfra­gen abge­fan­gen und über das Plugin umge­lei­tet werden
  • Sen­try Plugin: Pro­gramm, wel­ches inner­halb der Data Engine läuft. Eva­lu­iert, ob die gewünsch­ten Daten­zu­griffe für den jewei­li­gen Benut­zer erfol­gen dür­fen oder nicht.
Ver­gleich Ran­ger vs. Sen­try: Funktionalität

Ver­gleicht man beide Anwen­dun­gen, so fällt auf, dass Ran­ger deut­lich fle­xi­bler als Sen­try die Berech­ti­gun­gen ver­wal­ten kann:

  • Bei Ran­ger müs­sen keine sekun­däre Unix-Grup­pen erzeugt wer­den, um Grup­pen ein­rich­ten zu können
    • Ran­ger ist gene­rell unab­hän­gig von nati­ven Berech­ti­gungs­sys­te­men, kann diese aber zusätz­lich akti­vie­ren, bspw. HDFS-Pri­vi­le­gien prü­fen, wenn die Anfrage bis­her nicht über das Ran­ger-Berech­ti­gungs­sys­tem abge­bil­det wurde
    • Sen­try ver­deckt die nati­ven Berechtigungssysteme.
  • Bei Ran­ger kön­nen neben Grup­pen auch indi­vi­du­el­len Nut­zern Pri­vi­le­gien zuge­ord­net werden
  • Neben dem res­sour­cen­ba­sier­ten Berech­ti­gungs­sys­tem bie­tet Ran­ger auch ein Berech­ti­gungs­sys­tem basie­rend auf Mar­kie­run­gen („Tags“) an
  • Die Auto­ri­sie­rungs­pro­zesse von Ran­ger fin­den im Pro­zess der jewei­li­gen Mas­ter-Node statt, dadurch wer­den die dort getrof­fe­nen Repli­ka­ti­ons­ein­stel­lun­gen auto­ma­tisch übernommen
  • Ran­ger ist nicht auf eine Data Engine ange­wie­sen, um den Nut­zer­na­men zu bestim­men und unter­stützt somit deut­lich mehr Anwen­dun­gen als Sentry.

Ein­bin­dung in Hadoop-Architektur

Apa­che Ranger

Apa­che Ran­ger unter­stützt die Rech­te­ver­wal­tung von:

  • Apa­che Hadoop
  • Apa­che Hive
  • Apa­che HBase
  • Apa­che Storm
  • Apa­che Knox
  • Apa­che Solr
  • Apa­che Kafka
  • Apa­che NiFi
  • YARN
Apa­che Sentry

Apa­che Sen­try unter­stützt die Rech­te­ver­wal­tung von:

  • Impala
  • Hive
  • HDFS
  • Solr

Hier­bei sind jedoch fol­gende Punkte zu beachten:

  • HDFS-Pri­vi­le­gien kön­nen nur für Daten ver­ge­ben wer­den, die zu einem Hive Ware­house gehö­ren – also Teil einer Hive- oder Impala-Tabelle sind
  • Wenn HDFS-Pri­vi­le­gien durch Sen­try ver­wal­tet wer­den, kön­nen keine eige­nen Ände­run­gen an den nati­ven HDFS-Berech­ti­gun­gen vor­ge­nom­men werden
    • Wenn die HDFS ACL eines von Sen­try ver­wal­te­ten Objek­tes direkt ange­passt wer­den, wird keine Ände­rung über­nom­men, da die Ver­wal­tung nur durch Sen­try ermög­licht wird.
    • Die Funk­tion Syn­chro­ni­sie­rung bedeu­tet hier­bei nur eine uni­di­rek­tio­nale Rich­tung. Nur Ände­run­gen, die in Sen­try vor­ge­nom­men wer­den, wer­den in den HDFS-Berech­ti­gun­gen abgebildet
    • Tabel­len, die nicht von Sen­try ver­wal­tet wer­den, behal­ten ihre eige­nen ACLs bei.
  • Lie­gen die HDFS-Daten außer­halb des Stan­dard-Hive-Pfa­des, so muss dies expli­zit kon­fi­gu­riert werden
  • HDFS-Pri­vi­le­gien wer­den nicht im HDFS per­sis­tiert (bspw. durch Spei­che­rung in HDFS ACLs), d.h. wenn Sen­try deak­ti­viert wird, wer­den die Berech­ti­gun­gen wie­der auf ihren ursprüng­li­chen Zustand zurückgeschickt
    • Wenn die Ver­wal­tung durch Sen­try akti­viert wird, bekommt der Hive-Nut­zer bzw. die Hive-Nut­zer­gruppe auto­ma­tisch Besitz­rechte über alle im Hive Ware­house befind­li­chen Pfade und Dateien
    • Ver­liert die NameNode den Kon­takt mit dem Sen­try Ser­ver über eine län­gere Zeit, wer­den alle Berech­ti­gun­gen für die von Sen­try ver­wal­te­ten Pfade (unab­hän­gig davon, ob die spe­zi­fi­schen Objekte zu einem Hive Ware­house gehö­ren) auf den Hive-Sys­tem­nut­zer bzw. die Hive-Sys­tem­gruppe gesetzt
  • Keine spal­ten­ge­naue Zugriffs­kon­trolle für Spark SQL möglich
  • Das Sen­try-Plugin für Solr unter­stützt noch nicht die daten­bank­ba­sierte Rech­te­ver­wal­tung, son­dern nur die datei­ba­sierte Rechteverwaltung
  • Wenn Hive durch Sen­try ver­wal­tet wer­den soll, muss der Zugriff der Hive CLI auf dem Hive Metastore aus­ge­schal­tet werden.
Ver­gleich Ran­ger vs. Sen­try: Inte­gra­tion in Hadoop-Stack

Im Ver­gleich fällt auf, dass:

  • Ran­ger deut­lich mehr Anwen­dun­gen als Sen­try unterstützt
  • Sen­try bei der Ver­wal­tung von HDFS-Pri­vi­le­gien viele Ein­schrän­kun­gen hat, die es zu beach­ten gilt
    • Bedingt durch die in (3.4) beschrie­be­nen Archi­tek­tur­nach­teile durch das Benö­ti­gen einer Data Engine
    • Ein­schrän­kung auf Daten im Hive-Warehouse
    • Spark wird von Sen­try nicht voll­stän­dig unterstützt
  • Ran­ger hat im Ver­gleich zu Sen­try noch wei­tere Funk­tio­nen wie eine Schlüs­sel­ver­wal­tung und eine Echtzeit-Audit-Möglichkeit
  • Ran­ger stimmt seine Ent­wick­lung mit wei­te­ren Apa­che-Pro­jek­ten wie Atlas und Ambari ab.

Fazit

Sowohl mit Ran­ger als auch mit Sen­try kön­nen Nut­zer­rechte in Hadoop-Archi­tek­tu­ren zen­tral ver­wal­tet wer­den. Ent­spre­chend sollte die Ent­schei­dung für oder gegen Ran­ger bzw. Sen­try nicht davon abhän­gig gemacht wer­den, son­dern ins­be­son­dere von den von ihnen unter­stütz­ten Anwen­dun­gen. Hier zeigt sich auch der Ent­ste­hungs­hin­ter­grund der bei­den Pro­gramme. Wäh­rend Ran­ger ins­be­son­dere viele Anwen­dun­gen aus dem Bereich der Hor­ton­works Hadoop Data Plat­form unter­stützt, unter­stützt Sen­try eher Anwen­dun­gen der Clou­dera CDH Platt­form. Fol­ge­rich­tig ist für ein ein bestehen­des Pro­jekt auf Clou­dera CDH Sen­try die nähere Wahl.
Eine gene­relle Über­sicht über die bei­den popu­lä­ren Hadoop-Dis­tri­bu­tio­nen fin­det sich hier.

Beim Ver­gleich von Ran­ger und Sen­try unter­ein­an­der ist Ran­ger das deut­lich aus­ge­reif­tere System.So unter­stützt Ran­ger deut­lich mehr Anwen­dun­gen als Sen­try und bie­tet eine eigene gra­fi­sche Ober­flä­che für die Admi­nis­tra­tion. Zudem bin­det sich die Archi­tek­tur von Ran­ger deut­lich bes­ser in andere Anwen­dun­gen ein als Sen­try. Dies zeigt sich bei­spiels­weise in der Admi­nis­tra­tion von HDFS-Berech­ti­gun­gen: Wäh­rend Ran­ger die Hadoop NameNode hierzu nutzt, ist Sen­try dar­auf ange­wie­sen, dass die Daten gene­rell von Hive ver­wal­tet wer­den bzw. in einem Hive-Ware­house liegen.