1. Introduzione
In questo codelab sono elencati i passaggi per recuperare le credenziali o i secret dall'API Secret Manager di Google Cloud utilizzando l'SDK ABAP per Google Cloud.
In questo codelab vengono utilizzati i seguenti servizi Google Cloud:
- Secret Manager
- Cloud Shell
Cosa creerai
Eseguirai le seguenti operazioni:
- Abilitare l'API Secret Manager in un progetto Google Cloud.
- Creare un secret
- Aggiungi una versione del secret.
- Accedi/recupera un secret utilizzando ABAP SDK for Google Cloud.
In questo codelab, i passaggi per creare un secret e aggiungere una versione del secret vengono eseguiti tramite i comandi gcloud, ma possono essere eseguiti anche utilizzando la libreria client per Secret Manager fornita con l'SDK ABAP per Google Cloud.
2. Requisiti
- Un browser, ad esempio Chrome o Firefox.
- Un progetto Google Cloud con la fatturazione abilitata o crea un account di prova senza costi di 90 giorni per Google Cloud.
- GUI SAP (Windows o Java) installata nel sistema. Se SAP GUI è già installato sul tuo laptop, connettiti a SAP utilizzando l'indirizzo IP esterno della VM come IP del server applicazioni. Se utilizzi Mac, puoi anche installare SAP GUI per Java disponibile in questo link.
3. Prima di iniziare
- Hai installato ABAP SDK for Google Cloud sul tuo sistema. Per configurare un nuovo sistema, puoi fare riferimento al codelab Installare la versione di prova di ABAP Platform 1909 su Google Cloud Platform e installare l'SDK ABAP.
- Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud.
- In Cloud Console, fai clic su Attiva Cloud Shell nell'angolo in alto a destra:
- Esegui questi comandi per autenticarti per il tuo account e impostare il progetto predefinito su
abap-sdk-poc
. La zonaus-west4-b
viene utilizzata come esempio. Se necessario, modifica il progetto e la zona nei seguenti comandi in base alle tue preferenze.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. Panoramica
Ecco una rapida panoramica di alcune delle entità di Secret Manager con cui lavorerai in questo codelab:
- Secret: un secret è un oggetto globale del progetto che contiene una raccolta di metadati e versioni del secret.
- Versione del secret: una versione del secret archivia i dati effettivi del secret, come chiavi API, password o certificati.
5. Abilitare Secret Manager nel tuo progetto Google Cloud
- Vai al tuo progetto Google Cloud e fai clic su Attiva Cloud Shell nell'angolo in alto a destra.
- Esegui questo comando per abilitare l'API Cloud Secret Manager nel tuo progetto Google Cloud.
gcloud services enable secretmanager.googleapis.com
Ora dovresti aver abilitato l'API Secret Manager nel tuo progetto Google Cloud.
6. Crea un service account con ruoli utente Secret Manager
Per creare un service account con i ruoli richiesti:
- Esegui questo comando nel terminale Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- Aggiungi i ruoli richiesti al service account creato nel passaggio precedente per creare un secret, aggiungere una versione del secret e accedere a una versione del secret.
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'
I comandi precedenti utilizzano abap-sdk-poc
come segnaposto per il progetto Google Cloud. Sostituisci abap-sdk-poc
con l'ID progetto.
- Per verificare che il ruolo sia stato aggiunto, vai alla pagina IAM. Il service account che hai creato dovrebbe essere elencato insieme al ruolo che gli è stato assegnato.
7. Crea un secret
- In Cloud Shell, esegui questo comando per creare un secret con il nome "demo-secret" per questo codelab:
gcloud secrets create demo-secret \
--replication-policy="automatic"
Dovresti essere in grado di vedere un secret creato nel tuo progetto Google Cloud, come mostrato di seguito.
8. Aggiungi una versione del secret
- In Cloud Shell, esegui questo comando per aggiungere una versione del secret al secret "demo-secret".
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
Viene creata una versione del secret. Per visualizzare i dettagli, fai clic su "demo-secret" .
- Fai clic sui tre puntini a destra e seleziona Visualizza valore secret. Viene visualizzato il secret archiviato.
9. Crea configurazioni SDK in SAP
Ora che hai configurato i prerequisiti lato Google Cloud, possiamo procedere con la configurazione lato SAP. Per la configurazione relativa ad autenticazione e connettività, l'ABAP SDK for Google Cloud utilizza la tabella /GOOG/CLIENT_KEY.
Per mantenere la configurazione nella tabella /GOOG/CLIENT_KEY, segui questi passaggi:
- Nella GUI SAP, inserisci il codice transazione SPRO.
- Fai clic su SAP Reference IMG.
- Fai clic su ABAP SDK for Google Cloud > Impostazioni di base > Configura chiave client.
- Mantieni i seguenti valori nei campi:
Campo | Descrizione |
Nome della chiave Google Cloud | SECRET_MANAGER_DEMO |
Nome dell'account di servizio Google Cloud | abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com |
Ambito Google Cloud | https://www.googleapis.com/auth/cloud-platform |
Identificatore progetto Google Cloud | <<ID del tuo progetto Google Cloud>> |
Authorization Class | /GOOG/CL_AUTH_GOOGLE |
Lascia vuoti gli altri campi.
10. Recuperare il segreto utilizzando l'SDK
- Accedi al tuo sistema SAP.
- Vai al codice di transazione SE38 e crea un report con il nome "ZDEMO_ACCESS_SECRET".
- Nel popup visualizzato, fornisci i dettagli come mostrato di seguito e fai clic su Salva.
- Nel popup successivo, seleziona Oggetto locale o fornisci un nome di pacchetto, a seconda dei casi.
- Nell'editor ABAP, aggiungi il seguente codice:
* 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.
- Salva e attiva il programma di segnalazione.
- Esegui il report (premi F8).
Se l'esecuzione va a buon fine, dovresti visualizzare l'output del report come mostrato di seguito:
11. Complimenti
Complimenti! Hai recuperato correttamente un secret archiviato in Secret Manager di Google Cloud utilizzando ABAP SDK for Google Cloud.
Google Cloud Secret Manager ha anche altre funzionalità, ad esempio:
- Applicazione di patch a un secret
- Eliminazione di una versione di un secret
- Eliminazione di un secret
Puoi richiamare queste funzionalità di Secret Manager tramite ABAP SDK for Google Cloud dalle tue applicazioni SAP.
12. Esegui la pulizia
Se non vuoi continuare con i codelab aggiuntivi relativi all'SDK ABAP per Google Cloud, procedi con la pulizia.
Eliminare il progetto
- Elimina il progetto Google Cloud:
gcloud projects delete abap-sdk-poc
Eliminare singole risorse
- Elimina l'istanza di calcolo:
gcloud compute instances delete abap-trial-docker
- Elimina le regole firewall:
gcloud compute firewall-rules delete sapmachine
- Elimina il account di servizio:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com