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
- Na Twoim systemie jest zainstalowany pakiet ABAP SDK for Google Cloud. Aby skonfigurować nowy system, zapoznaj się z samouczkiem Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK (Instalowanie wersji próbnej platformy ABAP 1909 na Google Cloud Platform i instalowanie pakietu ABAP SDK).
- Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.
- W Cloud Console kliknij Aktywuj Cloud Shell w prawym górnym rogu:
- Uruchom te polecenia, aby uwierzytelnić się na koncie i ustawić domyślny projekt na
abap-sdk-poc
. Jako przykładu używamy strefyus-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
- Otwórz projekt Google Cloud i w prawym górnym rogu kliknij Aktywuj Cloud Shell.
- 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:
- Uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- 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.
8. Dodawanie wersji obiektu tajnego
- 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”.
- Kliknij 3 kropki po prawej stronie i wybierz Wyświetl wartość obiektu tajnego. Wyświetli się zapisany obiekt tajny.
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:
- W SAP GUI wpisz kod transakcji SPRO.
- Kliknij SAP Reference IMG (SAP Reference IMG).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
- 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
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji SE38 i utwórz raport o nazwie „ZDEMO_ACCESS_SECRET”.
- W wyświetlonym okienku podaj szczegóły jak poniżej i kliknij Zapisz.
- 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.
- Zapisz i aktywuj program raportowania.
- Uruchom raport (naciśnij F8).
Po pomyślnym wykonaniu powinien wyświetlić się raport podobny do tego:
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
- Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
- Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
- Usuń konto usługi:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com