Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questo argomento spiega come configurare ed eseguire il deployment di un proxy API configurato per utilizzare l'autenticazione Google.
Introduzione
Apigee supporta l'utilizzo di token OAuth di Google o di token OpenID Connect per l'autenticazione con servizi Google come Cloud Logging e Secret Manager e servizi personalizzati in esecuzione su determinati prodotti Google Cloud come Cloud Functions e Cloud Run.
Per utilizzare questa funzionalità, devi configurare l'elemento XML <Authentication>
in
uno dei seguenti contesti:
- Policy AssignMessage
- Policy ServiceCallout
- Norme ExternalCallout
- Configurazioni TargetEndpoint
Dopo aver completato alcuni passaggi di configurazione di base (come descritto in questo argomento), Apigee esegue la generazione dei token ed effettua chiamate sicure ai servizi Google di destinazione o ai servizi personalizzati ospitati per tuo conto, senza la necessità di impostare manualmente le intestazioni di autenticazione o modificare in altro modo una richiesta di servizio. Dal punto di vista di uno sviluppatore di API, la procedura di chiamata dei servizi Google dall'interno di un proxy API configurato correttamente viene gestita senza problemi.
Opzioni di configurazione del proxy API
Questa sezione spiega dove puoi utilizzare l'elemento XML <Authentication>
per
attivare l'autenticazione con token OAuth di Google o OpenID Connect:
Opzione di configurazione | Descrizione |
---|---|
Policy AssignMessage | Il criterio AssignMessage ti consente di aggiungere le intestazioni richieste per l'autenticazione Google e l'inserimento di token. Per dettagli ed esempi di utilizzo, vedi policy AssignMessage. |
Criterio ServiceCallout | Il criterio ServiceCallout ti consente di chiamare altri servizi interni o esterni da un proxy API. Ad esempio, ServiceCallout può chiamare servizi Google esterni o servizi personalizzati ospitati. Per esempi e dettagli sull'utilizzo, consulta le norme ServiceCallout. |
Criterio ExternalCallout | Il criterio ExternalCallout consente di inviare richieste gRPC al server gRPC per implementare un comportamento personalizzato non supportato dai criteri Apigee. Per dettagli e esempi di utilizzo, vedi il criterio ExternalCallout. |
TargetEndpoint | Specifica un servizio Google o un servizio ospitato personalizzato come endpoint di destinazione del proxy API. Per dettagli ed esempi di utilizzo, consulta Riferimento per la configurazione dei proxy API. |
Contesti supportati per il token Google Auth
L'elemento <Authentication>
ha due configurazioni di elementi secondari:
<GoogleAccessToken>
o <GoogleIDToken>
. La seguente
tabella mostra i contesti in cui questi elementi sono supportati:
Utilizzato in | GoogleAccessToken | GoogleIDToken |
---|---|---|
Norme AssignMessage | Supportato | Supportato |
Norme ServiceCallout | Supportato | Supportato |
Norme ExternalCallout | Non supportata | Supportato |
TargetEndpoint | Supportato | Supportato |
Passi per il deployment
Questa sezione spiega come eseguire il deployment di un proxy API che utilizza l'autenticazione Google per chiamare servizi Google mirati o servizi personalizzati ospitati. Spieghiamo i passaggi di deployment per Apigee e Apigee hybrid separatamente.
Esegui il deployment su Apigee
I seguenti passaggi spiegano come eseguire il deployment di un proxy API su Apigee, dove il proxy è configurato per effettuare
chiamate autenticate ai servizi Google o ai servizi personalizzati ospitati. I passaggi presuppongono che tu abbia già creato il proxy e
che includa un elemento <Authentication>
in uno dei contesti supportati elencati.
- Crea un account di servizio Google nello stesso progetto Google Cloud
in cui è stata creata l'organizzazione Apigee. Devi fornire il nome di questo account di servizio quando esegui il deployment di un proxy API configurato per utilizzare l'autenticazione Google e i token OAuth generati rappresenteranno il account di servizio.
Puoi creare il account di servizio nella console Google Cloud o con il comando
gcloud
. Vedi Creazione e gestione degli account di servizio. - Concedi all'utente che eseguirà il deployment (il deployer) l'autorizzazione
iam.serviceAccounts.actAs
per il account di servizio. Vedi anche Informazioni account di servizio account.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: l'ID progetto. L'ID è uguale al nome della tua organizzazione.
- SA_NAME: il nome che hai fornito quando hai creato il account di servizio.
- MEMBER: il membro per cui aggiungere l'associazione. Deve essere nel formato
user|group|serviceAccount:email
odomain:domain
. - Concedi all'account di servizio le autorizzazioni necessarie per comunicare con i servizi Google di destinazione. Ad esempio, se vuoi chiamare il servizio Google Logging, questo account di servizio deve includere le autorizzazioni richieste per comunicare con il servizio. Vedi anche Informazioni sui ruoli.
- Prima di eseguire il deployment di un proxy API configurato per utilizzare l'autenticazione Google, devi:
- Il nome del account di servizio che hai creato in precedenza. Ad esempio:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- In qualità di utente che esegue il deployment (il deployer), devi già disporre dell'autorizzazione
iam.serviceAccounts.actAs
per il account di servizio o devi averla ricevuta. Vedi Concessione, modifica e revoca dell'accesso alle risorse.
- Il nome del account di servizio che hai creato in precedenza. Ad esempio:
- Esegui il deployment del proxy API contenente la configurazione dell'autenticazione Google che hai implementato. Puoi
utilizzare l'API o la UI di Apigee per eseguire il deployment del proxy. Per saperne di più, consulta la sezione Deployment di un proxy API.
- Se utilizzi la UI, ti viene chiesto di fornire un nome del account di servizio. Utilizza il nome
del account di servizio proxy che hai creato nel passaggio 1. Ad esempio:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Se preferisci eseguire il deployment del proxy utilizzando l'API Apigee Deployment, ecco un esempio
di comando cURL che puoi utilizzare. Tieni presente
che il comando include un nome diaccount di serviziot come parametro di query. Questo è il nome
dell'account di servizio che hai creato nel passaggio 1:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Dove:
TOKEN
: un token OAuth che devi ottenere in cambio delle tue credenziali Google. Per maggiori dettagli, vedi Ottenere un token di accesso OAuth 2.0.ORG_NAME
: il nome della tua organizzazione Apigee.ENV_NAME
: il nome dell'ambiente in cui eseguire il deployment del proxy API.SA_NAME
: il nome che hai fornito quando hai creato il account di servizio.PROJECT_ID
: il tuo ID progetto Google Cloud (lo stesso del nome dell'organizzazione).
- Se utilizzi la UI, ti viene chiesto di fornire un nome del account di servizio. Utilizza il nome
del account di servizio proxy che hai creato nel passaggio 1. Ad esempio:
- Al termine del deployment, testa il proxy API per assicurarti che il servizio Google restituisca la risposta prevista.
Dove:
Deployment su Apigee hybrid
I seguenti passaggi spiegano come eseguire il deployment in Apigee hybrid di un proxy API configurato per effettuare
chiamate autenticate ai servizi Google.
I passaggi presuppongono che tu abbia già creato il proxy e
che includa un elemento <Authentication>
in uno dei contesti supportati elencati.
- Crea un account di servizio e una chiave per il componente runtime di Apigee hybrid utilizzando
uno dei seguenti metodi:
- Utilizza lo
strumento
create-service-account
fornito con Apigee Hybrid per creare un service accountapigee-runtime
. Lo strumento crea il account di servizio e restituisce una chiave del account di servizio. Per i dettagli, vedi create-service-account. - Crea il account di servizio nella console Google Cloud o con
il comando
gcloud
. Vedi Creazione e gestione degli account di servizio. Per recuperare la chiave del account di servizio, vedi Creare e gestire le account di servizio account.
- Utilizza lo
strumento
- Apri il file
overrides.yaml
e specifica il percorso del file delle chiavi dell'account di servizio per ogni ambiente che richiede la funzionalità di autenticazione Google:envs: - name: "ENVIRONMENT_NAME" serviceAccountPaths: runtime: "KEY_FILE_PATH"
Ad esempio:
envs: - name: "test" serviceAccountPaths: runtime: "./service_accounts/my_runtime_sa.json"
- Applica il file di override al tuo cluster utilizzando
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
- Crea un secondo account di servizio, che chiameremo account di servizio proxy. Questo account di servizio deve trovarsi nello stesso progetto Google Cloud che hai utilizzato per creare la tua organizzazione Apigee. Devi fornire l'indirizzo email di questo account di servizio quando esegui il deployment di un proxy API configurato per utilizzare l'autenticazione Google e i token OAuth generati rappresenteranno il account di servizio.
- Concedi all'utente che eseguirà il deployment (il deployer) l'autorizzazione
iam.serviceAccounts.actAs
per il account di servizio. Vedi anche Informazioni account di servizio account.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: l'ID progetto. L'ID è uguale al nome della tua organizzazione.
- SA_NAME: il nome che hai fornito quando hai creato il account di servizio.
- MEMBER: il membro per cui aggiungere l'associazione. Deve essere nel formato user|group|serviceAccount:email o domain:domain.
- Concedi all'account di servizio proxy le autorizzazioni necessarie per comunicare con i servizi Google di destinazione. Ad esempio, se vuoi chiamare il servizio Google Logging, questo account di servizio deve includere le autorizzazioni richieste per comunicare con il servizio. Vedi anche Informazioni sui ruoli.
- Assicurati che il runtime possa rappresentare il account di servizio proxy. Per fornire questa funzionalità, concedi al account di servizio runtime il ruolo
iam.serviceAccountTokenCreator
nel account di servizio proxy. Consulta anche Informazioni account di servizio account. Ad esempio:gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Dove:
- PROJECT_ID: l'ID progetto. L'ID è uguale al nome della tua organizzazione. Tieni presente che non devi utilizzare il progetto associato alla tua organizzazione per creare ilaccount di serviziot di runtime. Assicurati solo di utilizzare gli ID progetto corretti in questo comando.
- PROXY_SA_NAME: l'ID dell'account di servizio proxy.
- RUNTIME_SA_NAME: l'ID del account di servizio runtime.
- Prima di eseguire il deployment di un proxy API configurato per utilizzare l'autenticazione Google, devi:
- Il nome del account di servizio proxy che hai creato in precedenza. Ad esempio:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- In qualità di utente che esegue il deployment, devi già disporre dell'autorizzazione
iam.serviceAccounts.actAs
nel progetto Google Cloud in cui viene eseguito il provisioning dell'organizzazione Apigee. Vedi Concessione, modifica e revoca dell'accesso alle risorse.
- Il nome del account di servizio proxy che hai creato in precedenza. Ad esempio:
- Esegui il deployment del proxy API contenente la configurazione dell'autenticazione Google che hai implementato. Puoi
utilizzare l'API o la UI di Apigee per eseguire il deployment del proxy. Per saperne di più, consulta la sezione Deployment di un proxy API.
- Se utilizzi la UI, ti viene chiesto di fornire un nome del account di servizio. Utilizza il nome
delaccount di serviziot proxy che hai creato in precedenza. Ad esempio:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Se preferisci eseguire il deployment del proxy utilizzando l'API Apigee Deployment, ecco un esempio
di comando cURL che puoi utilizzare. Tieni presente
che il comando include un nome diaccount di serviziot come parametro di query. Questo è il nome
del account di servizio proxy:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Dove:
TOKEN
: un token OAuth che devi ottenere in cambio delle tue credenziali Google. Per maggiori dettagli, vedi Ottenere un token di accesso OAuth 2.0.ORG_NAME
: il nome della tua organizzazione Apigee.ENV_NAME
: il nome dell'ambiente in cui eseguire il deployment del proxy API.PROXY_SA_NAME
: il nome del account di servizio proxy.PROJECT_ID
: il tuo ID progetto Google Cloud (lo stesso del nome dell'organizzazione).
- Se utilizzi la UI, ti viene chiesto di fornire un nome del account di servizio. Utilizza il nome
delaccount di serviziot proxy che hai creato in precedenza. Ad esempio:
- Al termine del deployment, testa il proxy API per assicurarti che il servizio Google restituisca la risposta prevista.
Dove:
Informazioni sulle autorizzazioni dei account di servizio
Per configurare un proxy API in modo che utilizzi l'autenticazione Google, devi creare un account di servizio come descritto nella tabella seguente. Vedi anche Creazione e gestione dei service account.
Service account | Obbligatorio per | Descrizione |
---|---|---|
Proxy | Apigee e Apigee hybrid | Dispone delle autorizzazioni necessarie per consentire a un proxy API di effettuare chiamate autenticate ai servizi Google di destinazione.
|
Runtime | Solo Apigee hybrid | Consente al runtime Apigee di generare token per l'autenticazione sui servizi Google richiesti da un proxy API. Questo account di servizio "simula" il account di servizio specifico del proxy per effettuare chiamate autenticate per suo conto.
|