Questo documento descrive come eseguire l'autenticazione in Google Cloud utilizzando i token tramite la federazione delle identità di Workload. Con la federazione delle identità per i carichi di lavoro, puoi concedere ai carichi di lavoro SAP on-premise o multi-cloud l'accesso alle risorse Google Cloud senza utilizzare una chiave dell'account di servizio.
La Federazione delle identità per i carichi di lavoro segue la specifica relativa allo scambio di token OAuth 2.0. Fornisci una credenziale del tuo IdP al Security Token Service, che verifica l'identità sulla credenziale e restituisce un token di accesso federato in cambio. Puoi utilizzare questo token di accesso federato direttamente con servizi supportati o per simulare l'identità di un account di servizio e ottenere un token di accesso di breve durata. Il token di accesso a breve termine ti consente di chiamare qualsiasi Google Cloud API a cui ha accesso l'account di servizio.
Puoi utilizzare la federazione delle identità per i carichi di lavoro con un server di metadati o con provider di identità esterni (IdP).
Federazione delle identità per i workload con i metadati della VM
Se il tuo sistema SAP è ospitato su Google Cloud , ma è gestito da SAP, puoi utilizzare la federazione delle identità di carico di lavoro per accedere in modo sicuro alle risorse di altri Google Cloud progetti dal tuo sistema SAP. La federazione di Workload Identity consente al tuo sistema SAP di autenticarsi in altri Google Cloud progetti utilizzando i metadati della VM. In questo modo non è necessario gestire le chiavi dell'account di servizio, aumentando la sicurezza e semplificando l'autenticazione.
I passaggi di configurazione di alto livello sono i seguenti:
- In Google Cloud, configura la federazione delle identità per i workload.
- In Google Cloud, crea un account di servizio.
- In Google Cloud, concedi all'account di servizio l'accesso al pool di federazione delle identità per i carichi di lavoro.
- Nell'SDK ABAP per Google Cloud, configura la chiave client.
Configurare la federazione delle identità per i carichi di lavoro
Per ottenere le autorizzazioni necessarie per configurare la federazione delle identità per i workload, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Amministratore del pool di identità dei carichi di lavoro (
roles/iam.workloadIdentityPoolAdmin
) - Amministratore dell'account di servizio (
roles/iam.serviceAccountAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Per configurare la federazione delle identità per i carichi di lavoro, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Nuovo provider e pool di carichi di lavoro.
Nella sezione Crea un pool di identità, inserisci un valore per i seguenti campi:
- Nome: il nome del pool. Il nome viene utilizzato anche come ID pool. Non potrai modificare l'ID pool in un secondo momento.
- Descrizione: il testo che descrive lo scopo del pool.
Fai clic su Continua.
In Aggiungi un provider al pool, aggiungi il server di metadati come provider:
- Nel campo Seleziona un provider, seleziona OpenID Connect (OIDC).
Inserisci i seguenti dettagli del fornitore:
- Nome fornitore: inserisci un nome per il fornitore.
- Issuer(URL): inserisci l'URL del token del server dei metadati,
https://accounts.google.com
. - Pubblico: seleziona Pubblico consentito e inserisci il numero di progetto Google Cloud del progetto Google Cloud a cui devi accedere. Per informazioni su come ottenere il numero di progetto, consulta Raccogliere i dettagli dell'istanza del server di metadati di Google.
Fai clic su Continua.
In Configura attributi del provider:
- Nel campo Google 1, assicurati che il valore sia
google.subject
. - Nel campo OIDC 1, inserisci
assertion.sub
.
- Nel campo Google 1, assicurati che il valore sia
Fai clic su Salva.
Prendi nota di quanto segue:
- ID pool
- ID provider
Questi ID sono necessari per configurare la chiave client.
Raccogliere i dettagli dell'istanza del server di metadati di Google
Per ottenere i dettagli dell'istanza del server di metadati di Google necessari per configurare la federazione delle identità per i carichi di lavoro, svolgi i seguenti passaggi:
-
In SAP GUI, esegui il codice transazione
/GOOG/SDK_IMG
.In alternativa, esegui il codice transazione
SPRO
e poi fai clic su Immagine di riferimento SAP. - Fai clic su SDK ABAP per Google Cloud > Utilità > Ottieni valori di metadati specifici per l'istanza del server di metadati di Google.
- Seleziona le opzioni in base alle esigenze:
- ID progetto numerico
- Indirizzo email dell'account di servizio predefinito
- Fai clic su Esegui per visualizzare i dettagli.
- Prendi nota dei dettagli. Ti serviranno durante la configurazione della federazione delle identità per i carichi di lavoro nella console Google Cloud.
Crea un account di servizio
Nella console Google Cloud, crea un account di servizio IAM. Questo account di servizio deve essere un principale nel progetto Google Cloud che contiene le APIGoogle Cloud che prevedi di utilizzare con l'SDK.
Nella console Google Cloud, seleziona il progetto in cui vuoi creare l'account di servizio.
Se crei l'account di servizio nello stesso progetto che contiene le API, questo viene aggiunto automaticamente come principale al progetto. Google Cloud
Se crei l'account di servizio in un progetto diverso da quello in cui sono attivate leGoogle Cloud API, devi aggiungerlo al progetto in un passaggio aggiuntivo. Per ulteriori informazioni, vedi Aggiungere l'account di servizio al progetto Google Cloud.
Crea un account di servizio per l'autenticazione e l'autorizzazione per accedere alle Google Cloud API.
Per informazioni su come creare un account di servizio, vedi Creare un account di servizio.
Nella console Google Cloud, concedi all'account di servizio i ruoli IAM necessari per accedere alla funzionalità dell'API. Per comprendere il requisito del ruolo per le Google Cloud API, consulta la documentazione delle singole API e segui il principio del privilegio minimo. Per ulteriori informazioni sui ruoli predefiniti specifici dell'API, consulta la sezione Documentazione di riferimento sui ruoli di base e predefiniti IAM.
Se hai creato l'account di servizio in un progetto diverso da quello che contiene le Google Cloud API che prevedi di utilizzare con l'SDK, prendi nota del nome dell'account di servizio. Specifica il nome quando aggiungi l'account di servizio al progetto.
Aggiungi l'account di servizio al progetto Google Cloud
Se hai creato l'account di servizio per l'SDK ABAP per Google Cloud in un progetto diverso da quello che contiene le Google Cloud API che prevedi di utilizzare con l'SDK, devi aggiungere l'account di servizio al progetto Google Cloud che contiene le Google Cloud API.
Se hai creato l'account di servizio nello stesso progetto che contiene leGoogle Cloud API, puoi saltare questo passaggio.
Per aggiungere un account di servizio esistente al progetto Google Cloud che contiene Google Cloud le API, svolgi i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Autorizzazioni di IAM.
Verifica che il nome del progetto che contiene le APIGoogle Cloud di destinazione sia visualizzato nella parte superiore della pagina. Ad esempio:
Autorizzazioni per il progetto "
PROJECT_NAME
"In caso contrario, cambia progetto.
Nella pagina Autorizzazioni di IAM, fai clic su
Concedi l'accesso.Nella finestra di dialogo Concedi l'accesso a "
PROJECT_NAME
" che viene visualizzata, svolgi i seguenti passaggi:- Nel campo Nuove entità, specifica il nome dell'account di servizio.
Nel campo Seleziona un ruolo, specifica un ruolo pertinente. Ad esempio, per Pub/Sub, per modificare argomenti e iscrizioni e per accedere alla pubblicazione e al consumo di messaggi, puoi specificare il ruolo Editor Pub/Sub (
roles/pubsub.editor
).Per maggiori dettagli sui ruoli predefiniti specifici dell'API, consulta Documentazione di riferimento dei ruoli di base e predefiniti IAM.
Aggiungi altri ruoli in base alle esigenze di utilizzo dell'API. Ti consigliamo di implementare il principio del privilegio minimo.
Fai clic su Salva. L'account di servizio viene visualizzato nell'elenco dei principali del progetto nella pagina IAM.
Ora l'account di servizio può essere utilizzato per accedere alle Google Cloud API in questo progetto.
Concedi all'account di servizio l'accesso al pool di federazione delle identità per i carichi di lavoro
Per simulare l'identità degli account di servizio dei workload federati, concedi il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser
) all'account di servizio. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Per concedere all'account di servizio l'accesso al pool della federazione delle identità per i carichi di lavoro, svolgi i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Pool di identità di carico di lavoro.
Seleziona il pool di identità per i carichi di lavoro che hai creato nella sezione Configurare la federazione delle identità per i carichi di lavoro.
Per concedere l'accesso al pool di identità del carico di lavoro, fai clic su
Concedi accesso.Nell'elenco Account di servizio, seleziona l'account di servizio che ha accesso alle API Google Cloud . Se utilizzi più account di servizio, aggiungili tutti qui.
Nel campo Nome attributo, seleziona Oggetto.
Nel campo Valore attributo, inserisci l'indirizzo email dell'account di servizio recuperato dal server di metadati tra virgolette doppie. Ad esempio,
"svc-acct-compute@example-project-123456.iam.gserviceaccount.com"
.Per informazioni su come recuperare l'indirizzo email dell'account di servizio dal server di metadati, vedi Raccogliere i dettagli dell'istanza del server di metadati di Google.
Nella finestra di dialogo Configura l'applicazione visualizzata, fai clic su Ignora.
Configura la chiave client
-
In SAP GUI, esegui il codice transazione
/GOOG/SDK_IMG
.In alternativa, esegui il codice transazione
SPRO
e poi fai clic su Immagine di riferimento SAP. - Fai clic su ABAP SDK for Google Cloud > Impostazioni di base > Configura chiave client.
- Fai clic su Nuove voci.
Inserisci i valori per i seguenti campi:
Campo Descrizione Nome della chiave Google Cloud Specifica un nome per la configurazione della chiave client. Nome dell'account di servizio Google Cloud Specifica il nome dell'account di servizio, in formato indirizzo email, creato per accedere alle Google Cloud API nel passaggio Crea un account di servizio. Ad esempio: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Ambito Google Cloud Specifica l'ambito di accesso all'API, https://www.googleapis.com/auth/cloud-platform
.Identificatore progetto Google Cloud Specifica l'ID del progetto Google Cloud in cui hai creato il pool di identità di carico di lavoro. Nome comando Lascia vuoto questo campo. Classe di autorizzazione Specifica la classe di autenticazione in base alle esigenze: /GOOG/CL_AUTH_WIF_META_ACCESS
: genera token OAuth firmati da Google./GOOG/CL_AUTH_WIF_META_IDTOKEN
: genera token ID firmati da Google.
Memorizzazione nella cache dei token Il flag che determina se i token di accesso recuperati da Google Cloud vengono memorizzati nella cache.
Ti consigliamo di attivare la memorizzazione nella cache dei token al termine della configurazione e del test della connessione a Google Cloud.
Secondi di aggiornamento token Lascia vuoto questo campo. Parametro di autorizzazione 1 Specifica l'ID del pool di identità del workload. Parametro di autorizzazione 2 Specifica l'ID del provider di identità del workload. Salva la voce.
Federazione delle identità per i workload con provider di identità esterni
Puoi utilizzare la federazione delle identità dei carichi di lavoro con provider di identità esterni come Amazon Web Services (AWS) o con qualsiasi provider di identità (IdP) che supporta OpenID Connect (OIDC), ad esempio Microsoft Azure o SAML 2.0.
Per l'autenticazione tramite token tramite la federazione delle identità per i carichi di lavoro, i passaggi di configurazione di alto livello sono i seguenti:
- Prepara l'IdP esterno.
- In Google Cloud, configura la federazione delle identità per i workload.
- In Google Cloud, crea un account di servizio.
- In Google Cloud, consenti al carico di lavoro esterno di simulare l'identità dell'account di servizio.
- Nell'SDK ABAP per Google Cloud, implementa il codice ABAP per recuperare i token di sicurezza dal tuo IdP.
- Nell'SDK ABAP per Google Cloud, configura la chiave client.
Non tutti i Google Cloud prodotti supportano la federazione delle identità per i workload. Prima di configurare l'autenticazione utilizzando la federazione delle identità per i carichi di lavoro, esamina l'elenco dei prodotti supportati e le limitazioni. Per ulteriori informazioni, consulta Federazione delle identità per la forza lavoro: prodotti supportati e limitazioni.
Prepara l'IdP esterno
Devi preparare l'IDP in modo che il carico di lavoro SAP possa ottenere le credenziali che possono essere scambiate con un token di sicurezza OAuth 2.0 di Google.
Per preparare l'IdP esterno, svolgi i passaggi a seconda dell'IdP:
- Se utilizzi AWS o Azure come IdP, segui le istruzioni per preparare l'IdP esterno.
- Se utilizzi altri IdP, segui le istruzioni per preparare l'IdP esterno.
Configurare la federazione delle identità per i carichi di lavoro
In Google Cloud, configura il pool di identità del workload e i provider.
Configura un pool di identità, ovvero un'entità che ti consente di gestire le identità esterne. Configura anche un provider di pool di identità del workload, che è un'entità che descrive una relazione tra Google Cloud e il tuo provider di identità.
Per configurare la federazione delle identità per i carichi di lavoro, segui i passaggi in base al tuo provider di identità esterno:
- Se utilizzi AWS o Azure come IdP, segui le istruzioni per creare il pool di identità e il provider del carico di lavoro.
- Se utilizzi altri IdP, segui le istruzioni per creare il pool di identità e il provider del workload.
Prendi nota di quanto segue:
- Numero di progetto: il numero del progetto Google Cloud in cui hai creato il pool di identità del carico di lavoro.
- ID pool: un ID univoco che identifica il pool di identità del workload.
- ID provider: un ID che identifica il provider del pool di identità del workload.
Ti serviranno per la configurazione della chiave client dell'SDK ABAP.
Crea un account di servizio
Nella console Google Cloud, crea un account di servizio IAM dedicato per accedere alle API. Google Cloud Questo account di servizio deve essere un principale nel progetto Google Cloud che contiene le APIGoogle Cloud che prevedi di utilizzare con l'SDK.
Nella console Google Cloud, attiva l'API Credentials for Service Account IAM, l'API Security Token Service e qualsiasi altra API supportata a cui prevedi di accedere utilizzando l'SDK.
Per informazioni su come abilitare le Google Cloud API, consulta Abilitazione delle API.
Crea un account di servizio che rappresenti il carico di lavoro.
Concedi all'account di servizio i ruoli IAM richiesti per accedere alla funzionalità dell'API. Per comprendere il requisito del ruolo per le Google Cloud API, consulta la documentazione delle singole API e segui il principio del privilegio minimo. Per ulteriori informazioni sui ruoli predefiniti specifici per le API, consulta Trovare i ruoli IAM per le API. Google Cloud
Consenti al carico di lavoro esterno di simulare l'identità dell'account di servizio
Per consentire al carico di lavoro esterno di simulare l'identità dell'account di servizio, svolgi i passaggi in base al tuo IdP esterno:
- Se utilizzi AWS o Azure come provider di identità, segui le istruzioni per consentire al carico di lavoro esterno di rubare l'identità dell'account di servizio.
- Se utilizzi altri provider di identità, segui le istruzioni per consentire al carico di lavoro esterno di utilizzare l'identità dell'account di servizio.
Implementa il codice ABAP per recuperare i token di sicurezza dall'IdP
L'SDK ABAP per Google Cloud fornisce una classe astratta /GOOG/CL_AUTH_WIF_BASE
,
che contiene la logica per recuperare i token di sicurezza OAuth 2.0 dal Security Token Service e i token di accesso OAuth 2.0 dall'API Credenziali account di servizio IAM. In qualità di sviluppatore, devi creare una classe secondaria nel tuo spazio dei nomi che erediti dalla classe astratta /GOOG/CL_AUTH_WIF_BASE
.
Per invocare le funzioni Cloud Run dall'ABAP SDK for Google Cloud utilizzando la federazione delle identità di carico di lavoro, l'SDK fornisce un'altra classe astratta/GOOG/CL_AUTH_WIF_ID_TOKEN
. Se configuri l'autenticazione utilizzando la federazione delle identità di carico di lavoro, devi creare un'altra classe secondaria nello spazio dei nomi che eredita dalla classe astratta /GOOG/CL_AUTH_WIF_ID_TOKEN
. Specifica questa classe secondaria nel campo Authorization Class (Classe di autorizzazione) durante la configurazione della chiave client per richiamare le funzioni Cloud Run.
Assicurati di implementare il metodo GET_EXT_IDP_TOKEN
nella classe secondaria e di scrivere la logica per ottenere il token di sicurezza dall'IDP. Compila i seguenti campi:
CV_TOKEN
: il token recuperato dal tuo IdP nel formatostring
.CV_TOKEN_TYPE
: il tipo di token di sicurezza recuperato dall'IdP. I tipi di token supportati sono:urn:ietf:params:oauth:token-type:jwt
urn:ietf:params:oauth:token-type:id_token
urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:token-type:access_token
urn:ietf:params:oauth:token-type:saml2
I valori inseriti in CV_TOKEN
e CV_TOKEN_TYPE
vengono poi utilizzati dai metodi della classe astratta /GOOG/CL_AUTH_WIF_BASE
per scambiare e recuperare il token OAuth 2.0 finale, utilizzato nelle chiamate API.
L'esempio seguente mostra le implementazioni di esempio del metodoGET_EXT_IDP_TOKEN
per altri provider cloud come AWS e Azure.
AWS
Azure
Configura la chiave client
-
In SAP GUI, esegui il codice transazione
/GOOG/SDK_IMG
.In alternativa, esegui il codice transazione
SPRO
e poi fai clic su Immagine di riferimento SAP. - Fai clic su ABAP SDK for Google Cloud > Impostazioni di base > Configura chiave client.
- Fai clic su Nuove voci.
Inserisci i valori per i seguenti campi:
Campo Descrizione Nome della chiave Google Cloud Specifica un nome per la configurazione della chiave client. Nome dell'account di servizio Google Cloud Specifica il nome dell'account di servizio, in formato indirizzo email, creato per accedere alle Google Cloud API nel passaggio Crea un account di servizio. Ad esempio: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Ambito Google Cloud Specifica l'ambito di accesso all'API, https://www.googleapis.com/auth/cloud-platform
.Identificatore progetto Google Cloud Specifica l'ID del progetto Google Cloud in cui hai creato il pool di identità di carico di lavoro. Nome comando Lascia vuoto questo campo. Classe di autorizzazione Specifica la classe secondaria, che contiene l'implementazione della classe /GOOG/CL_AUTH_WIF_BASE
. Per maggiori informazioni, consulta Implementare il codice ABAP per recuperare i token di sicurezza dall'IDP.Memorizzazione nella cache dei token Il flag che determina se i token di accesso recuperati da Google Cloud vengono memorizzati nella cache.
Ti consigliamo di attivare la memorizzazione nella cache dei token al termine della configurazione e del test della connessione a Google Cloud.
Secondi di aggiornamento token Lascia vuoto questo campo. Parametro di autorizzazione 1 Specifica l'ID del pool di identità del workload. Parametro di autorizzazione 2 Specifica l'ID del provider di identità del workload. Salva la voce.
Richiedi assistenza
Se hai bisogno di aiuto per risolvere i problemi relativi all'SDK ABAP per Google Cloud, segui questi passaggi:
Fai riferimento alla guida alla risoluzione dei problemi dell'ABAP SDK for Google Cloud.
Fai le tue domande e discuti dell'ABAP SDK per Google Cloud con la community nei forum di Cloud.
Raccogli tutte le informazioni diagnostiche disponibili e contatta l'assistenza clienti Google Cloud. Per informazioni su come contattare il servizio clienti, vedi Ricevere assistenza per SAP su Google Cloud.