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
- W systemie musisz mieć zainstalowany pakiet ABAP SDK for Google Cloud. Aby skonfigurować nowy system, możesz skorzystać z codelab Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK (Instalowanie wersji próbnej platformy ABAP 1909 w Google Cloud Platform i instalowanie pakietu ABAP SDK).
- Użyjesz Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.
- W Cloud Console w prawym górnym rogu kliknij Aktywuj Cloud Shell:
- Uruchom te polecenia, aby uwierzytelnić swoje konto i ustawić projekt domyślny jako
abap-sdk-poc
. W tym przykładzie użyto strefyus-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
- 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, 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:
- Uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- 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.
8. Dodawanie wersji obiektu tajnego
- 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”.
- Kliknij 3 kropki po prawej stronie i wybierz Wyświetl wartość obiektu tajnego. Pojawi się przechowywany obiekt tajny.
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:
- W interfejsie graficznym SAP wpisz kod transakcji SPRO.
- Kliknij SAP Reference IMG (Referencyjny obraz SAP).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
- 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
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji SE38 i utwórz raport o nazwie „ZDEMO_ACCESS_SECRET”.
- W wyświetlonym okienku podaj informacje, jak pokazano poniżej, i kliknij Zapisz.
- 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.
- Zapisz i aktywuj program raportowania.
- Uruchom raport (naciśnij klawisz F8).
Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:
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
- 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