Anmeldedaten/Secrets mit dem ABAP SDK for Google Cloud aus dem Google Cloud Secret Manager abrufen

1. Einführung

In diesem Codelab wird beschrieben, wie Sie Anmeldedaten oder Secrets mit dem ABAP SDK for Google Cloud aus der Google Cloud Secret Manager API abrufen.

In diesem Codelab werden die folgenden Google Cloud-Dienste verwendet:

  • Secret Manager
  • Cloud Shell

Aufgaben

Sie führen folgende Schritte aus:

  • Aktivieren Sie die Secret Manager API in einem Google Cloud-Projekt.
  • Secret erstellen
  • Fügen Sie eine Secret-Version hinzu.
  • Auf ein Secret zugreifen/ein Secret abrufen mit dem ABAP SDK for Google Cloud

In diesem Codelab werden die Schritte zum Erstellen eines Secrets und zum Hinzufügen einer Secret-Version über gcloud-Befehle ausgeführt. Dies kann aber auch mit der Clientbibliothek für Secret Manager erfolgen, die im ABAP SDK for Google Cloud enthalten ist.

2. Voraussetzungen

  • Ein Browser, z. B. Chrome oder Firefox.
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung oder ein kostenloses 90‑Tage-Testkonto für die Google Cloud Platform.
  • SAP GUI (Windows oder Java) ist auf Ihrem System installiert. Wenn SAP GUI bereits auf Ihrem Laptop installiert ist, stellen Sie eine Verbindung zu SAP her und verwenden Sie dabei die externe IP-Adresse der VM als IP-Adresse des Anwendungsservers. Wenn Sie einen Mac verwenden, können Sie auch die SAP GUI für Java installieren, die über diesen Link verfügbar ist.

3. Hinweis

6757b2fb50ddcc2d.png

  • Führen Sie die folgenden Befehle aus, um sich für Ihr Konto zu authentifizieren und das Standardprojekt auf abap-sdk-poc festzulegen. Als Beispiel wird die Zone us-west4-b verwendet. Ändern Sie bei Bedarf das Projekt und die Zone in den folgenden Befehlen entsprechend Ihren Anforderungen.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Übersicht

Hier ist ein kurzer Überblick über einige der Secret Manager-Entitäten, mit denen Sie in diesem Codelab arbeiten werden:

  • Secret: Ein Secret ist ein projektweites Objekt, das eine Sammlung von Metadaten und Secret-Versionen enthält.
  • Secret-Version: In einer Secret-Version werden die eigentlichen Secret-Daten wie API-Schlüssel, Passwörter oder Zertifikate gespeichert.

5. Secret Manager in Ihrem Google Cloud-Projekt aktivieren

  1. Rufen Sie Ihr Google Cloud-Projekt auf und klicken Sie rechts oben auf Cloud Shell aktivieren.

8d15f753321c53e6.png

  1. Führen Sie den folgenden Befehl aus, um die Cloud Secret Manager API in Ihrem Google Cloud-Projekt zu aktivieren.
gcloud services enable secretmanager.googleapis.com

Die Secret Manager API sollte jetzt in Ihrem Google Cloud-Projekt aktiviert sein.

6. Dienstkonto mit Secret Manager-Nutzerrollen erstellen

So erstellen Sie ein Dienstkonto mit den erforderlichen Rollen:

  1. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Fügen Sie dem im vorherigen Schritt erstellten Dienstkonto die erforderlichen Rollen hinzu, um ein Secret zu erstellen, eine Secret-Version hinzuzufügen und auf eine Secret-Version zuzugreifen.
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.secrets.create'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.add'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.access'

In den oben genannten Befehlen wird abap-sdk-poc als Platzhalter für das Google Cloud-Projekt verwendet. Ersetzen Sie abap-sdk-poc durch Ihre Projekt-ID.

  • Rufen Sie die Seite IAM auf, um zu prüfen, ob die Rolle hinzugefügt wurde. Das von Ihnen erstellte Dienstkonto sollte zusammen mit der ihm zugewiesenen Rolle aufgeführt sein.

7. Secret erstellen

  • Führen Sie in Cloud Shell den folgenden Befehl aus, um für dieses Codelab ein Secret mit dem Namen „demo-secret“ zu erstellen:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Sie sollten ein Secret sehen, das in Ihrem Google Cloud-Projekt erstellt wurde, wie unten dargestellt.

99a318dbdd37af4e.png

8. Secret-Version hinzufügen

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um dem Secret „demo-secret“ eine Secret-Version hinzuzufügen.
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Eine Secret-Version wird erstellt. Klicken Sie auf „demo-secret“, um die Details aufzurufen.

bbf6b9f2f9c4340a.png

  1. Klicken Sie rechts auf das Dreipunkt-Menü und wählen Sie Secret-Wert ansehen aus. Das gespeicherte Secret wird angezeigt.

