Berechtigungen von Hadoop migrieren
In diesem Dokument wird beschrieben, wie Sie Berechtigungen von Apache Hadoop Distributed File System (HDFS), Ranger HDFS und Apache Hive in IAM-Rollen (Identity and Access Management) in Cloud Storage oder BigQuery migrieren können.
Der Prozess zur Migration von Berechtigungen umfasst die folgenden Schritte:
- Erstellen Sie zuerst eine YAML-Konfigurationsdatei für das Hauptregelsatz um eine Datei für die Zuordnung von Hauptkonten zu generieren. Führen Sie dann das Tool zur Migration von Berechtigungen mit der YAML-Datei für das Hauptregelsatz und den HDFS- oder Ranger-Metadatendateien aus, um eine Datei für die Zuordnung von Hauptkonten zu generieren.
- Erstellen Sie zuerst eine YAML-Datei für das Berechtigungsregelsatz um eine Datei für die Zuordnung von Zielberechtigungen zu generieren. Führen Sie dann das Tool zur Migration von Berechtigungen mit der YAML-Datei für das Berechtigungsregelsatz, den Konfigurationsdateien für die Tabellenzuordnung und den HDFS- oder Ranger-Metadatendateien, um eine Datei für die Zuordnung von Zielberechtigungen zu generieren.
- Führen Sie das Tool zur Migration von Berechtigungen mit der Datei für die Zielberechtigungen aus, um Berechtigungen auf Cloud Storage oder BigQuery anzuwenden. Sie können auch das bereitgestellte Python-Skript verwenden, um eine Terraform-Datei zu generieren, mit der Sie Berechtigungen selbst anwenden können.
Hinweis
Bevor Sie Berechtigungen migrieren, prüfen Sie, ob Sie Folgendes getan haben:
- Installieren Sie das Tool
dwh-migration-dumper. - Führen Sie das Tool
dwh-migration-dumperaus um die erforderlichen Metadaten für Ihre Datenquelle zu generieren.
Das Terraform-Generatorskript finden Sie auch in der Datei terraform.zip im Release-Paket.
Datei für die Zuordnung von Hauptkonten generieren
Eine Datei für die Zuordnung von Hauptkonten definiert Zuordnungsregeln, mit denen Hauptkonten aus Ihrer Quelle IAM-Hauptkonten zugeordnet werden. Cloud de Confiance
Um eine Datei für die Zuordnung von Hauptkonten zu generieren, müssen Sie zuerst manuell eine
YAML-Datei für das Hauptregelsatz erstellen, um zu definieren, wie Hauptkonten aus Ihrer Quelle
IAM-Hauptkonten zugeordnet werden. Cloud de Confiance Definieren Sie in der YAML-Datei für das Hauptregelsatz Zuordnungsregeln für jede Ihrer Quellen, entweder ranger, HDFS oder beide.
Das folgende Beispiel zeigt eine YAML-Datei für das Hauptregelsatz, die Apache Ranger-Gruppen Dienstkonten in zuordnet Cloud de Confiance by S3NS:
ranger: user_rules: - skip: true group_rules: # Skip internal Ranger groups. - skip: true when: "group.groupSource == 0" # Map all roles to Google Cloud Platform service accounts. - map: type: value: serviceAccount email_address: expression: "group.name + 'my-service-account@my-project.s3ns.iam.gserviceaccount.com'" role_rules: - skip: true hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
Das folgende Beispiel zeigt eine YAML-Datei für das Hauptregelsatz, die HDFS-Nutzer bestimmten Cloud de Confiance Nutzern zuordnet:
ranger: user_rules: - skip: true group_rules: - skip: true role_rules: - skip: true hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'" group_rules: - skip: true other_rules: - skip: true
Weitere Informationen zur Syntax zum Erstellen einer YAML-Datei für das Hauptregelsatz finden Sie unter YAML-Dateien für Regelsätze.
Nachdem Sie eine YAML-Datei für das Hauptregelsatz erstellt haben, laden Sie sie in einen Cloud Storage-Bucket hoch. Je nachdem, aus welcher Quelle Sie Berechtigungen migrieren, müssen Sie auch die HDFS-Datei, die Apache Ranger-Datei, die mit dem Tool dwh-migration-dumper generiert wurde, oder beide einfügen. Anschließend können Sie das Tool zur Migration von Berechtigungen ausführen, um die Datei für die Zuordnung von Hauptkonten zu generieren.
Das folgende Beispiel zeigt, wie Sie das Tool zur Migration von Berechtigungen ausführen können, um sowohl von HDFS als auch von Apache Ranger zu migrieren. Das Ergebnis ist eine Datei für die Zuordnung von Hauptkonten mit dem Namen principals.yaml.
./dwh-permissions-migration expand \ --principal-ruleset gs://MIGRATION_BUCKET/principals-ruleset.yaml \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --output-principals gs://MIGRATION_BUCKET/principals.yaml
Ersetzen Sie MIGRATION_BUCKET durch den Namen des Cloud Storage-Buckets, der Ihre Migrationsdateien enthält.
Nachdem Sie das Tool ausgeführt haben, prüfen Sie die generierte principals.yaml Datei, um sicherzustellen
dass sie Hauptkonten aus Ihrer Quelle enthält, die Cloud de Confiance
IAM-Hauptkonten zugeordnet sind. Sie können die Datei vor den nächsten Schritten manuell bearbeiten.
Datei für Zielberechtigungen generieren
Die Datei für Zielberechtigungen enthält Informationen zur Zuordnung von Quellberechtigungen, die im Hadoop-Cluster festgelegt sind, zu IAM-Rollen für verwaltete Ordner in BigQuery oder Cloud Storage. Um eine Datei für Zielberechtigungen zu generieren, müssen Sie zuerst manuell eine YAML-Datei für das Berechtigungsregelsatz erstellen, in der angegeben wird, wie Berechtigungen von Ranger oder HDFS Cloud Storage oder BigQuery zugeordnet werden.
Im folgenden Beispiel werden alle Ranger-Berechtigungen für Cloud Storage akzeptiert:
gcs: ranger_hive_rules: - map: {} log: true
Im folgenden Beispiel werden alle HDFS-Berechtigungen außer dem Hauptkonto hadoop akzeptiert:
gcs: hdfs_rules: - when: source_principal.name == 'hadoop' skip: true - map: {}
Im folgenden Beispiel wird die Standardrollenzuordnung für die Tabelle tab0 überschrieben und für alle anderen Berechtigungen werden Standardwerte verwendet.
gcs: ranger_hive_rules: ranger_hive_rules: - when: table.name == 'tab0' map: role: value: "roles/customRole" - map: {}
Weitere Informationen zur Syntax zum Erstellen einer YAML-Datei für das Berechtigungsregelsatz finden Sie unter YAML-Dateien für Regelsätze.
Nachdem Sie eine YAML-Datei für das Berechtigungsregelsatz erstellt haben, laden Sie sie in einen Cloud Storage-Bucket hoch. Je nachdem, aus welcher Quelle Sie Berechtigungen migrieren, müssen Sie auch die HDFS-Datei, die Apache Ranger-Datei, die mit dem Tool dwh-migration-dumper generiert wurde, oder beide einfügen. Sie müssen auch
die YAML-Konfigurationsdateien für die Tabellen und die Datei für die Zuordnung von Hauptkonten einfügen.
Anschließend können Sie das Tool zur Migration von Berechtigungen ausführen, um die Datei für Zielberechtigungen zu generieren.
Das folgende Beispiel zeigt, wie Sie das Tool zur Migration von Berechtigungen ausführen können, um sowohl von HDFS als auch von Apache Ranger zu migrieren. Dabei werden die Konfigurationsdateien für die Tabellenzuordnung und die Datei für die Zuordnung von Hauptkonten mit dem Namen principals.yaml verwendet. Das Ergebnis ist eine Datei für die Zuordnung von Hauptkonten mit dem Namen permissions.yaml.
./dwh-permissions-migration build \ --permissions-ruleset gs://MIGRATION_BUCKET/permissions-config.yaml \ --tables gs://MIGRATION_BUCKET/tables/ \ --principals gs://MIGRATION_BUCKET/principals.yaml \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --output-permissions gs://MIGRATION_BUCKET/permissions.yaml
Ersetzen Sie MIGRATION_BUCKET durch den Namen des Cloud Storage-Bucket, der Ihre Migrationsdateien enthält.
Nachdem Sie das Tool ausgeführt haben, prüfen Sie die generierte Datei permissions.yaml, um sicherzustellen, dass sie Berechtigungen aus Ihrer Quelle enthält, die IAM-Bindungen für Cloud Storage oder BigQuery zugeordnet sind. Sie können die Datei vor den nächsten Schritten manuell bearbeiten.
Berechtigungen anwenden
Nachdem Sie eine Datei für Zielberechtigungen generiert haben, können Sie das Tool zur Migration von Berechtigungen ausführen, um die IAM-Berechtigungen auf Cloud Storage oder BigQuery anzuwenden.
Bevor Sie das Tool zur Migration von Berechtigungen ausführen, prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Sie haben die erforderlichen Hauptkonten (Nutzer, Gruppen, Dienstkonten) in Cloud de Confianceerstellt.
- Sie haben die verwalteten Ordner oder Tabellen in Cloud Storage erstellt, in denen die migrierten Daten gespeichert werden.
- Der Nutzer, der das Tool ausführt, hat Berechtigungen zum Verwalten von Rollen für die verwalteten Ordner oder Tabellen in Cloud Storage.
Sie können Berechtigungen anwenden, indem Sie den folgenden Befehl ausführen:
./dwh-permissions-migration apply \ --permissions gs://MIGRATION_BUCKET/permissions.yaml
Dabei ist MIGRATION_BUCKET der Name des Cloud Storage-Bucket, der Ihre Migrationsdateien enthält.
Berechtigungen als Terraform-Konfiguration anwenden
Um die migrierten Berechtigungen anzuwenden, können Sie die Datei für Zielberechtigungen auch in eine Terraform-Konfiguration für Infrastruktur als Code (Infrastructure as Code, IaC) konvertieren und auf Cloud Storage anwenden.
- Prüfen Sie, ob Sie Python 3.7 oder höher haben.
- Erstellen Sie eine neue virtuelle Umgebung und aktivieren Sie sie.
Installieren Sie im Verzeichnis
permissions-migration/terraformdie Abhängigkeiten aus der Dateirequirements.txtmit dem folgenden Befehl:python -m pip install -r requirements.txt
Führen Sie den Generatorbefehl aus:
python tf_generator PATH LOCATION OUTPUT
Ersetzen Sie Folgendes:
PATH: der Pfad zur generierten Dateipermissions.yaml.LOCATION: der Speicherort Ihres Cloud Storage-Buckets in dem das Skript Ordner basierend auf der Berechtigungskonfiguration prüft und erstellt.OUTPUT: der Pfad zur Ausgabedateimain.tf.
YAML-Dateien für Regelsätze
YAML-Dateien für Regelsätze werden verwendet, um Hauptkonten und Rollen zuzuordnen, wenn Berechtigungen von HDFS oder Apache Ranger zu Cloud de Confiancemigriert werden. In YAML-Dateien für Regelsätze wird die Common Expression Language (CEL) verwendet, um Prädikate (bei denen das Ergebnis boolesch ist) und Ausdrücke (bei denen das Ergebnis ein String ist) anzugeben.
YAML-Dateien für Regelsätze haben die folgenden Merkmale:
- Zuordnungsregeln jedes Typs werden für jedes Eingabeobjekt sequenziell von oben nach unten ausgeführt.
- CEL-Ausdrücke haben Zugriff auf Kontextvariablen. Kontextvariablen hängen vom Abschnitt des Regelsatzes ab. Sie können beispielsweise die Variable
userverwenden, um Quellnutzerobjekte zuzuordnen, und die Variablegroup, um Gruppen zuzuordnen. - Sie können CEL-Ausdrücke oder statische Werte verwenden, um Standardwerte zu ändern. Wenn Sie beispielsweise eine Gruppe zuordnen, können Sie den Ausgabewert
typevom Standardwertgroupin einen anderen Wert wieserviceAccountändern. - Es muss mindestens eine Regel vorhanden sein, die mit jedem Eingabeobjekt übereinstimmt.
Bei der Migration von HDFS- oder Apache Ranger-Berechtigungen kann eine YAML-Datei für Regelsätze verwendet werden, um entweder eine Datei für die Zuordnung von Hauptkonten oder eine Datei für die Zuordnung von Rollen zu definieren.
Zuordnungsregeln in YAML-Dateien für Regelsätze
Die YAML-Datei für Regelsätze besteht aus Zuordnungsregeln, die angeben, wie Objekte während einer Berechtigungsmigration von Ihrer Quelle zu Ihrem Ziel passen. Eine Zuordnungsregel kann die folgenden Abschnitte oder Klauseln enthalten:
when: Eine Prädikatklausel, die die Anwendbarkeit der Regel einschränkt- Ein String stellt einen booleschen CEL-Ausdruck dar. Mögliche Werte sind
trueoderfalse. - Die Regel wird nur angewendet, wenn die Klausel
whenzutrueausgewertet wird. - Der Standardwert ist
true.
- Ein String stellt einen booleschen CEL-Ausdruck dar. Mögliche Werte sind
map: Eine Klausel, die den Inhalt eines Ergebnisfelds angibt. Der Wert für diese Klausel hängt vom Typ des verarbeiteten Objekts ab und kann so definiert werden:expressionzur Auswertung als Stringvaluefür einen konstanten String
skip: Gibt an, dass das Eingabeobjekt nicht zugeordnet werden soll- Kann entweder
trueoderfalsesein.
- Kann entweder
log: Eine Prädikatklausel, die beim Debuggen oder Entwickeln von Regeln hilft- Ein String stellt einen booleschen CEL-Ausdruck dar. Mögliche Werte sind
trueoderfalse. - Der Standardwert ist
false. - Wenn diese Option auf
truegesetzt ist, enthält die Ausgabe ein Ausführungsprotokoll, mit dem Sie Probleme bei der Ausführung beobachten oder diagnostizieren können.
- Ein String stellt einen booleschen CEL-Ausdruck dar. Mögliche Werte sind
YAML-Datei für das Hauptregelsatz erstellen
Eine Datei für die Zuordnung von Hauptkonten wird verwendet, um Hauptkonto
IDs zu generieren, indem ein Wert für
email_address und type angegeben wird.
- Verwenden Sie
email_address, um die E‑Mail-Adresse für das Cloud de Confiance Hauptkonto anzugeben. - Verwenden Sie
type, um die Art des Hauptkontos in Cloud de Confianceanzugeben. Der Wert fürtypekann entwederuser,groupoderserviceAccountsein.
Jeder in den Regeln verwendete CEL-Ausdruck hat Zugriff auf Variablen, die das verarbeitete Objekt darstellen. Die Felder in den Variablen basieren auf dem Inhalt der HDFS- oder Apache Ranger-Metadatendateien. Die verfügbaren Variablen hängen vom Abschnitt des Regelsatzes ab:
- Verwenden Sie für
user_rulesdie Variableuser. - Verwenden Sie für
group_rulesdie Variablegroup. - Verwenden Sie für
other_rulesdie Variableother. - Verwenden Sie für
role_rulesdie Variablerole.
Im folgenden Beispiel werden Nutzer aus HDFS Nutzern in der Cloud de Confiance
mit ihrem Nutzernamen zugeordnet, gefolgt von @google.com als E‑Mail-Adresse:
hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'"
Standardrollenzuordnung überschreiben
Wenn Sie nicht standardmäßige Hauptkonten verwenden möchten, können Sie die Standardrollenzuordnungen mit den Regelsatzdateien überspringen oder ändern.
Das folgende Beispiel zeigt, wie Sie einen Abschnitt von Regeln überspringen können:
hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
YAML-Datei für das Berechtigungsregelsatz erstellen
Eine YAML-Datei für das Berechtigungsregelsatz wird verwendet, um eine Datei für die Zuordnung von Zielberechtigungen zu generieren. Um eine YAML-Datei für das Berechtigungsregelsatz zu erstellen, verwenden Sie CEL-Ausdrücke in der YAML-Datei für das Berechtigungsregelsatz, um HDFS- oder Apache Ranger-Berechtigungen Cloud Storage- oder BigQuery-Rollen zuzuordnen.
Standardrollenzuordnung
Die HDFS-Dateiberechtigungen werden durch die Berechtigungen der Quelldatei bestimmt:
- Wenn das Bit
wgesetzt ist, ist die Standardrollewriter. - Wenn das
rBit gesetzt ist, ist die Standardrollereader. - Wenn keines der Bits gesetzt ist, ist die Rolle leer.
Ranger HDFS:
- Wenn die Zugriffsgruppe
writeenthält, ist die Standardrollewriter. - Wenn die Zugriffsgruppe
readenthält, ist die Standardrollereader. - Wenn die Zugriffsgruppe keines von beiden enthält, ist die Rolle leer.
Ranger:
- Wenn die Zugriffsgruppe
update,create,drop,alter,index,lock,all,writeoderrefreshenthält, ist die Standardrollewriter. - Wenn die Zugriffsgruppe
selectoderreadenthält, ist die Standardrollereader - Wenn die Zugriffsgruppe keine der oben genannten Berechtigungen enthält, ist die Rolle leer.
Cloud Storage:
roles/storage.objectUser– Writerroles/storage.objectViewer– Leser
BigQuery:
roles/bigquery.dataOwner– Writerroles/bigquery.dataViewer– Leser
Das folgende Beispiel zeigt, wie Sie Standardzuordnungen ohne Änderungen in der YAML-Datei für das Regelsatz akzeptieren können:
ranger_hdfs_rules: - map: {}
Standardrollenzuordnung überschreiben
Wenn Sie nicht standardmäßige Rollen verwenden möchten, können Sie die Standardrollenzuordnungen mit den Regelsatzdateien überspringen oder ändern.
Das folgende Beispiel zeigt, wie Sie eine Standardrollenzuordnung mit einer Zuordnungsklausel mit dem Feld „Rolle“ und einer Wertklausel überschreiben können:
ranger_hdfs_rules: - map: role: value: "roles/customRole"
Berechtigungszuordnungen zusammenführen
Wenn mehrere Berechtigungszuordnungen für dieselbe Zielressource generiert werden, wird die Zuordnung mit dem weitesten Zugriff verwendet. Wenn beispielsweise eine HDFS-Regel dem Hauptkonto pa1 eine Leserrolle für einen HDFS-Speicherort zuweist und eine Ranger-Regel demselben Hauptkonto am selben Speicherort eine Writerrolle zuweist, wird die Writerrolle zugewiesen.
Strings in CEL-Ausdrücken in Anführungszeichen setzen
Setzen Sie den gesamten CEL-Ausdruck in YAML in Anführungszeichen "". Setzen Sie Strings im
CEL-Ausdruck in einfache Anführungszeichen '' Beispiel:
"'permissions-migration-' + group.name + '@google.com'"