Auf dieser Seite wird erläutert, wie Sie Kerberos für Ihren Dataproc Metastore-Dienst konfigurieren, der das gRPC-Endpunktprotokoll verwendet. Wenn Ihr Dataproc Metastore-Dienst das Thrift-Endpunktprotokoll verwendet, lesen Sie den Hilfeartikel Kerberos für Thrift-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.
Sie können Ihr eigenes Kerberos-KDC erstellen und hosten oder erfahren, wie Sie das lokale KDC eines Dataproc-Clusters verwenden.
Erstellen Sie einen Cloud Storage-Bucket oder rufen Sie einen vorhandenen auf. Sie müssen Ihre
krb5.conf
-Datei in diesem Bucket speichern.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigung zum Erstellen eines mit Kerberos konfigurierten Dataproc-Metastores zu erhalten. Dabei wird das Prinzip der geringsten Berechtigung angewendet:
-
Vollständige Kontrolle über Dataproc Metastore-Ressourcen gewähren (
roles/metastore.editor
) -
Vollzugriff auf alle Dataproc Metastore-Ressourcen gewähren, einschließlich der Verwaltung von IAM-Richtlinien (
roles/metastore.admin
) -
gRPC-Lese-/Schreibzugriff auf Dataproc Metastore-Metadaten gewähren (
roles/metastore.metadataEditor
)
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 mit Kerberos konfigurierten Dataproc-Metastores 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 konfigurieren
In der folgenden Anleitung wird beschrieben, wie Sie Kerberos für einen Dataproc Metastore-Dienst konfigurieren, der den gRPC-Endpunkt verwendet.
Erstellen Sie zuerst einen Dataproc Metastore, der den gRPC-Endpunkt verwendet. Anschließend erstellen Sie einen mit Kerberos konfigurierten Dataproc-Cluster und stellen eine Verbindung dazu her.
Dataproc Metastore-Dienst mit dem gRPC-Endpunkt erstellen
Um einen Dataproc Metastore zu erstellen, der den gRPC-Endpunkt verwendet, führen Sie den folgenden gcloud metastore services create
-Befehl aus:
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Ersetzen Sie:
SERVICE
: Der Name Ihres Dataproc Metastore-Dienstes
Dataproc-Cluster erstellen und eine Verbindung zum Dienst herstellen
Führen Sie den folgenden gcloud dataproc clusters create
-Befehl aus, um einen mit Kerberos konfigurierten Dataproc-Cluster zu erstellen.
In diesem Befehl wird mit der Option --enable-kerberos
die Kerberos-Keytab-Datei, die krb5.conf
-Datei und der Principal erstellt. Diese Werte werden alle mit Standardnamen und -einstellungen erstellt, die vom Dataproc-Cluster festgelegt wurden.
gcloud
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--image-version 2.0-debian10 \
--dataproc-metastore DATAPROC_METASTORE_NAME \
--enable-kerberos \
--scopes 'https://www.googleapis.com/auth/cloud-platform'
Ersetzen Sie:
CLUSTER_NAME
: Der Name Ihres Dataproc-Clusters.PROJECT_ID
: Ihre Google Cloud-Projekt-ID.REGION
: die Google Cloud-Region, in der Sie Ihren Dataproc-Cluster erstellen möchten.DATAPROC_METASTORE_NAME
: Der Name des Dataproc Metastore-Dienstes, den Sie an den Cluster anhängen, im folgenden Format:projects/<my_project>/locations/<location>/services/<service_id>
.
Dataproc vor dem Einreichen von Jobs konfigurieren
Wenn Sie Ihre Dataproc-Jobs ausführen möchten, müssen Sie dem Nutzer hive
die Property allowed.system.users
in der Hadoop-Datei container-executor.cfg
hinzufügen. So können Nutzer Abfragen ausführen, um auf Daten wie select * from
zuzugreifen.
In der folgenden Anleitung wird gezeigt, wie Sie eine SSH-Verbindung zu Ihrem primären Dataproc-Cluster herstellen, der mit Ihrem Dataproc Metastore-Dienst verknüpft ist, und die Datei container-executor.cfg
aktualisieren.
- 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.Im Stammverzeichnis des Knotens wird ein Browserfenster geöffnet.
Ö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
In der folgenden Anleitung wird gezeigt, wie Sie ein Kerberos-Ticket generieren.
Erstellen Sie in der SSH-Sitzung des Dataproc-Clusters ein Kerberos-Ticket und stellen Sie eine Verbindung zum Dataproc Metastore-Dienst her.
Bei diesem Befehl wird der Standard-Keytab-Name verwendet, der von Ihrem Dataproc-Cluster generiert wurde.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm} sudo klist # gets the ticket information.
Der Wert
_HOST
wird abgerufen, wenn die Keytab-Datei mit dem Befehlklist -kte
aufgelistet wird. Er enthält den Hostnamen des primären Knotens.
Optional: Neues Hauptkonto hinzufügen
Führen Sie den folgenden Befehl aus, um eine neue Hauptrolle hinzuzufügen.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
Rufen Sie das Kerberos-Ticket ab.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive