Kerberos für Dataproc Metastore Thrift-Endpunkte konfigurieren

Auf dieser Seite wird erläutert, wie Sie Kerberos Dataproc Metastore-Dienst, der das Thrift-Endpunktprotokoll verwendet. Wenn der Dataproc Metastore-Dienst das gRPC-Endpunktprotokoll verwendet, lesen Sie den Abschnitt Kerberos für gRPC-Endpunkte konfigurieren

Hinweise

  • Verstehen Sie die Grundlagen der Kerberos:

    In dieser Anleitung verwenden Sie einen Dataproc-Cluster, um die folgenden Kerberos-Assets verwenden:

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

    Weitere Informationen zur Funktionsweise dieser Kerberos-Assets mit einem Dataproc Metastore-Dienst: Informationen zu Kerberos

  • Erstellen und hosten Sie Ihr eigenes Kerberos-KDC oder lernen Sie, wie Sie das lokale KDC eines Dataproc-Cluster:

  • Erstellen Sie einen Cloud Storage-Bucket oder greifen Sie auf einen vorhandenen zu. Ich muss die Datei krb5.conf in diesem Bucket speichern.

Hinweise zum Netzwerk

Bevor Sie Kerberos konfigurieren, sollten Sie das folgende Netzwerk in Betracht ziehen. Einstellungen:

  • Richten Sie eine IP-Verbindung zwischen Ihrem VPC-Netzwerk und KDC ein. Dies ist erforderlich, um authentifizieren Sie die KDC-Datei mit dem Dataproc Metastore-Dienst.

  • Richten Sie alle erforderlichen Firewallregeln auf Ihrem KDC. Diese Regeln sind erforderlich, um Traffic von Dataproc Metastore Weitere Informationen finden Sie unter Firewallregeln. für dein Dienste.

  • Wenn Sie VPC Service Controls verwenden, gilt Folgendes: das Secret Manager-Secret und das Cloud Storage-Objekt krb5.conf muss zu einem Projekt gehören, das sich im selben Dienstperimeter wie das Dataproc Metastore-Dienst

  • Entscheiden Sie, welches VPC-Peering-Netzwerk Sie verwenden möchten. Sie müssen Ihr Dataproc-Cluster und Dataproc Metastore mit demselben VPC-Peering-Netzwerk.

Erforderliche Rollen

Um die Berechtigung zu erhalten, die Sie zum Erstellen eines Dataproc Metastore mit Kerberos benötigen, bitten Sie Ihren Administrator, Ihnen folgende IAM-Rollen für Ihr Projekt basierend auf dem Prinzip der geringsten Berechtigung:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigung metastore.services.create, die erforderlich, um einen Dataproc Metastore mit Kerberos zu erstellen.

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 aktivieren

In der folgenden Anleitung erfahren Sie, wie Sie Kerberos für einen Dataproc Metastore konfigurieren -Dienst, der an einen Dataproc-Cluster angehängt ist.

Dataproc-Cluster erstellen und Kerberos aktivieren

gcloud

Um einen Dataproc-Cluster mit Kerberos einzurichten, Führen Sie folgenden gcloud dataproc clusters create aus: Befehl:

gcloud dataproc clusters create CLUSTER_NAME \
    --image-version=2.0 \
    --enable-kerberos \
    --scopes 'https://www.googleapis.com/auth/cloud-platform'

Ersetzen Sie Folgendes:

  • CLUSTER_NAME ist der Name Ihres Dataproc-Clusters.

Dataproc-Cluster für Kerberos konfigurieren

In der folgenden Anleitung erfahren Sie, wie Sie mit SSH eine Verbindung zu einer primären Dataproc-Instanz herstellen. Cluster, der Ihrem Dataproc Metastore-Dienst zugeordnet ist.

