Mit JSON-Webtokens authentifizieren

In diesem Artikel wird gezeigt, wie Sie die Authentifizierung für den Zugriff auf Google Cloud APIs einrichten, wenn Ihr SAP-System auf einem lokalen Host, bei einem anderen Cloud-Anbieter oder in einer anderen Umgebung außerhalb von Google Cloud ausgeführt wird oder von SAP über das SAP RISE-Programm verwaltet wird. Zur Authentifizierung bei Google Cloud verwenden Sie von Google Cloud signierte JSON Web Tokens (JWT), um Zugriffstokens aus Google Cloud abzurufen.

Es müssen folgende allgemeine Konfigurations-Schritte ausgeführt werden:

Dienstkonto für den JWT-basierten Tokenabruf erstellen

Für die JWT-basierte Authentifizierung bei Google Cloud benötigt das ABAP SDK for Google Cloud ein IAM-Dienstkonto.

Dienstkonto erstellen

Erstellen Sie ein Dienstkonto und weisen Sie dem Dienstkonto die IAM-Rolle Service Account Token Creator zu.

Führen Sie die folgenden Schritte aus, um ein Dienstkonto zu erstellen:

  1. Erstellen Sie in der Google Cloud Console ein IAM-Dienstkonto für den JWT-basierten Tokenabruf.

    Zur Seite „Dienstkonten“

    Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonto erstellen.

  2. Weisen Sie dem Dienstkonto die Rolle Service Account Token Creator zu. Eine Anleitung finden Sie unter Einzelne Rolle zuweisen.

Dienstkontoschlüssel erstellen

Sie müssen einen P12-Dienstkontoschlüssel für das Dienstkonto erstellen, das für den JWT-basierten Tokenabruf verwendet wird.

Führen Sie die folgenden Schritte aus, um einen Dienstkontoschlüssel zu erstellen:

  1. Rufen Sie in der Google Cloud Console die IAM und Verwaltung-Seite Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Wählen Sie Ihr Google Cloud-Projekt aus.

  3. Klicken Sie auf die E-Mail-Adresse des Dienstkontos, das Sie im vorherigen Abschnitt Dienstkonto erstellen für den JWT-basierten Tokenabruf erstellt haben.

  4. Klicken Sie unter dem Namen des Dienstkontos auf den Tab Schlüssel.

  5. Klicken Sie auf das Drop-down-Menü Schlüssel hinzufügen und wählen Sie Neuen Schlüssel erstellen, um einen Dienstkontoschlüssel zu erstellen.

  6. Verwenden Sie als Schlüsseltyp P12 und klicken Sie auf ERSTELLEN.

    Ein privater Schlüssel wird auf Ihren Computer heruntergeladen.

  7. Notieren Sie sich das Passwort für die private Schlüsseldatei notasecret.

    Geben Sie den privaten Schlüssel und das Passwort Ihrem SAP-Administrator, um den privaten Schlüssel in STRUST zu importieren, wie unter Dienstkontoschlüssel in STRUST importieren beschrieben.

Dienstkonto für JWT-Signatur angeben

Wenn Sie das Dienstkonto für die JWT-Signierung in einem anderen Projekt als dem Projekt erstellt haben, das die Google Cloud APIs enthält, müssen Sie das Dienstkonto auf dem SAP-Hostsystem angeben.

Wenn Sie das Dienstkonto in dem Projekt erstellt haben, in dem sich die Google Cloud APIs befinden, können Sie diesen Schritt überspringen.

Führen Sie die folgenden Schritte aus, um das Dienstkonto für die JWT-Signatur anzugeben:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Parameter konfigurieren.

  3. Klicken Sie auf Neue Einträge.

  4. Geben Sie im Feld Parameter Name JWT_SERVC_ACCT ein. Die Parameterbeschreibung wird automatisch ausgefüllt.

  5. Geben Sie im Feld Parameterwert den Namen des Dienstkontos ein.

  6. Speichern Sie den neuen Eintrag.

Sicherheitseinstellungen für Google Cloud auf dem SAP-Hostsystem konfigurieren

