Questo documento descrive come eseguire l'autenticazione a Google Cloud utilizzando i token tramite la federazione delle identità per i carichi di lavoro. Con Workload Identity Federation, 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 scambio di token OAuth 2.0. Fornisci una credenziale dal tuo IdP al servizio token di sicurezza, che verifica l'identità nella credenziale e restituisce un token di accesso federato in cambio. Puoi utilizzare questo token di accesso federato direttamente con i servizi supportati o utilizzarlo per rappresentare un account di servizio e ottenere un token di accesso di breve durata. Il token di accesso di breve durata consente di chiamare qualsiasi API Google Cloud a cui ha accesso il account di servizio.
Puoi utilizzare la federazione delle identità per i carichi di lavoro con il server dei metadati o con provider di identità (IdP) esterni.
Federazione delle identità per i workload con i metadati delle VM
Se il tuo sistema SAP è ospitato su Google Cloud ma gestito da SAP, puoi utilizzare la federazione delle identità dei carichi di lavoro per accedere in modo sicuro alle risorse in altri progettiGoogle Cloud dal tuo sistema SAP. La federazione di Workload Identity consente al tuo sistema SAP di autenticarsi in altri Google Cloud progetti utilizzando i metadati VM. In questo modo non è più necessario gestire le chiavi dell'account di servizio, migliorando la sicurezza e semplificando l'autenticazione.
I passaggi di configurazione a livello generale sono i seguenti:
- In Google Cloud, configura la federazione delle identità per i workload.
- In Google Cloud, crea un service account.
- In Google Cloud, concedi al account di servizio l'accesso al pool di federazione delle identità per i carichi di lavoro.
- In ABAP SDK for Google Cloud, configura la chiave client.
Configura la federazione delle identità per i workload
Per ottenere le autorizzazioni necessarie per configurare la federazione delle identità per i carichi di lavoro, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Amministratore del pool di identità dei carichi di lavoro (
roles/iam.workloadIdentityPoolAdmin
) - Amministratore 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 workload, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Nuovo provider e pool di workload.
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: testo che descrive lo scopo del pool.
Fai clic su Continua.
In Aggiungi un provider al pool, aggiungi il server dei metadati come provider:
- Nel campo Seleziona un provider, seleziona OpenID Connect (OIDC).
Inserisci i seguenti dettagli del fornitore:
- Nome provider: inserisci un nome per il provider.
- Emittente(URL): inserisci l'URL del token del server dei metadati,
https://accounts.google.com
. - Segmento di pubblico: seleziona Segmento di 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, vedi Raccogliere i dettagli dell'istanza del server di metadati 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 ti serviranno per configurare la chiave client.
Raccogli i dettagli dell'istanza del server dei metadati di Google
Per ottenere i dettagli dell'istanza del server di metadati Google necessari per configurare la federazione delle identità per i carichi di lavoro, segui questi passaggi:
-
In SAP GUI, esegui il codice transazione
/GOOG/SDK_IMG
.In alternativa, esegui il codice di transazione
SPRO
e poi fai clic su SAP Reference IMG. - Fai clic su ABAP SDK for Google Cloud > Utilità > Ottieni valori di metadati specifici per l'istanza del server di metadati Google.
- Seleziona le opzioni appropriate:
- ID progetto numerico
- Email del service account predefinito
- Fai clic su Esegui per visualizzare i dettagli.
- Prendi nota dei dettagli. Ti serviranno per configurare la 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 principal nel progetto Google Cloud che contiene le APIGoogle Cloud che prevedi di utilizzare con l'SDK.
Nella Google Cloud console, seleziona il progetto in cui vuoi creare l'account di servizio.
Se crei il account di servizio nello stesso progetto che contiene le API Google Cloud , il account di servizio viene aggiunto automaticamente come principal al progetto.
Se crei il account di servizio in un progetto diverso da quello in cui sono abilitate le APIGoogle Cloud , devi aggiungere ilaccount di serviziot a quel progetto in un passaggio aggiuntivo. Per saperne di più, vedi Aggiungere l'account di servizio al progetto Google Cloud .
Crea un account di servizio per l'autenticazione e l'autorizzazione per accedere alle API Google Cloud .
Per informazioni su come creare un account di servizio, vedi Creare un service account.
Nella console Google Cloud , concedi al account di servizio i ruoli IAM necessari per accedere alla funzionalità 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 Guida di riferimento ai ruoli IAM di base e predefiniti.
Se hai creato l'account di servizio in un progetto diverso da quello che contiene le API che prevedi di utilizzare con l'SDK, annota il nome dell'account di servizio. Google Cloud Specifichi il nome quando aggiungi l'account di servizio al progetto.
Aggiungi il account di servizio al progetto Google Cloud
Se hai creato l'account di servizio per ABAP SDK for Google Cloud in un progetto diverso da quello che contiene le API che prevedi di utilizzare con l'SDK, devi aggiungere l'account di servizio al progetto che contiene le API. Google Cloud Google Cloud Google Cloud
Se hai creato il account di servizio nello stesso progetto che contiene le APIGoogle Cloud , puoi ignorare questo passaggio.
Per aggiungere un account di servizio esistente al progetto Google Cloud che contiene le API Google Cloud , segui questi passaggi:
Nella console Google Cloud , vai alla pagina IAM Autorizzazioni.
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
" visualizzata, segui questi passaggi:- Nel campo Nuove entità, specifica il nome del account di servizio.
Nel campo Seleziona un ruolo, specifica un ruolo pertinente. Ad esempio, per Pub/Sub, per modificare argomenti e sottoscrizioni e accedere per pubblicare e utilizzare messaggi, puoi specificare il ruolo Editor Pub/Sub (
roles/pubsub.editor
).Per maggiori dettagli sui ruoli predefiniti specifici dell'API, consulta Riferimento ai ruoli IAM di base e predefiniti.
Aggiungi altri ruoli in base alle esigenze per l'utilizzo dell'API. Ti consigliamo di implementare il principio del privilegio minimo.
Fai clic su Salva. Il 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 API Google Cloud in questo progetto.
Concedi al account di servizio l'accesso al pool di federazione delle identità per i carichi di lavoro
Per rappresentare service account dei workload federati, concedi il ruolo
Utente Workload Identity (roles/iam.workloadIdentityUser
)
nell'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, esegui le seguenti operazioni:
Nella console Google Cloud , vai alla pagina Pool di identità del workload.
Seleziona il pool di identità per i carichi di lavoro che hai creato nella sezione Configura la federazione delle identità per i carichi di lavoro.
Per concedere l'accesso al pool Workload Identity, fai clic su
Concedi l'accesso.Nell'elenco Service account, seleziona il account di servizio che ha accesso alle API Google Cloud . Se utilizzi più service account, aggiungili tutti qui.
Nel campo Nome attributo, seleziona Oggetto.
Nel campo Valore attributo, inserisci l'indirizzo email del account di servizio recuperato dal server dei metadati, tra virgolette doppie. Ad esempio,
"svc-acct-compute@example-project-123456.iam.gserviceaccount.com"
.Per informazioni su come recuperare l'indirizzo email del account di servizio dal server dei metadati, vedi Raccogliere i dettagli dell'istanza del server dei metadati di Google.
Nella finestra di dialogo Configura la tua 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 di transazione
SPRO
e poi fai clic su SAP Reference IMG. - 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 account di servizio Google Cloud Specifica il nome dell'account di servizio, nel formato dell'indirizzo email, che è stato creato per accedere alle API Google Cloud nel passaggio Crea un service account. Ad esempio: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Ambito di 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à del workload. Nome del comando Lascia vuoto questo campo. Classe di autorizzazione Specifica la classe di autenticazione in modo appropriato: /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 dopo aver configurato e testato la connessione a Google Cloud.
Secondi di aggiornamento del 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 IdP esterni
Puoi utilizzare la federazione delle identità del workload con IdP esterni come Amazon Web Services (AWS) o con qualsiasi provider di identità (IdP) che supporti OpenID Connect (OIDC), come 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 il tuo IdP esterno.
- In Google Cloud, configura la federazione delle identità per i workload.
- In Google Cloud, crea un service account.
- In Google Cloud, consenti al carico di lavoro esterno di simulare l'identità del service account.
- In ABAP SDK for Google Cloud, implementa il codice ABAP per recuperare i token di sicurezza dal tuo IdP.
- In ABAP SDK for Google Cloud, configura la chiave client.
Non tutti i prodotti Google Cloud 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 delle limitazioni. Per ulteriori informazioni, consulta Federazione delle identità per la forza lavoro: prodotti supportati e limitazioni.
Prepara il tuo IdP esterno
Devi preparare il tuo IdP in modo che il tuo carico di lavoro SAP possa ottenere credenziali che possono essere scambiate con un token di sicurezza Google OAuth 2.0.
Per preparare l'IdP esterno, segui 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.
Configura la federazione delle identità per i workload
In Google Cloud, configura il pool e i provider di identità del workload.
Configuri un pool di identità, ovvero un'entità che ti consente di gestire le identità esterne. Configuri anche un provider di pool di identità del workload, un'entità che descrive una relazione tra Google Cloude il tuo IdP.
Per configurare la federazione delle identità per i carichi di lavoro, esegui i passaggi a seconda del tuo IdP esterno:
- Se utilizzi AWS o Azure come IdP, segui le istruzioni per creare il pool e il provider di identità del workload.
- Se utilizzi altri IdP, segui le istruzioni per creare il pool di identità del workload e il provider.
Prendi nota di quanto segue:
- Numero di progetto: il numero di progetto del progetto Google Cloud in cui hai creato il pool di identità del workload.
- ID pool: un ID univoco che identifica il pool di identità del workload.
- ID fornitore: un ID che identifica il fornitore 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 principal nel progetto Google Cloud che contiene le APIGoogle Cloud che prevedi di utilizzare con l'SDK.
Nella console Google Cloud , attiva l'API IAM Service Account Credentials, l'API Security Token Service e qualsiasi altra API supportata a cui prevedi di accedere utilizzando l'SDK.
Per informazioni su come abilitare le API Google Cloud , vedi Abilitazione delle API.
Crea un service account che rappresenti il workload.
Concedi all'account di servizio i ruoli IAM richiesti per accedere alla funzionalità 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 Trovare ruoli IAM per le Google Cloud API.
Consenti al carico di lavoro esterno di simulare l'identità del account di servizio
Per consentire al carico di lavoro esterno di simulare l'identità dell'account di servizio, esegui i passaggi a seconda del tuo IdP esterno:
- Se utilizzi AWS o Azure come IdP, segui le istruzioni per consentire al workload esterno di rappresentare l'account di servizio.
- Se utilizzi altri IdP, segui le istruzioni per consentire al workload esterno di utilizzare l'identità dell'account di servizio.
Implementa il codice ABAP per recuperare i token di sicurezza dal tuo 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
servizio token di sicurezza e i token di accesso OAuth 2.0 dall'API
IAM Service Account Credentials. In qualità di sviluppatore, devi
creare una classe secondaria nel tuo spazio dei nomi che eredita
dalla classe astratta /GOOG/CL_AUTH_WIF_BASE
.
Per richiamare le funzioni Cloud Run da ABAP SDK for Google Cloud utilizzando
Workload Identity Federation,
l'SDK fornisce un'altra classe astratta
/GOOG/CL_AUTH_WIF_ID_TOKEN
. Se configuri l'autenticazione utilizzando
Workload Identity Federation, devi creare un'altra
classe secondaria nello spazio dei nomi che eredita dalla classe astratta
/GOOG/CL_AUTH_WIF_ID_TOKEN
. Specifichi questa classe secondaria nel campo Classe di autorizzazione durante la configurazione della chiave client per richiamare Cloud Run Functions.
Assicurati di implementare il
metodo GET_EXT_IDP_TOKEN
nella classe secondaria e scrivi la logica per ottenere il
token di sicurezza dal tuo IdP. Compila i seguenti campi:
CV_TOKEN
: il token recuperato dall'IdP nel formatostring
.CV_TOKEN_TYPE
: il tipo di token di sicurezza recuperato dal tuo 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, che viene utilizzato nelle chiamate API.
L'esempio seguente mostra le implementazioni di esempio del metodo
GET_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 di transazione
SPRO
e poi fai clic su SAP Reference IMG. - 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 account di servizio Google Cloud Specifica il nome dell'account di servizio, nel formato dell'indirizzo email, che è stato creato per accedere alle API Google Cloud nel passaggio Crea un service account. Ad esempio: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Ambito di 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à del workload. Nome del 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, vedi Implementare il codice ABAP per recuperare i token di sicurezza dal tuo 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 dopo aver configurato e testato la connessione a Google Cloud.
Secondi di aggiornamento del 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.
Convalida la configurazione dell'autenticazione
Per convalidare la configurazione dell'autenticazione per la sua preparazione:
In SAP GUI, esegui il codice transazione
/GOOG/SDK_IMG
.In alternativa, esegui il codice di transazione
SPRO
e poi fai clic su SAP Reference IMG.Fai clic su ABAP SDK for Google Cloud > Utilità > Convalida configurazione autenticazione.
Inserisci il nome della chiave client.
Fai clic su Esegui.
Un segno di spunta verde nella colonna Risultato indica che tutti i passaggi di configurazione sono stati completati correttamente.
Assistenza
Se hai bisogno di aiuto per risolvere i problemi relativi all'ABAP SDK for Google Cloud, procedi nel seguente modo:
Consulta la guida alla risoluzione dei problemi di ABAP SDK for Google Cloud.
Poni le tue domande e discuti di ABAP SDK for 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 l'assistenza clienti, vedi Assistenza per SAP su Google Cloud.