Anschließend ändern Sie die Datei hive-site.xml und konfigurieren Kerberos für Ihren Dienst.

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
  2. Klicken Sie in der Liste der VM-Instanzen auf SSH in der Zeile des Primärer Dataproc-Knoten (your-cluster-name-m)

    In Ihrem Stammverzeichnis des Knotens wird ein Browserfenster geöffnet.

  3. Öffnen Sie die Datei /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    

    Die Ausgabe sollte in etwa so aussehen:

    <property>
    <name>hive.metastore.kerberos.principal</name>
    <value>PRINCIPAL_NAME</value>
    </property>
    <property>
    <name>hive.metastore.kerberos.keytab.file</name>
    <value>METASTORE_PRINCPAL_KEYTAB</value>
    </property>
    

    Ersetzen Sie:

    • PRINCIPAL_NAME: ein Prinzipalname im Folgenden Format primary/instance@REALM. Beispiel: hive/test@C.MY-PROJECT.INTERNAL.
    • METASTORE_PRINCIPAL_KEYTAB: der Standort Ihres Hive Metastore-Keytab-Datei Verwenden Sie den Wert /etc/security/keytab/metastore.service.keytab.

Keytab-Datei erstellen

Die folgenden Anweisungen zeigen, wie Sie eine Keytab-Datei erstellen.

Eine Keytab-Datei enthält ein Paar Kerberos-Principals und ein Paar verschlüsselter Schlüssel. Dies ist zum Authentifizieren eines Diensthauptkontos bei einem Kerberos-KDC.

So erstellen Sie eine Keytab-Datei

  1. Erstellen Sie in der Dataproc-SSH-Sitzung den Keytab und das Hauptkonto.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
    
  2. Erstellen Sie in der Dataproc-SSH-Sitzung die Keytab-Datei und laden Sie sie hoch. an Secret Manager an.

    gcloud secrets create SECRET_NAME --replication-policy automatic
    sudo gcloud secrets versions add SECRET_NAME --data-file /etc/security/keytab/metastore.service.keytab

    Ersetzen Sie Folgendes:

    • SECRET_NAME ist der Name Ihres Secrets.

Datei krb5.conf aktualisieren

Als Nächstes müssen Sie die Datei krb5.conf aktualisieren, um sie mit Ihrem Dataproc-Cluster

  1. Primäre interne IP-Adresse von Dataproc ermitteln die primäre Instanz des Clusters.

    gcloud compute instances list
    

    Wenn Sie diesen Befehl ausführen, erhalten Sie beispielsweise eine ähnliche Ausgabe:

    ~$ gcloud compute instances list --project kerberos-project
    NAME                                                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP     STATUS
    cluster-236-m                                        us-central1-c  n2-standard-4               192.0.2.2      *.*.*.*         RUNNING
    ...
    

    In diesem Fall lautet die interne IP-Adresse des Clusters 192.0.2.2.

  2. Öffnen Sie die Datei krb5.conf.

    sudo vim /etc/krb5.conf
    
  3. Ersetzen Sie in der Datei die vorhandenen Parameter KDC und admin_server. durch die interne IP-Adresse Ihres Dataproc-Clusters.

    Beispiel: Die Verwendung des IP-Adresswerts aus den vorherigen Schritten sieht ähnlich aus. in diese Ausgabe ein.

    [realms]
    US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = {
       kdc = 192.0.2.2
       admin_server = 192.0.2.2
    }
    
  4. Datei /etc/krb5.conf von der primären Dataproc-Instanz hochladen VM in Ihren Cloud Storage-Bucket.

    gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
    

    Ersetzen Sie:

    • PATH_TO_KRB5: Der Cloud Storage-URI, der Folgendes enthält: Ihre krb5.conf-Datei.

    Kopieren Sie nach Abschluss des Uploads den Pfad des Uploads. Sie müssen ihn verwenden, wenn Sie Ihren Dataproc Metastore-Dienst erstellen.

