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, finden Sie weitere Informationen unter Kerberos für Thrift-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.
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 mit Kerberos konfigurierten Dataproc Metastores 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
) -
gRPC-Lese-/Schreibzugriff auf Dataproc Metastore-Metadaten gewähren (
roles/metastore.metadataEditor
)
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 mit Kerberos konfigurierten Dataproc Metastores 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 konfigurieren
In der folgenden Anleitung erfahren Sie, 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 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 Verbindung zum Dienst herstellen
Führen Sie den folgenden gcloud dataproc clusters create
-Befehl aus, um einen mit Kerberos konfigurierten Dataproc zu erstellen.
In diesem Befehl erstellt die Option --enable-kerberos
die Kerberos-Keytab-Datei, die Datei krb5.conf
und das Hauptkonto. Diese Werte werden alle mit den vom Dataproc-Cluster festgelegten Standardnamen und -einstellungen erstellt.
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-ClustersPROJECT_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 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.
In der folgenden Anleitung erfahren Sie, wie Sie eine SSH-Verbindung zum 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.In Ihrem Basisverzeichnis auf dem Knoten 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 auf jedem Dataproc-Knoten die folgende Zeile hinzu.
allowed.system.users=hive
Tickets für Kerberos erstellen
In der folgenden Anleitung erfahren Sie, wie Sie ein Kerberos-Ticket generieren.
Generieren Sie in der SSH-Sitzung des Dataproc-Clusters ein Kerberos-Ticket und stellen Sie eine Verbindung zum Dataproc Metastore-Dienst her.
Dieser Befehl verwendet den von Ihrem Dataproc-Cluster generierten Standard-Keytab-Namen.
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. Es enthält den Hostnamen des primären Knotens.
Optional: Neues Hauptkonto hinzufügen
Führen Sie den folgenden Befehl aus, um ein neues Hauptkonto hinzuzufügen.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
Holen Sie sich das Kerberos-Ticket.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive