EMRFSS3-Plugin - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

EMRFSS3-Plugin

Um die Bereitstellung von Zugriffskontrollen für Objekte in S3 auf einem Multi-Tenant-Cluster zu vereinfachen, bietet das EMRFS S3-Plugin Zugriffskontrollen für die Daten in S3, wenn über EMRFS diese zugegriffen wird. Sie können den Zugriff auf S3-Ressourcen auf Benutzer- und Gruppenebene zulassen.

Um dies zu erreichen, EMRFS sendet Ihre Anwendung, wenn sie versucht, auf Daten innerhalb von S3 zuzugreifen, eine Anfrage nach Anmeldeinformationen an den Secret Agent-Prozess, wo die Anfrage anhand eines Apache Ranger-Plug-ins authentifiziert und autorisiert wird. Wenn die Anfrage autorisiert ist, übernimmt der Secret Agent die IAM Rolle der Apache Ranger Engines mit einer eingeschränkten Richtlinie zur Generierung von Anmeldeinformationen, die nur Zugriff auf die Ranger-Richtlinie haben, die den Zugriff gewährt hat. Die Anmeldeinformationen werden dann an den Zugriff EMRFS auf S3 zurückgegeben.

Unterstützte Features

EMRFSDas S3-Plugin ermöglicht die Autorisierung auf Speicherebene. Richtlinien können erstellt werden, um Benutzern und Gruppen Zugriff auf S3-Buckets und -Präfixe zu gewähren. Die Autorisierung erfolgt nur gegenEMRFS.

Installation der Servicekonfiguration

Um die EMRFS Dienstdefinition zu installieren, müssen Sie den Ranger Admin-Server einrichten. Informationen zum Einrichten des Servers finden Sie unterRichten Sie den Ranger-Admin-Server ein.

Gehen Sie wie folgt vor, um die EMRFS Dienstdefinition zu installieren.

Schritt 1: SSH in den Apache Ranger Admin-Server.

Beispielsweise:

ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

Schritt 2: Laden Sie die EMRFS Dienstdefinition herunter.

Laden Sie in einem temporären Verzeichnis die EMR Amazon-Servicedefinition herunter. Diese Servicedefinition wird von Ranger-2.x-Versionen unterstützt.

wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-emrfs.json

Schritt 3: Registrieren Sie die EMRFS S3-Servicedefinition.

curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-emrfs.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

Wenn dieser Befehl erfolgreich ausgeführt wird, wird in der Ranger-Admin-Benutzeroberfläche ein neuer Dienst mit dem Namen "AMAZON- EMR -S3" angezeigt, wie in der folgenden Abbildung gezeigt (Ranger-Version 2.0 wird gezeigt).

Ranger Admin erstellt den S3-Dienst. EMRFS

Schritt 4: Erstellen Sie eine Instanz der AMAZON - EMR - EMRFS Anwendung.

Erstellen Sie eine Instance der Servicedefinition.

  • Klicken Sie auf das + neben AMAZON - EMR -EMRFS.

Füllen Sie die folgenden Felder aus:

Servicename (falls angezeigt): Der vorgeschlagene Wert ist amazonemrspark. Notieren Sie sich diesen Dienstnamen, da er bei der Erstellung einer EMR Sicherheitskonfiguration benötigt wird.

Anzeigename: Der Name, der für diesen Service angezeigt wird. Der vorgeschlagene Wert ist amazonemrspark.

Allgemeiner Name für das Zertifikat: Das CN-Feld innerhalb des Zertifikats, das verwendet wird, um von einem Client-Plugin aus eine Verbindung zum Admin-Server herzustellen. Dieser Wert muss mit dem CN-Feld in dem TLS Zertifikat übereinstimmen, das für das Plugin erstellt wurde.

Ranger Admin bearbeitet den EMRFS S3-Dienst.
Anmerkung

Das TLS Zertifikat für dieses Plugin sollte im Trust Store auf dem Ranger Admin-Server registriert worden sein. Weitere Details finden Sie unter TLSZertifikate.

Wenn der Dienst erstellt wird, schließt der Service Manager "AMAZON- EMR - EMRFS „ein, wie in der folgenden Abbildung dargestellt.

Ranger Admin zeigt den neuen EMRFS S3-Dienst.

EMRFSS3-Richtlinien erstellen

Füllen Sie die folgenden Felder aus, um auf der Seite Richtlinie erstellen des Service Managers eine neue Richtlinie zu erstellen.

Richtlinienname: Der Name dieser Richtlinie.

