Auf dieser Seite wird erläutert, wie Sie Kerberos Dataproc Metastore-Dienst, der das Thrift-Endpunktprotokoll verwendet. Wenn der Dataproc Metastore-Dienst das gRPC-Endpunktprotokoll verwendet, lesen Sie den Abschnitt Kerberos für gRPC-Endpunkte konfigurieren
Hinweise
Informationen zu den Grundlagen von Kerberos
In dieser Anleitung erstellen Sie mit einem Dataproc-Cluster die folgenden Kerberos-Assets:
- Eine Keytab-Datei.
- Eine
krb5.conf
-Datei - Ein Kerberos-Hauptkonto.
Weitere Informationen zur Funktionsweise dieser Kerberos-Assets mit einem Dataproc Metastore-Dienst finden Sie unter Kerberos.
Erstellen und hosten Sie Ihr eigenes Kerberos-KDC oder lernen Sie, wie Sie das lokale KDC eines Dataproc-Cluster:
Erstellen Sie einen Cloud Storage-Bucket oder greifen Sie auf einen vorhandenen zu. Ich muss die Datei
krb5.conf
in diesem Bucket speichern.
Hinweise zum Netzwerk
Beachten Sie vor dem Konfigurieren von Kerberos die folgenden Netzwerkeinstellungen:
Richten Sie eine IP-Verbindung zwischen Ihrem VPC-Netzwerk und dem KDC ein. Dies ist erforderlich, um Ihre KDC-Datei beim Dataproc Metastore-Dienst zu authentifizieren.
Richten Sie alle erforderlichen Firewallregeln auf Ihrem KDC. Diese Regeln sind erforderlich, um Traffic vom Dataproc Metastore-Speicher zuzulassen. Weitere Informationen finden Sie unter Firewallregeln für Ihre Dienste.
Wenn Sie VPC Service Controls verwenden, müssen das Secret Manager-Secret und das Cloud Storage-Objekt
krb5.conf
zu einem Projekt gehören, das sich im selben Dienstperimeter wie der Dataproc Metastore-Dienst befindet.Entscheiden Sie, welches VPC-Peering-Netzwerk Sie verwenden möchten. Sie müssen Ihre Dataproc-Cluster und Dataproc Metastore mit demselben VPC-Peering-Netzwerk.
Erforderliche Rollen
Um die Berechtigung zu erhalten, die Sie zum Erstellen eines Dataproc Metastore mit Kerberos benötigen, bitten Sie Ihren Administrator, Ihnen folgende IAM-Rollen für Ihr Projekt basierend auf dem Prinzip der geringsten Berechtigung:
-
Vollständige Kontrolle über Dataproc Metastore-Ressourcen gewähren (
roles/metastore.editor
) -
Uneingeschränkten Zugriff auf alle Dataproc Metastore-Ressourcen gewähren, einschließlich der Verwaltung von IAM-Richtlinien (
roles/metastore.admin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigung metastore.services.create
, die zum Erstellen eines Dataproc-Metastores mit Kerberos erforderlich ist.
Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu bestimmten Rollen und Berechtigungen für Dataproc Metastore finden Sie unter Zugriff mit IAM verwalten.Weitere Informationen finden Sie unter Dataproc Metastore-IAM und -Zugriffssteuerung.
Kerberos für Dataproc Metastore aktivieren
In der folgenden Anleitung wird gezeigt, wie Sie Kerberos für einen Dataproc Metastore-Dienst konfigurieren, der mit einem Dataproc-Cluster verbunden ist.
Dataproc-Cluster erstellen und Kerberos aktivieren
gcloud
Führen Sie den folgenden gcloud dataproc clusters create
-Befehl aus, um einen Dataproc-Cluster mit Kerberos einzurichten:
gcloud dataproc clusters create CLUSTER_NAME \ --image-version=2.0 \ --enable-kerberos \ --scopes 'https://www.googleapis.com/auth/cloud-platform'
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Der Name Ihres Dataproc-Clusters.
Dataproc-Cluster für Kerberos konfigurieren
In der folgenden Anleitung erfahren Sie, wie Sie mit SSH eine Verbindung zu einer primären Dataproc-Instanz herstellen. Cluster, der Ihrem Dataproc Metastore-Dienst zugeordnet ist.
Anschließend ändern Sie die Datei hive-site.xml
und konfigurieren Kerberos für Ihren Dienst.
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie in der Liste der VM-Instanzen auf SSH in der Zeile des Primärer Dataproc-Knoten (
your-cluster-name-m
)In Ihrem Stammverzeichnis des Knotens wird ein Browserfenster geöffnet.
Öffnen Sie die Datei
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Die Ausgabe sollte in etwa so aussehen:
<property> <name>hive.metastore.kerberos.principal</name> <value>PRINCIPAL_NAME</value> </property> <property> <name>hive.metastore.kerberos.keytab.file</name> <value>METASTORE_PRINCPAL_KEYTAB</value> </property>
Ersetzen Sie:
PRINCIPAL_NAME
: ein Prinzipalname im Folgenden Formatprimary/instance@REALM
. Beispiel:hive/test@C.MY-PROJECT.INTERNAL
.METASTORE_PRINCIPAL_KEYTAB
: der Standort Ihres Hive Metastore-Keytab-Datei Verwenden Sie den folgenden Wert/etc/security/keytab/metastore.service.keytab
.
Keytab-Datei erstellen
Die folgenden Anweisungen zeigen, wie Sie eine Keytab-Datei erstellen.
Eine Keytab-Datei enthält ein Paar Kerberos-Principals und ein Paar verschlüsselter Schlüssel. Dies ist zum Authentifizieren eines Diensthauptkontos bei einem Kerberos-KDC.
So erstellen Sie eine Keytab-Datei
Erstellen Sie in der Dataproc-SSH-Sitzung den Keytab und das Hauptkonto.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME" sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
Erstellen Sie in der Dataproc-SSH-Sitzung die Keytab-Datei und laden Sie sie hoch. an Secret Manager an.
gcloud secrets create SECRET_NAME --replication-policy automatic sudo gcloud secrets versions add SECRET_NAME --data-file /etc/security/keytab/metastore.service.keytab
Ersetzen Sie Folgendes:
SECRET_NAME
ist der Name Ihres Secrets.
Datei krb5.conf aktualisieren
Als Nächstes müssen Sie die Datei krb5.conf
aktualisieren, um sie mit Ihrem
Dataproc-Cluster
Primäre interne IP-Adresse von Dataproc ermitteln die primäre Instanz des Clusters.
gcloud compute instances list
Wenn Sie diesen Befehl ausführen, erhalten Sie beispielsweise eine ähnliche Ausgabe:
~$ gcloud compute instances list --project kerberos-project NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS cluster-236-m us-central1-c n2-standard-4 192.0.2.2 *.*.*.* RUNNING ...
In diesem Fall lautet die interne IP-Adresse des Clusters
192.0.2.2
.Öffnen Sie die Datei
krb5.conf
.sudo vim /etc/krb5.conf
Ersetzen Sie in der Datei die vorhandenen Parameter
KDC
undadmin_server
durch die interne IP-Adresse Ihres Dataproc-Clusters.Beispielsweise sieht die Verwendung des IP-Adresswerts aus den vorherigen Schritten ähnlich aus. in diese Ausgabe ein.
[realms] US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = { kdc = 192.0.2.2 admin_server = 192.0.2.2 }
Laden Sie die Datei
/etc/krb5.conf
von der primären Dataproc-VM in Ihren Cloud Storage-Bucket hoch.gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
Ersetzen Sie:
PATH_TO_KRB5
: Der Cloud Storage-URI, der diekrb5.conf
-Datei enthält.
Kopieren Sie nach Abschluss des Uploads den Pfad des Uploads. Sie müssen ihn verwenden, wenn Sie Ihren Dataproc Metastore-Dienst erstellen.
IAM-Rollen und ‑Berechtigungen gewähren
Berechtigung für Dataproc Metastore-Dienstkonto erteilen um auf die Keytab-Datei zuzugreifen. Dieses Konto wird von Google verwaltet und auf der UI-Seite für IAM-Berechtigungen durch Auswahl von Von Google bereitgestellte Rollenzuweisungen einbeziehen aufgeführt.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/secretmanager.secretAccessor
Stellen Sie dem Dataproc Metastore-Dienstkonto Folgendes bereit: Berechtigung, auf die Datei
krb5.conf
zuzugreifen.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/storage.objectViewer
Dataproc Metastore-Dienst mit Kerberos erstellen
Erstellen Sie einen neuen Dataproc Metastore-Dienst, der mit Ihren Kerberos-Dateien konfiguriert ist.
Achten Sie darauf, den Dienst im VPC-Netzwerk als Dataproc-Cluster zu erstellen.
gcloud metastore services create SERVICE \ --location=LOCATION \ --instance-size=medium \ --network=VPC_NETWORK \ --kerberos-principal=KERBEROS_PRINCIPAL \ --krb5-config=KRB5_CONFIG \ --keytab=CLOUD_SECRET
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastore-Dienstes.LOCATION
: Der Speicherort Ihres Dataproc Metastore-Dienstes.VPC_NETWORK
: der Name des VPC-Netzwerks. Gleiche Netzwerk, das in Ihrem Dataproc-Cluster konfiguriert ist.KERBEROS_PRINCIPAL
: der Name des Kerberos-Hauptkonto die Sie zuvor erstellt haben.KRB5_CONFIG
: Speicherort der Dateikrb5.config
. Verwenden Sie den Cloud Storage-Objekt-URI, der auf Ihre Datei verweist.CLOUD_SECRET
: Der relative Ressourcenname einer Secret-Version im Secret Manager.
Nachdem Sie den Cluster erstellt haben, versucht Dataproc Metastore, eine Verbindung herzustellen
mit Ihren Kerberos-Anmeldedaten über das angegebene Hauptkonto, Keytab und krb5.conf
-Datei. Wenn die Verbindung fehlschlägt, schlägt auch die Erstellung des Dataproc-Metastores fehl.
Dataproc-Cluster mit Dataproc Metastore verknüpfen
Nachdem der Dataproc Metastore-Dienst erstellt wurde, Ermitteln Sie den Thrift-Endpunkt-URI und das Warehouse-Verzeichnis.
Stellen Sie eine SSH-Verbindung zur primären Instanz Ihres Dataproc-Clusters her.
Öffnen Sie in der SSH-Sitzung die Datei
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Ändern Sie
/etc/hive/conf/hive-site.xml
im Dataproc-Cluster.<property> <name>hive.metastore.uris</name> <!-- Update this value. --> <value>ENDPOINT_URI</value> </property> <!-- Add this property entry. --> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
Starten Sie HiveServer2 neu:
sudo systemctl restart hive-server2.service
Dataproc vor dem Einreichen von Jobs konfigurieren
So führen Sie Ihre Dataproc-Jobs aus:
müssen Sie den Nutzer hive
zur allowed.system.users
-Property im
Hadoop-Datei container-executor.cfg
So können Nutzende Abfragen ausführen,
um auf Daten zuzugreifen,
wie select * from
.
Öffnen Sie in der SSH-Sitzung die Hadoop-Datei
container-executor.cfg
.sudo vim /etc/hadoop/conf/container-executor.cfg
Fügen Sie die folgende Zeile auf jedem Dataproc-Knoten hinzu.
allowed.system.users=hive
Kerberos-Ticket abrufen
Sichern Sie sich das Kerberos-Ticket, bevor Sie eine Verbindung zum Dataproc Metastore herstellen Instanz.
sudo klist -kte /etc/security/keytab/metastore.service.keytab sudo kinit -kt /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME sudo klist # gets the ticket information. sudo hive
Ersetzen Sie Folgendes:
PRINCIPAL_NAME
: der Name des Hauptbevollmächtigten.