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.

Hinweis

  • Sie sollten die Grundlagen von Kerberos kennen.

    In dieser Anleitung erstellen Sie mit einem Managed Service for Apache Spark-Cluster die folgenden Kerberos-Assets:

    • Eine Keytab-Datei.
    • Eine krb5.conf-Datei
    • Ein Kerberos-Prinzipal.

    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 Managed Service for Apache Spark-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, basierend auf dem Prinzip 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 Managed Service for Apache Spark-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

Managed Service for Apache Spark-Cluster erstellen und mit Ihrem Dienst verbinden

Führen Sie den folgenden gcloud dataproc clusters create-Befehl aus, um einen mit Kerberos konfigurierten Managed Service for Apache Spark-Cluster zu erstellen.

Mit der Option --enable-kerberos in diesem Befehl werden die Kerberos-Keytab-Datei krb5.conf und der Prinzipal erstellt. Diese Werte werden alle mit Standardnamen und ‑einstellungen erstellt, die vom Managed Service for Apache Spark-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 Managed Service for Apache Spark-Clusters.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • REGION: Die Google Cloud Region, in der Sie Ihren Managed Service for Apache Spark-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>.

Managed Service for Apache Spark vor dem Einreichen von Jobs konfigurieren

Damit Sie Ihre Managed Service for Apache Spark-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 Managed Service for Apache Spark-Cluster herstellen, der Ihrem Dataproc Metastore-Dienst zugeordnet 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 virtuellen Maschinen-Instanzen in der Zeile des primären Knotens von Managed Service for Apache Spark (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 auf jedem Managed Service for Apache Spark-Knoten die folgende Zeile 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 Managed Service for Apache Spark-Clusters ein Kerberos-Ticket und stellen Sie eine Verbindung zu Ihrem Dataproc Metastore-Dienst her.

    Bei diesem Befehl wird der Standardschlüsseltab-Name verwendet, der von Ihrem Managed Service for Apache Spark-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 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