Um die JWT-Signierung für das Dienstkonto zu aktivieren, das Sie für den JWT-basierten Tokenabruf erstellt haben, müssen Sie die Sicherheitseinstellungen für Google Cloud auf dem SAP-Hostsystem konfigurieren.

Neue SSF-Anwendung (Secure Store and Forward) erstellen

Mit jedem SSFAPPLIC-Eintrag können Sie einen einzelnen Dienstkontoschlüssel speichern. Wenn Sie Dienstkontoschlüssel für mehrere Projekte speichern möchten, müssen Sie mehrere SSFAPPLIC-Einträge erstellen. Gehen Sie dazu so vor.

Führen Sie die folgenden Schritte aus, um einen neuen Eintrag in der Tabelle SSFAPPLIC zu erstellen:

  1. Geben Sie in der SAP-GUI den Transaktionscode SE16 ein.
  2. Geben Sie im Feld Tabellenname den Namen SSFAPPLIC ein und erstellen Sie einen neuen Eintrag.
  3. Geben Sie im Feld APPLIC einen Namen für Ihre SSF-Anwendung ein, z. B. ZG_JWT.
  4. Bis auf die Felder B_INCCERTS, B_DETACHED, B_ASKPWD und B_DISTRIB wählen Sie alle anderen Felder aus.
  5. Geben Sie im Feld DESCRIPT den Wert JWT Signature for GCP ein.
  6. Speichern Sie den neuen Eintrag.

    Dieser Eintrag wird zu einem neuen Knoten in der Transaktion STRUST, wo Sie den Dienstkontoschlüssel importieren.

STRUST-Knoten aktivieren

Verwenden Sie die Transaktion SSFA, um den Knoten STRUST für JWT Signature for GCP zu aktivieren.

Führen Sie die folgenden Schritte aus, um den Knoten STRUST zu aktivieren:

  1. Geben Sie in der SAP-GUI den Transaktionscode SSFA ein.
  2. Klicken Sie auf Neue Einträge.
  3. Wählen Sie in der Drop-down-Liste SSF-Anwendung die Option JWT Signature for GCP aus. Dies ist der neue Eintrag, den Sie in der Tabelle SSFAPPLIC erstellt haben.

    Die anwendungsspezifischen SSF-Parameter werden automatisch ausgefüllt.

  4. Speichern Sie den neuen Eintrag.

    Ein neuer Knoten SSF JWT Signature for GCP wird in der Transaktion STRUST aktiviert.

Dienstkontoschlüssel in STRUST importieren

Führen Sie die folgenden Schritte aus, um den Dienstkontoschlüssel in STRUST zu importieren:

  1. Geben Sie in der SAP-GUI den Transaktionscode STRUST ein.

    Prüfen Sie, ob der neue Knoten in der Transaktion STRUST den Namen SSF JWT Signature for GCP hat.

  2. Importieren Sie die Datei mit dem privaten Schlüssel:

    1. Wählen Sie in der Menüleiste PSE > Importieren aus.
    2. Wählen Sie je nach SAP-System den entsprechenden privaten Schlüssel aus:
      • SAP S/4HANA
        1. Wählen Sie den privaten P12-Schlüssel aus.
        2. Geben Sie das Dateipasswort notasecret ein und klicken Sie dann auf OK.
      • SAP ECC
        1. Wählen Sie den privaten PSE-Schlüssel aus. Sie müssen den zuvor heruntergeladenen privaten P12-Schlüssel in einen privaten PSE-Schlüssel konvertieren. Weitere Informationen zum Konvertieren eines P12-Schlüssels in einen PSE-Schlüssel finden Sie unter P12-Schlüssel in PSE-Schlüssel konvertieren.
        2. Geben Sie die Datei-PIN ein, die Sie während der Konvertierung des privaten Schlüssels vom P12-Schlüssel in den PSE-Schlüssel erstellt haben, und klicken Sie dann auf OK.
  3. Wählen Sie PSE > Speichern unter.

  4. Wählen Sie SSF-Anwendung und im entsprechenden Eingabefeld den neuen SSF-Anwendungsknoten aus, den Sie in Neue SSF-Anwendung (Secure Store and Forward) erstellen erstellt haben.

  5. Speichern Sie den neuen Eintrag.

    Der Dienstschlüssel wird an den SSF-Anwendungsknoten SSF JWT Signature for GCP angehängt.