Richtlinienbezeichnung: Eine Bezeichnung, die Sie dieser Richtlinie hinzufügen können.

S3-Ressource: Eine Ressource, die mit dem Bucket und dem optionalen Präfix beginnt. Weitere Informationen finden Sie unter Bewährte Methoden für EMRFSHinweise zur Verwendung von S3-Richtlinien. Ressourcen auf dem Ranger-Admin-Server sollten nicht s3://, s3a:// oder s3n:// enthalten.

Ranger Admin zeigt die Erstellung einer Richtlinie für den EMRFS S3-Dienst an.

Sie können Benutzer und Gruppen angeben, denen Berechtigungen erteilt werden sollen. Sie können auch Ausnahmen für Zulassungsbedingungen und Verweigerungsbedingungen angeben.

Ranger Admin zeigt Benutzer-/Gruppenberechtigungen für die S3-Richtlinie an. EMRFS
Anmerkung

Für jede Richtlinie sind maximal drei Ressourcen zulässig. Das Hinzufügen von mehr als drei Ressourcen kann zu einem Fehler führen, wenn diese Richtlinie auf einem Cluster verwendet wird. EMR Beim Hinzufügen von mehr als drei Richtlinien wird eine Erinnerung an das Richtlinienlimit angezeigt.

EMRFSHinweise zur Verwendung von S3-Richtlinien

Bei der Erstellung von S3-Richtlinien in Apache Ranger sind einige Nutzungsaspekte zu beachten.

Berechtigungen für mehrere S3-Objekte

Sie können rekursive Richtlinien und Platzhalterausdrücke verwenden, um mehreren S3-Objekten mit gemeinsamen Präfixen Berechtigungen zu erteilen. Rekursive Richtlinien gewähren allen Objekten mit einem gemeinsamen Präfix Berechtigungen. Platzhalterausdrücke wählen mehrere Präfixe aus. Zusammen gewähren sie allen Objekten mit mehreren gemeinsamen Präfixen, wie in den folgenden Beispielen gezeigt.

Beispiel Verwenden einer rekursiven Richtlinie

Angenommen, Sie benötigen Berechtigungen, um alle Parquet-Dateien in einem S3-Bucket aufzulisten, der wie folgt organisiert ist.

s3://sales-reports/americas/ +- year=2000 | +- data-q1.parquet | +- data-q2.parquet +- year=2019 | +- data-q1.json | +- data-q2.json | +- data-q3.json | +- data-q4.json | +- year=2020 | +- data-q1.parquet | +- data-q2.parquet | +- data-q3.parquet | +- data-q4.parquet | +- annual-summary.parquet +- year=2021

Betrachten Sie zunächst die Parquet-Dateien mit dem Präfix s3://sales-reports/americas/year=2000. Sie können allen auf zwei Arten GetObject Berechtigungen gewähren:

Verwenden von nichtrekursiven Richtlinien: Eine Option besteht darin, zwei separate nichtrekursive Richtlinien zu verwenden, eine für das Verzeichnis und die andere für die Dateien.

Die erste Richtlinie erteilt die Erlaubnis für das Präfix s3://sales-reports/americas/year=2020 (es gibt keinen Trailing-/).

- S3 resource = "sales-reports/americas/year=2000" - permission = "GetObject" - user = "analyst"

Die zweite Richtlinie verwendet einen Platzhalterausdruck, um allen Dateien mit Präfix Berechtigungen zu erteilen sales-reports/americas/year=2020/ (beachten Sie das Trailing-/).

- S3 resource = "sales-reports/americas/year=2020/*" - permission = "GetObject" - user = "analyst"

Verwendung einer rekursiven Richtlinie: Eine bequemere Alternative besteht darin, eine einzige rekursive Richtlinie zu verwenden und dem Präfix rekursive Berechtigungen zu erteilen.

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Bisher waren nur die Parquet-Dateien mit dem Präfix s3://sales-reports/americas/year=2000 enthalten. Sie können jetzt auch die Parquet-Dateien mit einem anderen Präfix, s3://sales-reports/americas/year=2020, in dieselben rekursive Richtlinie aufnehmen, indem Sie einen Platzhalterausdruck wie folgt einfügen.

- S3 resource = "sales-reports/americas/year=20?0" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Richtlinien für PutObject und DeleteObject Berechtigungen

Das Schreiben von Richtlinien PutObject und DeleteObject Berechtigungen für Dateien auf EMRFS erfordert besondere Sorgfalt, da sie im Gegensatz zu GetObject Berechtigungen zusätzliche rekursive Berechtigungen erfordern, die dem Präfix gewährt werden.

