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
- Sie haben das ABAP SDK for Google Cloud auf Ihrem System installiert. Im Codelab Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK (ABAP Platform Trial 1909 auf Google Cloud Platform installieren und ABAP SDK installieren) finden Sie Informationen zum Einrichten eines neuen Systems.
- Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird.
- Klicken Sie in der Cloud Console rechts oben auf „Cloud Shell aktivieren“:
- 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 Zoneus-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
- Rufen Sie Ihr Google Cloud-Projekt auf und klicken Sie rechts oben auf Cloud Shell aktivieren.
- 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:
- 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"
- 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.
8. Secret-Version hinzufügen
- 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.
- Klicken Sie rechts auf das Dreipunkt-Menü und wählen Sie Secret-Wert ansehen aus. Das gespeicherte Secret wird angezeigt.
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“:
- Geben Sie in der SAP-GUI den Transaktionscode SPRO ein.
- Klicken Sie auf SAP-Referenz-IMG.
- Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren.
- 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
- Melden Sie sich in Ihrem SAP-System an.
- Rufen Sie den Transaktionscode SE38 auf und erstellen Sie einen Bericht mit dem Namen „ZDEMO_ACCESS_SECRET“.
- Geben Sie im Pop-up-Fenster, das sich öffnet, die Details wie unten gezeigt ein und klicken Sie auf Speichern.
- 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.
- Speichern und aktivieren Sie das Berichtsprogramm.
- Führen Sie den Bericht aus (drücken Sie F8).
Bei erfolgreicher Ausführung sollte die Berichtsausgabe so aussehen:
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
- Löschen Sie die Compute-Instanz:
gcloud compute instances delete abap-trial-docker
- Löschen Sie die Firewallregeln:
gcloud compute firewall-rules delete sapmachine
- Löschen Sie das Dienstkonto:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com