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

1. Wprowadzenie

W tym laboratorium kodu znajdziesz instrukcje pobierania danych logowania lub obiektów tajnych z interfejsu Google Cloud Secret Manager API za pomocą pakietu ABAP SDK dla Google Cloud.

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

  • Secret Manager
  • Cloud Shell

Co utworzysz

Wykonaj te czynności:

  • włączyć interfejs Secret Manager API w projekcie Google Cloud;
  • tworzenie obiektu tajnego,
  • Dodaj wersję obiektu tajnego.
  • Uzyskaj dostęp do tajnego klucza lub go pobierz za pomocą pakietu ABAP SDK for Google Cloud.

W tym ćwiczeniu kroki tworzenia obiektu tajnego i dodawania jego wersji są wykonywane za pomocą poleceń gcloud, ale można to też zrobić za pomocą biblioteki klienta usługi Secret Manager, która jest częścią pakietu ABAP SDK dla Google Cloud.

2. Wymagania

  • przeglądarkę, np. Chrome lub Firefox;
  • Projekt Google Cloud z włączonymi płatnościami lub utwórz konto na 90-dniowy okres próbny w Google Cloud Platform.
  • interfejs graficzny SAP (wersja na system Windows lub Java) zainstalowany w systemie; Jeśli interfejs 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 używasz komputera Mac, możesz też zainstalować interfejs SAP dla Javy, który jest dostępny pod tym linkiem.

3. Zanim zaczniesz

6757b2fb50ddcc2d.png

  • Uruchom te polecenia, aby uwierzytelnić swoje konto i ustawić projekt domyślny jako abap-sdk-poc. W tym przykładzie użyto strefy us-west4-b. W razie potrzeby zmień projekt i strefę w poniższych poleceniach zgodnie ze swoimi preferencjami.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Omówienie

Oto krótki opis niektórych elementów usługi Secret Manager, z którymi będziesz pracować w tym ćwiczeniu:

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

5. Włączanie usługi 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, uruchom 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żytkowników w usłudze 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. Aby utworzyć obiekt tajny, dodać jego wersję i uzyskać do niej dostęp, dodaj do konta usługi utworzonego w poprzednim kroku wymagane role.
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 abap-sdk-poc jest miejscem zastępczym dla projektu Google Cloud. Zastąp abap-sdk-poc identyfikatorem projektu.

  • Aby sprawdzić, czy dodano rolę, otwórz stronę IAM. Utworzone konto usługi powinno być wymienione wraz z przypisaną do niego rolą.

7. Utwórz obiekt tajny

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

Powinieneś zobaczyć tajny klucz utworzony w projekcie Google Cloud, jak pokazano poniżej.

99a318dbdd37af4e.png

8. Dodawanie wersji obiektu tajnego

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

Tworzona jest wersja tajna. Aby wyświetlić szczegóły, kliknij „demo-secret”.

bbf6b9f2f9c4340a.png

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

6f3afd0ac25445bf.png

9. Tworzenie konfiguracji pakietu SDK w SAP

Ponieważ masz już skonfigurowane wymagania wstępne po stronie Google Cloud, możemy przejść do konfiguracji po stronie SAP. W przypadku konfiguracji związanej z uwierzytelnianiem i łącznością pakiet ABAP SDK for Google Cloud używa tabeli /GOOG/CLIENT_KEY.

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

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

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 informacje, jak pokazano poniżej, i kliknij Zapisz.

b1ef7c7744ceb5ce.png

  1. W wyskakującym okienku wybierz 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 klawisz F8).

Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:

24acec0fc2d4d18b.png

11. Gratulacje

Gratulacje! Udało Ci się pobrać tajne dane zapisane w usłudze Google Cloud Platform Secret Manager za pomocą pakietu ABAP SDK for Google Cloud.

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

  • Poprawianie obiektu tajnego
  • Niszczenie wersji obiektu tajnego
  • Usuwanie obiektu tajnego

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

12. Czyszczenie danych

Jeśli nie chcesz kontynuować dodatkowych samouczków związanych z pakietem ABAP SDK dla Google Cloud, przejdź do 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