Kerberos für Dataproc Metastore-gRPC-Endpunkte konfigurieren

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):

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.

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
  2. 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.

  3. Ö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.

  1. 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 Befehl klist -kte aufgeführt wird. Er enthält den Hostnamen des primären Knotens.

Optional: Neues Hauptkonto hinzufügen

  1. 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"
    
  2. 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
    

Nächste Schritte