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

1. Einführung

In diesem Codelab finden Sie eine Anleitung zum Abrufen von Anmeldedaten oder Geheimnissen aus der Google Cloud Secret Manager API mit dem ABAP SDK for Google Cloud.

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.
  • Über das ABAP SDK for Google Cloud auf ein Secret zugreifen/es abrufen

In diesem Codelab werden die Schritte zum Erstellen eines Secrets und zum Hinzufügen einer Secret-Version mit gcloud-Befehlen ausgeführt. Sie können dies aber auch mit der Clientbibliothek für Secret Manager tun, die im ABAP SDK for Google Cloud enthalten ist.

2. Voraussetzungen

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 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 finden Sie einen kurzen Überblick über einige der Entitäten von Secret Manager, 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 obigen 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 zugewiesenen Rolle aufgeführt sein.

7. Secret erstellen

  • Führen Sie in Cloud Shell den folgenden Befehl aus, um ein Secret mit dem Namen „demo-secret“ für dieses Codelab 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 anzeigen 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 wir mit der Konfiguration auf SAP-Seite fortfahren. Für die 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. Achten Sie auf die folgenden Werte in den Feldern:

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 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 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 die Taste F8).

Nach erfolgreicher Ausführung sollte die Berichtsausgabe wie unten dargestellt aussehen:

24acec0fc2d4d18b.png

11. Glückwunsch

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

Google Cloud Secret Manager bietet auch weitere 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 der Bereinigung fort.

Projekt löschen

  • So löschen Sie das Google Cloud-Projekt:
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