Pobieranie danych logowania i kluczy z Google Cloud Secret Manager za pomocą pakietu ABAP SDK for Google Cloud

1. Wprowadzenie

W tym module znajdziesz instrukcje pobierania danych logowania lub kluczy tajnych z interfejsu Google Cloud Secret Manager API za pomocą pakietu ABAP SDK for Google Cloud.

W tym module używane są te usługi Google Cloud:

  • Secret Manager
  • Cloud Shell

Co utworzysz

Wykonasz te czynności:

  • włączyć Secret Manager API w projekcie Google Cloud;
  • tworzenie obiektu tajnego,
  • Dodaj wersję obiektu tajnego.
  • Dostęp do tajnego klucza i pobieranie go za pomocą pakietu ABAP SDK for Google Cloud.

W tym laboratorium tworzenie obiektu tajnego i dodawanie jego wersji odbywa się za pomocą poleceń gcloud, ale można to też zrobić przy użyciu biblioteki klienta Secret Manager dostarczonej z pakietem ABAP SDK dla Google Cloud.

2. Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • Projekt Google Cloud z włączonym rozliczeniem lub utwórz 90-dniowe konto próbne w Google Cloud Platform.
  • SAP GUI (Windows lub Java) zainstalowany w systemie. Jeśli SAP GUI jest już zainstalowany na laptopie, połącz się z SAP, używając zewnętrznego adresu IP maszyny wirtualnej jako adresu IP serwera aplikacji. Jeśli korzystasz z komputera Mac, możesz też zainstalować interfejs SAP GUI dla Javy, który jest dostępny pod tym linkiem.

3. Zanim zaczniesz

6757b2fb50ddcc2d.png

  • Uruchom te polecenia, aby uwierzytelnić się na koncie i ustawić domyślny projekt na abap-sdk-poc. Jako przykładu używamy strefy us-west4-b. W razie potrzeby zmień projekt i strefę w tych poleceniach zgodnie ze swoimi preferencjami.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Przegląd

Oto krótki przegląd niektórych elementów usługi Secret Manager, z którymi będziesz pracować w ramach tych ćwiczeń:

  • Obiekt tajny – obiekt tajny to obiekt globalny projektu, który zawiera zbiór metadanych i wersji obiektu tajnego.
  • Wersja obiektu tajnego – wersja obiektu tajnego przechowuje rzeczywiste dane obiektu tajnego, takie jak klucze interfejsu API, hasła lub certyfikaty.

5. Włączanie Secret Manager w projekcie Google Cloud

  1. Otwórz projekt Google Cloud i w prawym górnym rogu kliknij Aktywuj Cloud Shell.

8d15f753321c53e6.png

  1. Aby włączyć interfejs Cloud Secret Manager API w projekcie Google Cloud, wykonaj to polecenie:
gcloud services enable secretmanager.googleapis.com

Interfejs Secret Manager API powinien być teraz włączony w projekcie Google Cloud.

6. Tworzenie konta usługi z rolami użytkownika usługi Secret Manager

Aby utworzyć konto usługi z wymaganymi rolami, wykonaj te czynności:

  1. Uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Dodaj do konta usługi utworzonego w poprzednim kroku wymagane role, aby utworzyć obiekt tajny, dodać wersję obiektu tajnego i uzyskać do niej dostęp.
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'

W powyższych poleceniach symbol abap-sdk-poc jest symbolem zastępczym projektu Google Cloud. Zastąp abap-sdk-poc identyfikatorem projektu.

  • Aby sprawdzić, czy rola została dodana, otwórz stronę IAM. Utworzone konto usługi powinno być widoczne wraz z przypisaną do niego rolą.

7. Utwórz obiekt tajny

  • Aby utworzyć na potrzeby tego modułu obiekt tajny o nazwie „demo-secret”, uruchom w Cloud Shell to polecenie:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

W projekcie Google Cloud powinien być widoczny utworzony klucz tajny, jak pokazano poniżej.

99a318dbdd37af4e.png

8. Dodawanie wersji obiektu tajnego

  1. W Cloud Shell uruchom to polecenie, aby dodać wersję obiektu tajnego do obiektu tajnego „demo-secret”:
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Zostanie utworzona wersja obiektu tajnego. Aby wyświetlić szczegóły, kliknij „demo-secret”.

bbf6b9f2f9c4340a.png

  1. Kliknij 3 kropki po prawej stronie i wybierz Wyświetl wartość obiektu tajnego. Wyświetli się zapisany obiekt tajny.

6f3afd0ac25445bf.png

9. Tworzenie konfiguracji pakietu SDK w SAP

Po skonfigurowaniu wymagań wstępnych po stronie Google Cloud możemy przejść do konfiguracji po stronie SAP. W przypadku konfiguracji związanej z uwierzytelnianiem i łącznością pakiet SDK ABAP for Google Cloud korzysta z tabeli /GOOG/CLIENT_KEY.

Aby zachować konfigurację w tabeli /GOOG/CLIENT_KEY, wykonaj te czynności:

  1. W SAP GUI wpisz kod transakcji SPRO.
  2. Kliknij SAP Reference IMG (SAP Reference IMG).
  3. Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
  4. W polach zachowaj te wartości:

Pole

Opis

Nazwa klucza Google Cloud

SECRET_MANAGER_DEMO

Nazwa konta usługi Google Cloud

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

Zakres Google Cloud

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

Identyfikator projektu Google Cloud

<<Identyfikator Twojego projektu Google Cloud>>

Klasa autoryzacji

/GOOG/CL_AUTH_GOOGLE

Pozostałe pola pozostaw puste.

10. Pobieranie obiektu tajnego za pomocą pakietu SDK

  1. Zaloguj się w systemie SAP.
  2. Otwórz kod transakcji SE38 i utwórz raport o nazwie „ZDEMO_ACCESS_SECRET”.
  3. W wyświetlonym okienku podaj szczegóły jak poniżej i kliknij Zapisz.

b1ef7c7744ceb5ce.png

  1. W następnym wyskakującym okienku wybierz Local Object (Obiekt lokalny) lub podaj nazwę pakietu.
  • W edytorze ABAP dodaj ten kod:
* 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. Zapisz i aktywuj program raportowania.
  2. Uruchom raport (naciśnij F8).

Po pomyślnym wykonaniu powinien wyświetlić się raport podobny do tego:

24acec0fc2d4d18b.png

11. Gratulacje

Gratulacje! Udało Ci się pobrać klucz tajny przechowywany w Google Cloud Platform Secret Manager za pomocą ABAP SDK for Google Cloud.

Usługa Google Cloud Secret Manager ma też inne funkcje, takie jak:

  • Patchowanie obiektu tajnego
  • Niszczenie wersji obiektu tajnego
  • Usuwanie obiektu tajnego

Możesz wywoływać te funkcje Secret Managera za pomocą pakietu ABAP SDK for Google Cloud z aplikacji SAP.

12. Czyszczenie danych

Jeśli nie chcesz kontynuować pracy z dodatkowymi ćwiczeniami dotyczącymi pakietu ABAP SDK do Google Cloud, przejdź do sekcji czyszczenia.

Usuwanie projektu

  • Usuń projekt Google Cloud:
gcloud projects delete abap-sdk-poc

Usuwanie poszczególnych zasobów

  1. Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
  1. Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
  1. Usuń konto usługi:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com