Beispiel Richtlinien für PutObject und Berechtigungen DeleteObject

Zum Löschen der Datei ist beispielsweise nicht nur eine DeleteObject Berechtigung für die eigentliche Datei annual-summary.parquet erforderlich.

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "DeleteObject" - user = "analyst"

Außerdem ist eine Richtlinie erforderlich, die rekursive Rechte GetObject und PutObject Berechtigungen für das zugehörige Präfix gewährt.

In ähnlicher Weise erfordert das Ändern der Datei annual-summary.parquet nicht nur eine PutObject-Berechtigung für die eigentliche Datei.

- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet" - permission = "PutObject" - user = "analyst"

Außerdem ist eine Richtlinie erforderlich, die eine rekursive GetObject-Erlaubnis für ihr Präfix erteilt.

- S3 resource = "sales-reports/americas/year=2020" - permission = "GetObject" - user = "analyst" - is recursive = "True"

Platzhalter in Richtlinien

Es gibt zwei Bereiche, in denen Platzhalter angegeben werden können. Bei der Angabe einer S3-Ressource können „*“ und „?“ verwendet werden. Das „*“ ermöglicht einen Abgleich mit einem S3-Pfad und entspricht allem, was hinter dem Präfix steht. Zum Beispiel die folgende Richtlinie.

S3 resource = "sales-reports/americas/*"

Dies entspricht den folgenden S3-Pfaden.

sales-reports/americas/year=2020/ sales-reports/americas/year=2019/ sales-reports/americas/year=2019/month=12/day=1/afile.parquet sales-reports/americas/year=2018/month=6/day=1/afile.parquet sales-reports/americas/year=2017/afile.parquet

Das Platzhalterzeichen „?“ entspricht nur einem einzelnen Zeichen. Beispielsweise für die Richtlinie.

S3 resource = "sales-reports/americas/year=201?/"

Dies entspricht den folgenden S3-Pfaden.

sales-reports/americas/year=2019/ sales-reports/americas/year=2018/ sales-reports/americas/year=2017/

Platzhalter bei Benutzern

Bei der Zuweisung von Benutzern, die Benutzern Zugriff gewähren sollen, gibt es zwei integrierte Platzhalter. Der erste ist der Platzhalter „{USER}“, der allen Benutzern Zugriff gewährt. Der zweite Platzhalter ist „{OWNER}“, der dem Besitzer eines bestimmten Objekts oder direkt Zugriff gewährt. Der Platzhalter „{USER}“ wird derzeit jedoch nicht unterstützt.

Einschränkungen

Im Folgenden sind die aktuellen Einschränkungen des EMRFS S3-Plug-ins aufgeführt:

  • Apache-Ranger-Richtlinien können maximal drei Richtlinien haben.

  • Der Zugriff auf S3 muss über Hadoop-bezogene Anwendungen erfolgen EMRFS und kann mit diesen verwendet werden. Folgendes wird nicht unterstützt:

    – Boto3-Bibliotheken

    - und AWS SDK AWK CLI

    – S3A-Open-Source-Konnektor

  • Die Ablehnungs-Richtlinien von Apache Ranger werden nicht unterstützt.

  • Operationen auf S3 mit Schlüsseln mit CSE - KMS Verschlüsselung werden derzeit nicht unterstützt.

  • Die Freigabe über Regionsgrenzen hinweg wird nicht unterstützt.

  • Das Sicherheitszone-Feature von Apache Ranger wird nicht unterstützt. Einschränkungen der Zugriffskontrolle, die mit der Sicherheitszone-Funktion definiert wurden, gelten nicht für Ihre EMR Amazon-Cluster.

  • Der Hadoop-Benutzer generiert keine Audit-Ereignisse, da Hadoop immer auf das EC2 Instance-Profil zugreift.

  • Es wird empfohlen, Amazon EMR Consistency View zu deaktivieren. S3 ist stark konsistent und wird daher nicht mehr benötigt. Weitere Informationen finden Sie unter Starke Konsistenz von Amazon-S3.

  • Das EMRFS S3-Plugin führt zahlreiche STS Aufrufe durch. Es wird empfohlen, Belastungstests auf einem Entwicklungskonto durchzuführen und das STS Anrufvolumen zu überwachen. Es wird außerdem empfohlen, eine STS Anfrage zur Erhöhung der AssumeRole Servicelimits zu stellen.

  • Der Ranger Admin-Server unterstützt die automatische Vervollständigung nicht.