Recuperare le credenziali/gli secret da Google Cloud Secret Manager con l'SDK ABAP per Google Cloud

1. Introduzione

In questo codelab abbiamo elencato i passaggi per recuperare le credenziali o i secret dall'API Google Cloud Secret Manager utilizzando l'SDK ABAP per Google Cloud.

In questo codelab vengono utilizzati i seguenti servizi Google Cloud:

  • Secret Manager
  • Cloud Shell

Cosa creerai

Dovrai eseguire le seguenti operazioni:

  • Abilita l'API Secret Manager in un progetto Google Cloud.
  • Creare un secret
  • Aggiungi una versione del secret.
  • Accedi/recupera un segreto utilizzando ABAP SDK for Google Cloud.

In questo codelab, i passaggi per creare un segreto e aggiungere una versione del segreto vengono eseguiti tramite i comandi gcloud, ma è possibile farlo 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 la piattaforma Google Cloud.
  • SAP GUI (Windows o Java) installato nel sistema. Se SAP GUI è già installato sul tuo laptop, connettiti a SAP utilizzando l'indirizzo IP esterno della VM come indirizzo IP del server di applicazioni. Se utilizzi un Mac, puoi anche installare SAP GUI per Java disponibile in questo link.

3. Prima di iniziare

6757b2fb50ddcc2d.png

  • Esegui i seguenti comandi per autenticarti per il tuo account e impostare il progetto predefinito su abap-sdk-poc. La zona us-west4-b viene utilizzata come esempio. Se necessario, modifica il progetto e la zona nei comandi seguenti 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 breve 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 di secret.
  • Versione del secret: una versione del secret memorizza i dati effettivi del secret, ad esempio chiavi API, password o certificati.

5. Abilita Secret Manager nel tuo progetto Google Cloud

  1. Vai al tuo progetto Google Cloud e fai clic su Attiva Cloud Shell nell'angolo in alto a destra.

8d15f753321c53e6.png

  1. Esegui il seguente comando per abilitare l'API Cloud Secret Manager nel tuo progetto Google Cloud.
gcloud services enable secretmanager.googleapis.com

Ora l'API Secret Manager dovrebbe essere abilitata nel tuo progetto Google Cloud.

6. Creare un account di servizio con ruoli utente di Secret Manager

Per creare un account di servizio con i ruoli richiesti, svolgi i seguenti passaggi:

  1. Esegui questo comando nel terminale Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Aggiungi i ruoli richiesti all'account di servizio 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 del tuo progetto.

  • Per verificare che il ruolo sia stato aggiunto, vai alla pagina IAM. L'account di servizio che hai creato dovrebbe essere elencato insieme al ruolo che gli è stato assegnato.

7. Crea un secret

  • In Cloud Shell, esegui il seguente comando per creare un secret con il nome "demo-secret" per questo codelab:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Dovresti riuscire a vedere un segreto creato nel tuo progetto Google Cloud, come mostrato di seguito.

99a318dbdd37af4e.png

8. Aggiungi una versione del secret

  1. In Cloud Shell, esegui il seguente 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" .

bbf6b9f2f9c4340a.png

  1. Fai clic sui tre puntini a destra e seleziona Visualizza valore secret. Viene visualizzato il secret archiviato.

6f3afd0ac25445bf.png

9. Creare configurazioni dell'SDK in SAP

Ora che hai configurato i prerequisiti lato Google Cloud, possiamo procedere con la configurazione lato SAP. Per la configurazione relativa all'autenticazione e alla connettività, l'ABAP SDK for Google Cloud utilizza la tabella /GOOG/CLIENT_KEY.

Per mantenere la configurazione nella tabella /GOOG/CLIENT_KEY, svolgi i seguenti passaggi:

  1. In SAP GUI, inserisci il codice transazione SPRO.
  2. Fai clic su SAP Reference IMG (Immagine di riferimento SAP).
  3. Fai clic su ABAP SDK for Google Cloud > Impostazioni di base > Configura chiave client.
  4. Mantieni i seguenti valori per i 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 del progetto Google Cloud

<<Il tuo ID progetto Google Cloud>>

Classe di autorizzazione

/GOOG/CL_AUTH_GOOGLE

Lascia vuoti gli altri campi.

10. Recuperare il segreto utilizzando l'SDK

  1. Accedi al sistema SAP.
  2. Vai al codice transazione SE38 e crea un report con il nome "ZDEMO_ACCESS_SECRET".
  3. Nella finestra popup visualizzata, fornisci i dettagli come mostrato di seguito e fai clic su Salva.

b1ef7c7744ceb5ce.png

  1. Nel popup successivo, seleziona Oggetto locale o fornisci un nome del 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.
  1. Salva e attiva il programma di report.
  2. Esegui il report (premi F8).

Al termine dell'esecuzione, dovresti vedere l'output del report come mostrato di seguito:

24acec0fc2d4d18b.png

11. Complimenti

Complimenti! Hai recuperato correttamente un segreto archiviato in Secret Manager della piattaforma Google Cloud utilizzando l'SDK ABAP per Google Cloud.

Google Cloud Secret Manager offre anche altre funzionalità, ad esempio:

  • Applicazione di patch a un secret
  • Eliminazione di una versione del secret
  • Eliminazione di un secret

Puoi richiamare queste funzionalità di Secret Manager tramite l'SDK ABAP per 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

  1. Elimina l'istanza di calcolo:
gcloud compute instances delete abap-trial-docker
  1. Elimina le regole firewall:
gcloud compute firewall-rules delete sapmachine
  1. Elimina l'account di servizio:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com