Privaten P12-Schlüssel in PSE-Schlüssel konvertieren

Wenn Ihr SAP-System SAP NetWeaver 7.0x (SAP ECC) ist, müssen Sie den P12-Schlüssel in einen PSE-Schlüssel konvertieren.

Führen Sie die folgenden Schritte aus, um den P12-Schlüssel in einen PSE-Schlüssel umzuwandeln:

  1. Gehen Sie zum Pfad:

    /usr/sap/SID/SYS/exe/run/

    Ersetzen Sie SID durch die SAP-System-ID.

  2. Führen Sie den folgenden Befehl aus, nachdem Sie die Platzhalter ersetzt haben:

    sapgenpse import_p12 -p PSE_PATH_AND_FILE_NAME P12_PATH_AND_FILE_NAME.p12

    Ersetzen Sie Folgendes:

    • PSE_PATH_AND_FILE_NAME: Geben Sie den Pfad und den Dateinamen der PSE-Datei an.
    • P12_PATH_AND_FILE_NAME: Geben Sie den Pfad und den Dateinamen der P12-Schlüsseldatei an.
  3. Geben Sie das Passwort notasecret der privaten P12-Schlüsseldatei ein.

  4. Erstellen Sie eine neue PIN für den privaten PSE-Schlüssel und geben Sie Ihre PIN noch einmal ein.

  5. Notieren Sie sich die PIN. Sie müssen sie beim Importieren der privaten PSE-Schlüsseldatei in STRUST angeben.

Informationen von SAP zur Konvertierung eines P12-Schlüssels in einen PSE-Schlüssel finden Sie unter:

Google Cloud APIs aktivieren

Aktivieren Sie in der Google Cloud Console die IAM Service Account Credentials API für Ihr Google Cloud-Projekt, das eine Authentifizierung erfordert. Neben der IAM Service Account Credentials API müssen Sie alle anderen unterstützten APIs aktivieren, auf die Sie mit dem SDK zugreifen möchten.

Zur API-Bibliothek

Informationen zum Aktivieren von Google Cloud APIs finden Sie unter APIs aktivieren.

Dienstkonto für die Autorisierung zum Zugriff auf Google Cloud APIs erstellen

Zur Authentifizierung und Autorisierung für den Zugriff auf Google Cloud APIs benötigt das ABAP SDK for Google Cloud ein IAM-Dienstkonto.

Dienstkonto erstellen

Erstellen Sie in der Google Cloud Console ein IAM-Dienstkonto. Dieses Dienstkonto muss ein Hauptkonto in dem Google Cloud-Projekt sein, das die Google Cloud APIs enthält, die Sie mit dem SDK nutzen möchten. Wenn Sie das Dienstkonto in dem Projekt erstellen, in dem sich die Google Cloud APIs befinden, wird das Dienstkonto dem Projekt automatisch als Hauptkonto hinzugefügt.

Wenn Sie das Dienstkonto in einem anderen Projekt als dem Projekt erstellen, in dem die Google Cloud APIs aktiviert sind, müssen Sie das Dienstkonto diesem Projekt in einem zusätzlichen Schritt hinzufügen.

  1. Erstellen Sie in der Google Cloud Console ein IAM-Dienstkonto für die Authentifizierung und Autorisierung für den Zugriff auf Google Cloud APIs.

    Zur Seite „Dienstkonten“

    Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonto erstellen.

  2. Gewähren Sie dem Dienstkonto in der Google Cloud Console die erforderlichen IAM-Rollen, um auf die API-Funktionalität zuzugreifen. Um die Rollenanforderung für Google Cloud APIs zu verstehen, lesen Sie die einzelne API-Dokumentation und folgen Sie dem Prinzip der geringsten Berechtigung. Weitere Informationen zu API-spezifischen vordefinierten Rollen finden Sie unter IAM-Rollen für Google Cloud APIs finden.

  3. Wenn Sie das Dienstkonto in einem anderen Projekt als dem Projekt erstellt haben, das die Google Cloud APIs enthält, die Sie mit dem SDK nutzen möchten, notieren Sie sich den Namen des Dienstkontos. Sie geben den Namen an, wenn Sie das Dienstkonto diesem Projekt hinzufügen. Weitere Informationen finden Sie unter Dienstkonto zum Google Cloud-Projekt hinzufügen.

