Auf dieser Seite wird beschrieben, 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 Abschnitt Kerberos für Thrift-Endpunkte konfigurieren.
Hinweise
Sie sollten die Grundlagen von Kerberos kennen.
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 Verwendung dieser Kerberos-Assets mit einem Dataproc Metastore-Dienst finden Sie unter Kerberos.
Erstellen und hosten Sie Ihr eigenes Kerberos-KDC oder erfahren Sie, wie Sie das lokale KDC eines Dataproc-Clusters verwenden.
Erstellen Sie einen Cloud Storage-Bucket oder greifen Sie auf einen vorhandenen zu. Sie müssen die Datei
krb5.conf
in diesem Bucket speichern.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen eines mit Kerberos konfigurierten Dataproc Metastore benötigen (Grundsatz der geringsten Berechtigung):
-
Vollständige Kontrolle über Dataproc Metastore-Ressourcen gewähren (
roles/metastore.editor
) -
Vollzugriff auf alle Dataproc Metastore-Ressourcen gewähren, einschließlich der IAM-Richtlinienverwaltung (
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 Metastore erforderlich ist .
Sie können 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 konfigurieren
In der folgenden Anleitung wird gezeigt, wie Sie Kerberos für einen Dataproc Metastore-Dienst konfigurieren, der den gRPC-Endpunkt verwendet.
Zuerst erstellen Sie einen Dataproc Metastore, der den gRPC-Endpunkt verwendet. Anschließend erstellen Sie einen Dataproc-Cluster, der mit Kerberos konfiguriert ist, und stellen eine Verbindung zu ihm her.
Dataproc Metastore-Dienst mit dem gRPC-Endpunkt erstellen
Führen Sie den folgenden gcloud metastore services create
-Befehl aus, um einen Dataproc Metastore zu erstellen, der den gRPC-Endpunkt verwendet:
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 mit Ihrem Dienst verbinden
Führen Sie den folgenden gcloud dataproc clusters create
-Befehl aus, um einen mit Kerberos konfigurierten Dataproc-Cluster zu erstellen.
Mit der Option --enable-kerberos
in diesem Befehl werden die Kerberos-Keytab-Datei (krb5.conf
-Datei) und der Prinzipal erstellt. Diese Werte werden alle mit Standardnamen und -einstellungen erstellt, die vom Dataproc-Cluster festgelegt werden.
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 den 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 Senden von Jobs konfigurieren
Damit Sie Ihre Dataproc-Jobs ausführen können, müssen Sie den Nutzer hive
der Eigenschaft 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 beschrieben, wie Sie ein Kerberos-Ticket generieren.
Generieren Sie in der SSH-Sitzung des Dataproc-Clusters ein Kerberos-Ticket und stellen Sie eine Verbindung zu Ihrem Dataproc Metastore-Dienst her.
Dieser Befehl verwendet den Standardschlüsseltab-Namen, der von Ihrem Dataproc-Cluster generiert wird.
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
aufgeführt wird. Er enthält den Hostnamen des primären Knotens.
Optional: Neues Hauptkonto hinzufügen
Führen Sie den folgenden Befehl aus, um einen neuen Prinzipal 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