6f3afd0ac25445bf.png

9. SDK-Konfigurationen in SAP erstellen

Nachdem Sie die Voraussetzungen auf Google Cloud-Seite eingerichtet haben, können Sie mit der Konfiguration auf SAP-Seite fortfahren. Zur Authentifizierung und für die Konfiguration von Verbindungen verwendet das ABAP SDK for Google Cloud die Tabelle /GOOG/CLIENT_KEY.

So pflegen Sie die Konfiguration in der Tabelle „/GOOG/CLIENT_KEY“:

  1. Geben Sie in der SAP-GUI den Transaktionscode SPRO ein.
  2. Klicken Sie auf SAP-Referenz-IMG.
  3. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren.
  4. Geben Sie die folgenden Werte für die Felder an:

Feld

Beschreibung

Google Cloud-Schlüsselname

SECRET_MANAGER_DEMO

Name des Google Cloud-Dienstkontos

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud-Bereich

https://www.googleapis.com/auth/cloud-platform

Google Cloud-Projekt-ID

<<Ihre Google Cloud-Projekt-ID>>

Autorisierungsklasse

/GOOG/CL_AUTH_GOOGLE

Lassen Sie die anderen Felder leer.

10. Secret mit dem SDK abrufen

  1. Melden Sie sich in Ihrem SAP-System an.
  2. Rufen Sie den Transaktionscode SE38 auf und erstellen Sie einen Bericht mit dem Namen „ZDEMO_ACCESS_SECRET“.
  3. Geben Sie im Pop-up-Fenster, das sich öffnet, die Details wie unten gezeigt ein und klicken Sie auf Speichern.

b1ef7c7744ceb5ce.png

  1. Wählen Sie im nächsten Pop-up-Fenster entweder Lokales Objekt aus oder geben Sie einen Paketnamen an.
  • Fügen Sie im ABAP-Editor den folgenden Code ein:
* Data declarations
 DATA:
   lv_p_projects_id TYPE string,
   lv_p_secrets_id  TYPE string,
   lv_p_versions_id TYPE string.

 TRY.
* Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_secretmgr_v1( iv_key_name = 'SECRET_MANAGER_DEMO' ).

* Populate relevant parameters
 lv_p_projects_id = lo_client->gv_project_id.
 lv_p_secrets_id = 'demo-secret'.
 lv_p_versions_id = 'latest'.

* Call API method: secretmanager.projects.secrets.versions.access
     lo_client->access_versions(
       EXPORTING
         iv_p_projects_id = lv_p_projects_id
         iv_p_secrets_id  = lv_p_secrets_id
         iv_p_versions_id = lv_p_versions_id
       IMPORTING
         es_output        = DATA(ls_output)
         ev_ret_code      = DATA(lv_ret_code)
         ev_err_text      = DATA(lv_err_text)
         es_err_resp      = DATA(ls_err_resp) ).
     IF lo_client->is_success( lv_ret_code ).
      cl_http_utility=>if_http_utility~decode_base64(
        EXPORTING
          encoded = ls_output-payload-data
        RECEIVING
          decoded = DATA(lv_decoded_secret) ).
       DATA(lv_msg) = 'Secret data fetched successfully, Decoded Secret: ' && lv_decoded_secret.
      cl_demo_output=>display( lv_msg ).
     ELSE.
       lv_msg = lv_ret_code && ':' && lv_err_text.
       cl_demo_output=>display( lv_msg ).

     ENDIF.

* Close HTTP Connection
     lo_client->close( ).

   CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.

 ENDTRY.
  1. Speichern und aktivieren Sie das Berichtsprogramm.
  2. Führen Sie den Bericht aus (drücken Sie F8).

Bei erfolgreicher Ausführung sollte die Berichtsausgabe so aussehen:

24acec0fc2d4d18b.png

11. Glückwunsch

Glückwunsch! Sie haben erfolgreich ein in Google Cloud Platform Secret Manager gespeichertes Secret mit dem ABAP SDK for Google Cloud abgerufen.

Google Cloud Secret Manager bietet auch andere Funktionen, z. B.:

  • Secret patchen
  • Secret-Version löschen
  • Secret löschen

Sie können diese Secret Manager-Funktionen über das ABAP SDK for Google Cloud aus Ihren SAP-Anwendungen aufrufen.

12. Bereinigen

Wenn Sie nicht mit den zusätzlichen Codelabs zum ABAP SDK for Google Cloud fortfahren möchten, fahren Sie mit dem Bereinigen fort.

Projekt löschen

  • Google Cloud-Projekt löschen:
gcloud projects delete abap-sdk-poc

Einzelne Ressourcen löschen

  1. Löschen Sie die Compute-Instanz:
gcloud compute instances delete abap-trial-docker
  1. Löschen Sie die Firewallregeln:
gcloud compute firewall-rules delete sapmachine
  1. Löschen Sie das Dienstkonto:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com