Dienstkonto zum Google Cloud-Projekt hinzufügen

Wenn Sie das Dienstkonto für ABAP SDK for Google Cloud in einem anderen Projekt als dem Projekt erstellt haben, das die Google Cloud APIs enthält, die Sie mit dem SDK verwenden möchten, müssen Sie das Dienstkonto dem Google Cloud-Projekt hinzufügen, das die Google Cloud APIs enthält.

Wenn Sie das Dienstkonto in dem Projekt erstellt haben, in dem sich die Google Cloud APIs befinden, können Sie diesen Schritt überspringen.

Führen Sie die folgenden Schritte aus, um dem Google Cloud-Projekt, das die Google Cloud APIs enthält, ein vorhandenes Dienstkonto hinzuzufügen:

  1. Öffnen Sie in der Google Cloud Console die Seite „IAM-Berechtigungen“.

    Zu "IAM-Berechtigungen"

  2. Prüfen Sie, ob der Name des Projekts, in dem die Google Cloud-Ziel-APIs enthalten sind, oben auf der Seite angezeigt wird. Beispiel:

    Berechtigungen für das Projekt "PROJECT_NAME"

    Ist das nicht der Fall, wechseln Sie das Projekt.

  3. Klicken Sie auf der IAM-Seite auf Zugriff erlauben. Das Dialogfeld Zugriff auf "PROJECT_NAME" erlauben wird geöffnet.

  4. Führen Sie im Dialogfeld Zugriff auf "PROJECT_NAME" erlauben die folgenden Schritte aus:

    1. Geben Sie im Feld Neue Hauptkonten den Namen des Dienstkontos an.
    2. Geben Sie im Feld Rolle auswählen eine entsprechende Rolle an. Damit beispielsweise Pub/Sub Themen und Abos ändern und Nachrichten veröffentlichen und verarbeiten kann, geben Sie die Rolle Pub/Sub Editor (roles/pubsub.editor) an.

      Weitere Informationen zu API-spezifischen vordefinierten Rollen finden Sie in der Referenz zu einfachen und vordefinierten IAM-Rollen.

    3. Fügen Sie nach Bedarf weitere Rollen für die API-Nutzung hinzu. Implementieren Sie Best Practices von Google, indem Sie das Prinzip der geringsten Berechtigung anwenden.

    4. Klicken Sie auf Speichern. Das Dienstkonto wird in der Liste der Projekthauptkonten auf der Seite IAM angezeigt.

Das Dienstkonto kann jetzt für den Zugriff auf Google Cloud APIs in diesem Projekt verwendet werden.

HTTPS-Verbindung einrichten

Der SAP-Anwendungsserver muss über HTTPS eine Verbindung zu Google Cloud APIs herstellen.

Prüfen Sie auf dem SAP-Host, ob Firewallregeln oder Proxys so konfiguriert sind, dass sie ausgehenden Traffic vom HTTPS-Port zu den erforderlichen Google Cloud APIs zulassen.

Insbesondere muss Ihr SAP-System auf die folgenden API-Endpunkte zugreifen können:

  • https://iamcredentials.googleapis.com
  • API-Endpunkte für die APIs, die Sie mit dem SDK nutzen möchten.

SAP-Konfigurationen erstellen

Erstellen Sie für die JWT-basierte Authentifizierung die erforderlichen SAP-Konfigurationen.

Zugriffseinstellungen in der Clientschlüsseltabelle angeben

