Auf dieser Seite wird erläutert, wie Sie Kerberos für Ihren Dataproc Metastore-Dienst konfigurieren, der das Thrift-Endpunktprotokoll verwendet. Wenn Ihr Dataproc Metastore-Dienst das gRPC-Endpunktprotokoll verwendet, finden Sie weitere Informationen unter Kerberos für gRPC-Endpunkte konfigurieren.
Hinweise
Machen Sie sich mit den Grundlagen von Kerberos vertraut.
In dieser Anleitung verwenden Sie einen Dataproc-Cluster, um die folgenden Kerberos-Assets zu erstellen:
- 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 ein eigenes Kerberos-KDC oder erfahren Sie, wie Sie das lokale KDC eines Dataproc-Clusters verwenden.
Erstellen Sie einen Cloud Storage-Bucket oder fordern Sie Zugriff auf einen vorhandenen Bucket an. Sie müssen die Datei
krb5.conf
in diesem Bucket speichern.
Überlegungen zum Netzwerk
Prüfen Sie vor der Konfiguration von Kerberos die folgenden Netzwerkeinstellungen:
Richten Sie eine IP-Verbindung zwischen Ihrem VPC-Netzwerk und KDC ein. Dieser Schritt ist erforderlich, um Ihre KDC-Datei beim Dataproc Metastore-Dienst zu authentifizieren.
Richten Sie alle erforderlichen Firewallregeln auf Ihrem KDC ein. Diese Regeln sind erforderlich, um Traffic von Dataproc Metastore 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 den Dataproc-Cluster und den Dataproc Metastore-Dienst mit demselben VPC-Peering-Netzwerk konfigurieren.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen nach dem Prinzip der geringsten Berechtigung die folgenden IAM-Rollen für Ihr Projekt zu gewähren, um die Berechtigung zu erhalten, die Sie zum Erstellen eines Dataproc Metastore mit Kerberos benötigen:
-
Vollständige Kontrolle über Dataproc Metastore-Ressourcen gewähren (
roles/metastore.editor
) -
Uneingeschränkten Zugriff auf alle Dataproc Metastore-Ressourcen gewähren, einschließlich Verwaltung von IAM-Richtlinien (
roles/metastore.admin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierte Rolle enthält die Berechtigung metastore.services.create
, die zum Erstellen eines Dataproc Metastore mit Kerberos erforderlich ist.
Möglicherweise können Sie diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu bestimmten Dataproc Metastore-Rollen und -Berechtigungen 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 erfahren Sie, 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 einem primären Dataproc-Cluster herstellen, 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 in der Zeile des primären Dataproc-Knotens (
your-cluster-name-m
) auf SSH.In Ihrem Basisverzeichnis auf dem Knoten 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 sieht in etwa so aus:
<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 Hauptkontoname im Formatprimary/instance@REALM
. Beispiel:hive/test@C.MY-PROJECT.INTERNAL
.METASTORE_PRINCIPAL_KEYTAB
: der Speicherort Ihrer Hive Metastore-Keytab-Datei. Verwenden Sie den folgenden Wert/etc/security/keytab/metastore.service.keytab
.
Keytab-Datei erstellen
In den folgenden Anweisungen erfahren Sie, wie Sie eine Keytab-Datei erstellen.
Eine Keytab-Datei enthält ein Paar Kerberos-Principals und verschlüsselte Schlüssel. Damit wird ein Diensthauptkonto bei einem Kerberos-KDC authentifiziert.
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 in Secret Manager hoch.
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
: 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 zu verknüpfen.
Ermitteln Sie die primäre interne IP-Adresse der primären Instanz des Dataproc-Clusters.
gcloud compute instances list
Das Ausführen dieses Befehls führt beispielsweise zu einer 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 den vorhandenen Parameter
KDC
und den Parameteradmin_server
durch die interne IP-Adresse Ihres Dataproc-Clusters.Die Verwendung des IP-Adresswerts aus den vorherigen Schritten sieht beispielsweise in etwa so aus wie in dieser Ausgabe.
[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.gsutil cp /etc/krb5.conf gs://PATH_TO_KRB5
Ersetzen Sie:
PATH_TO_KRB5
: Der Cloud Storage-URI, der die Dateikrb5.conf
enthält.
Kopieren Sie nach Abschluss des Uploads den Pfad des Uploads. Sie benötigen ihn, wenn Sie den Dataproc Metastore-Dienst erstellen.
IAM-Rollen und -Berechtigungen gewähren
Erteilen Sie dem Dataproc Metastore-Dienstkonto die Berechtigung, auf die Keytab-Datei zuzugreifen. Dieses Konto wird von Google verwaltet und ist auf der UI-Seite für IAM-Berechtigungen aufgelistet. Wählen Sie dazu Von Google bereitgestellte Rollenzuweisungen einschließen aus.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/secretmanager.secretAccessor
Erteilen Sie dem Dataproc Metastore-Dienstkonto die Berechtigung für den Zugriff auf die Datei
krb5.conf
.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, dass Sie den Dienst im VPC-Netzwerk als Dataproc-Cluster 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 Ihres VPC-Netzwerk. Verwenden Sie dasselbe Netzwerk, das in Ihrem Dataproc-Cluster konfiguriert ist.KERBEROS_PRINCIPAL
: der Name des zuvor erstellten Kerberos-Hauptkontos.KRB5_CONFIG
: der Speicherort der Dateikrb5.config
. Verwenden Sie den Cloud Storage-Objekt-URI, der auf Ihre Datei verweist.CLOUD_SECRET
: Der relative Ressourcenname einer Secret-Version von Secret Manager.
Nachdem Sie den Cluster erstellt haben, versucht Dataproc Metastore, mithilfe des bereitgestellten Hauptkontos, der bereitgestellten Keytab-Datei und der Datei krb5.conf
eine Verbindung mit Ihren Kerberos-Anmeldedaten herzustellen. Wenn die Verbindung fehlschlägt, schlägt auch das Erstellen von Dataproc Metastore fehl.
Dataproc-Cluster mit Dataproc Metastore verknüpfen
Nachdem der Dataproc Metastore-Dienst erstellt wurde, suchen Sie den Thrift-Endpunkt-URI und das warehouse-Verzeichnis.
Stellen Sie eine SSH-Verbindung zur primären Instanz des 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 Senden von Jobs konfigurieren
Zum Ausführen Ihrer Dataproc-Jobs müssen Sie den Nutzer hive
dem Attribut allowed.system.users
in der Hadoop-Datei container-executor.cfg
hinzufügen. Dadurch können Nutzer Abfragen wie select * from
ausführen, um auf Daten zuzugreifen.
Öffnen Sie in der SSH-Sitzung die Hadoop-Datei
container-executor.cfg
.sudo vim /etc/hadoop/conf/container-executor.cfg
Fügen Sie auf jedem Dataproc-Knoten die folgende Zeile hinzu.
allowed.system.users=hive
Tickets für Kerberos erstellen
Rufen Sie das Kerberos-Ticket ab, bevor Sie eine Verbindung zur Dataproc Metastore-Instanz herstellen.
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 Hauptkontos.