IAM-Rollen und -Berechtigungen gewähren

  1. Berechtigung für Dataproc Metastore-Dienstkonto erteilen um auf die Keytab-Datei zuzugreifen. Dieses Konto wird von Google verwaltet und auf der UI-Seite für IAM-Berechtigungen aufgeführt. Wählen Sie dazu Von Google bereitgestellte Rollenzuweisungen einbeziehen aus.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \
          --role roles/secretmanager.secretAccessor

  2. Stellen Sie dem Dataproc Metastore-Dienstkonto Folgendes bereit: Berechtigung, auf die Datei krb5.conf zuzugreifen.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \
          --role roles/storage.objectViewer

Dataproc Metastore-Dienst mit Kerberos erstellen

Erstellen Sie einen neuen Dataproc Metastore-Dienst, der mit Ihrem Kerberos-Dateien.

Achten Sie darauf, dass Sie Ihren Dienst im VPC-Netzwerk als Dataproc erstellen Cluster.

gcloud metastore services create SERVICE \
   --location=LOCATION \
   --instance-size=medium \
   --network=VPC_NETWORK \
   --kerberos-principal=KERBEROS_PRINCIPAL \
   --krb5-config=KRB5_CONFIG \
   --keytab=CLOUD_SECRET

Ersetzen Sie Folgendes:

  • SERVICE: der Name Ihres Dataproc Metastore-Dienstes.
  • LOCATION: Der Speicherort Ihres Dataproc Metastore-Dienstes.
  • VPC_NETWORK ist der Name Ihres VPC-Netzwerk. Gleiche Netzwerk, das in Ihrem Dataproc-Cluster konfiguriert ist.
  • KERBEROS_PRINCIPAL: der Name des Kerberos-Hauptkonto die Sie zuvor erstellt haben.
  • KRB5_CONFIG: Speicherort der Datei krb5.config. Verwenden Sie den Cloud Storage-Objekt-URI, der auf Ihre Datei verweist.
  • CLOUD_SECRET: die relative Ressource Name eines Secret Managers Secret-Version.

Nachdem Sie den Cluster erstellt haben, versucht Dataproc Metastore, eine Verbindung herzustellen mit Ihren Kerberos-Anmeldedaten über das angegebene Hauptkonto, Keytab und krb5.conf -Datei. Wenn die Verbindung fehlschlägt, schlägt auch das Erstellen von Dataproc Metastore fehl.

Nachdem der Dataproc Metastore-Dienst erstellt wurde, Ermitteln Sie den Thrift-Endpunkt-URI und das Warehouse-Verzeichnis.

  1. SSH-Verbindung zur primären Instanz herstellen Ihres Dataproc-Clusters.

  2. Öffnen Sie in der SSH-Sitzung die Datei /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    
  3. Ändern Sie /etc/hive/conf/hive-site.xml im Dataproc-Cluster.

    <property>
    <name>hive.metastore.uris</name>
    <!-- Update this value. -->
    <value>ENDPOINT_URI</value>
    </property>
    <!-- Add this property entry. -->
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>WAREHOUSE_DIR</value>
    </property>
    
  4. Starten Sie HiveServer2 neu:

    sudo systemctl restart hive-server2.service
    

Dataproc vor dem Senden von Jobs konfigurieren

So führen Sie Ihre Dataproc-Jobs aus: müssen Sie den Nutzer hive zur allowed.system.users-Property im Hadoop-Datei container-executor.cfg So können Nutzende Abfragen ausführen, um auf Daten zuzugreifen, wie select * from.

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

Kerberos-Ticket sichern

  1. Sichern Sie sich das Kerberos-Ticket, bevor Sie eine Verbindung zum Dataproc Metastore herstellen Instanz.

    sudo klist -kte /etc/security/keytab/metastore.service.keytab
    sudo kinit -kt /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME
    sudo klist # gets the ticket information.
    sudo hive
    

    Ersetzen Sie Folgendes:

    • PRINCIPAL_NAME: der Name Ihres Hauptkontos.

Nächste Schritte