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
- Ein Browser, z. B. Chrome oder Firefox.
- Ein Google Cloud-Projekt mit aktivierter Abrechnung oder ein kostenloses Testkonto für 90 Tage für die Google Cloud Platform erstellen
- SAP GUI (Windows oder Java) auf Ihrem System installiert Wenn die SAP GUI bereits auf Ihrem Laptop installiert ist, stellen Sie eine Verbindung zu SAP her, indem Sie die externe IP-Adresse der VM als IP-Adresse des Anwendungsservers verwenden. Wenn Sie einen Mac verwenden, können Sie auch die SAP GUI for 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 der Google Cloud Platform installieren und ABAP SDK installieren) erfahren Sie, wie Sie ein neues System einrichten.
- 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 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 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
- 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 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.
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 anzeigen aus. Das gespeicherte Secret wird angezeigt.
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:
- 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.
- 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
- 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 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 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 die Taste F8).
Nach erfolgreicher Ausführung sollte die Berichtsausgabe wie unten dargestellt aussehen:
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
- 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