Führen Sie die folgenden Schritte aus, um die Zugriffseinstellungen anzugeben:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren.

  3. Klicken Sie auf Neue Einträge.

  4. Geben Sie Werte für die folgenden Felder ein:

    Feld Beschreibung
    Google Cloud-Schlüsselname Geben Sie einen Namen für die Konfiguration des Clientschlüssels an.
    Name des Google Cloud-Dienstkontos

    Geben Sie den Namen des Dienstkontos im E-Mail-Adressformat an, das für das ABAP SDK for Google Cloud im Schritt Dienstkonto erstellen erstellt wurde. Beispiel: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Google Cloud-Bereich Geben Sie den Zugriffsbereich https://www.googleapis.com/auth/cloud-platform an.
    Projekt-ID Geben Sie die ID des Google Cloud-Projekts an, das Ihre Ziel-APIs enthält.
    Befehlsname Lassen Sie dieses Feld leer.
    Autorisierungsklasse Geben Sie die Autorisierungsklasse /GOOG/CL_AUTH_JWT an.
    Autorisierungsfeld Lassen Sie dieses Feld leer.
    Sekunden bis Tokenaktualisierung Lassen Sie dieses Feld leer.
    Autorisierungsparameter 1 Geben Sie den Namen der SSF-Anwendung an, die Sie im Abschnitt Neue SSF-Anwendung (Secure Store and Forward) erstellen erstellt haben.
  5. Speichern Sie den neuen Eintrag.

Neue RFC-Ziele erstellen

Erstellen Sie RFC-Ziele für die IAM API und andere APIs, die Sie mit dem ABAP SDK for Google Cloud aufnehmen möchten, z. B. Pub/Sub API v1.

Name des RFC-Ziels Hinweise
ZGOOG_IAMCREDENTIALS Dieses RFC-Ziel zielt auf die IAM API ab.
ZGOOG_OAUTH2_TOKEN Dieses RFC-Ziel zielt auf den Google Cloud-Endpunkt für die tokenbasierte Authentifizierung ab.
ZGOOG_PUBSUB_V1 Dieses RFC-Ziel ist auf die Pub/Sub API ausgerichtet.

Informationen zum Erstellen von RFC-Zielen finden Sie unter RFC-Ziele.

RFC-Ziele in der Dienstzuordnungstabelle angeben

Geben Sie in der Dienstzuordnungstabelle die RFC-Ziele für die IAM API und andere APIs an, die Sie mit dem ABAP SDK for Google Cloud aufnehmen möchten.

Führen Sie die folgenden Schritte aus, um die RFC-Ziele anzugeben:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Dienstzuordnung konfigurieren.

  3. Klicken Sie auf Neue Einträge.

  4. Geben Sie RFC-Ziele für die IAM API und andere APIs an, z. B:

    Name Dienstname RFC-Ziel
    Google Cloud-Schlüsselname iamcredentials:v1 ZGOOG_IAMCREDENTIALS
    Google Cloud-Schlüsselname googleapis.com/oauth2 ZGOOG_OAUTH2_TOKEN
    Google Cloud-Schlüsselname pubsub.googleapis.com ZGOOG_PUBSUB_V1
  5. Speichern Sie den neuen Eintrag.

Authentifizierungskonfiguration validieren

Führen Sie die folgenden Schritte aus, um die Authentifizierungskonfiguration zu validieren:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Klicken Sie auf ABAP SDK for Google Cloud > Dienstprogramme > Authentifizierungskonfiguration validieren.

  3. Geben Sie den Namen des Clientschlüssels ein.

  4. Klicken Sie auf Ausführen, um zu prüfen, ob der gesamte Ablauf erfolgreich konfiguriert wurde.

    Ein grünes Häkchen in der Spalte Status zeigt an, dass alle Konfigurationsschritte erfolgreich abgeschlossen wurden.

Support kontaktieren

Wenn Sie Hilfe bei der Behebung von Problemen mit dem ABAP SDK für Google Cloud benötigen, gehen Sie so vor: