Utilizzo dell'autenticazione Google

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 i 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:

  • Criteri ServiceCallout
  • Norme di ExternalCallout
  • Configurazioni di TargetEndpoint

Dopo aver completato alcuni passaggi di configurazione di base (come descritto in questo argomento), Apigee esegue la generazione del token e effettua chiamate sicure ai servizi Google o ai servizi ospitati personalizzati scelti come target per te, senza che tu debba impostare manualmente gli intestazioni di autenticazione o modificare in altro modo una richiesta di servizio. Dal punto di vista di uno sviluppatore di API, il processo di chiamata dei servizi Google da un proxy API configurato correttamente viene gestito senza problemi.

Opzioni di configurazione del proxy API

Questa sezione spiega dove puoi utilizzare l'elemento XML <Authentication> per attivare l'autenticazione tramite token OAuth di Google o OpenID Connect:

Opzione di configurazione Descrizione
Norme relative a ServiceCallout Il criterio ServiceCallout ti consente di chiamare altri servizi interni o esterni da un proxy API. Ad esempio, puoi utilizzare ServiceCallout per chiamare servizi Google esterni o servizi ospitati personalizzati. Per dettagli e esempi di utilizzo, consulta le norme relative a ServiceCallout.
Norme relative a ExternalCallout Il criterio ExternalCallout ti consente di inviare richieste gRPC al tuo server gRPC per implementare un comportamento personalizzato non supportato dai criteri Apigee. Per dettagli sull'utilizzo ed esempi, consulta le norme relative a ExternalCallout.
TargetEndpoint Specifica un servizio Google o un servizio ospitato personalizzato come endpoint di destinazione del proxy API. Per dettagli e esempi di utilizzo, consulta la sezione Riferimento per la configurazione dei proxy API.

Contesti supportati dal token di autenticazione Google

L'elemento <Authentication> ha due configurazioni di elementi secondari: <GoogleAccessToken> o <GoogleIDToken>. La tabella seguente mostra i contesti in cui questi elementi sono supportati:

Utilizzato in GoogleAccessToken GoogleIDToken
Norme di ServiceCallout Supportato Supportato
Norme relative a 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 i servizi Google scelti come target o i servizi ospitati personalizzati. Spieghiamo i passaggi di implementazione per Apigee e Apigee hybrid separatamente.

Esegui il deployment su Apigee

I passaggi che seguono spiegano come eseguire il deployment di un proxy API su Apigee, dove il proxy è configurato per effettuare chiamate autenticate ai servizi Google o a servizi ospitati personalizzati. I passaggi presuppongono che tu abbia già creato il proxy e che includa un elemento <Authentication> in uno dei contesti supportati elencati.

  1. Crea un account di servizio Google nello stesso progetto Google Cloud in cui è stata creata la tua 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 l'account di servizio. Puoi creare l'account di servizio nella console Google Cloud o con il comando gcloud. Vedi Creare e gestire gli account di servizio.
  2. Concedi all'utente che eseguirà il deployment (il deployer) l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio. Consulta anche Informazioni sulle autorizzazioni degli account di servizio.
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  3. Dove:

    • PROJECT_ID: l'ID progetto. L'ID corrisponde al nome della tua organizzazione.
    • SA_NAME: il nome che hai fornito durante la creazione dell'account di servizio.
    • MEMBER: il membro per cui aggiungere l'associazione. Deve essere del tipo user|group|serviceAccount:email o domain:domain.
  4. Concedi all'account di servizio le autorizzazioni necessarie per comunicare con i servizi Google scelti come target. Ad esempio, se vuoi chiamare il servizio Google Logging, questo account di servizio deve includere le autorizzazioni richieste per comunicare con il servizio. Consulta anche Informazioni sui ruoli.
  5. Prima di eseguire il deployment di un proxy API configurato per utilizzare l'autenticazione Google, devi:
    • Il nome dell'account di servizio 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 o aver ricevuto l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio. Consulta Concessione, modifica e revoca dell'accesso alle risorse.
  6. Esegui il deployment del proxy API contenente la configurazione di autenticazione Google che hai implementato. Puoi utilizzare l'API o l'interfaccia utente di Apigee per eseguire il deployment del proxy. Per saperne di più, consulta Eseguire il deployment di un proxy API.
    • Se utilizzi l'interfaccia utente, ti viene chiesto di fornire un nome per l'account di servizio. Utilizza il nome dell'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 di deployment Apigee, di seguito è riportato un esempio di comando cURL che puoi utilizzare. Tieni conto che il comando include un nome account di servizio come parametro di query. Si tratta del 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 l'account di servizio.
      • PROJECT_ID: l'ID del tuo progetto Google Cloud (uguale al nome dell'organizzazione).
  7. Al termine del deployment, testa il proxy API per assicurarti che il servizio Google restituisca la risposta prevista.

Esegui il deployment su Apigee hybrid

I passaggi riportati di seguito 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.

  1. Crea un account di servizio e una chiave per il componente runtime di Apigee hybrid utilizzando uno dei seguenti metodi:
  2. Apri il file overrides.yaml e specifica il percorso del file della chiave 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"
  3. Applica il file delle sostituzioni al cluster utilizzando apigeectl apply.
  4. Crea un secondo account di servizio, chiamato account di servizio proxy. Questo account di servizio deve trovarsi nello stesso progetto Google Cloud 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 l'account di servizio.
  5. Concedi all'utente che eseguirà il deployment (il deployer) l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio. Consulta anche Informazioni sulle autorizzazioni degli account di servizio.
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  6. Dove:

    • PROJECT_ID: l'ID progetto. L'ID corrisponde al nome della tua organizzazione.
    • SA_NAME: il nome che hai fornito quando hai creato l'account di servizio.
    • MEMBER: il membro per cui aggiungere l'associazione. Deve essere del tipo user|group|serviceAccount:email o domain:domain.
  7. Concedi all'account di servizio proxy le autorizzazioni necessarie per comunicare con i servizi Google scelti come target. Ad esempio, se vuoi chiamare il servizio Google Logging, questo account di servizio deve includere le autorizzazioni richieste per comunicare con il servizio. Consulta anche Informazioni sui ruoli.
  8. Assicurati che il runtime abbia la possibilità di impersonare l'account di servizio proxy. Per fornire questa funzionalità, concedi all'account di servizio di runtime il ruolo iam.serviceAccountTokenCreator nell'account di servizio proxy. Consulta anche Informazioni sulle autorizzazioni degli account di servizio. 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 corrisponde al nome della tua organizzazione. Tieni presente che non è stato necessario utilizzare il progetto associato alla tua organizzazione per creare l'account di servizio 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 dell'account di servizio di runtime.
  9. Prima di eseguire il deployment di un proxy API configurato per utilizzare l'autenticazione Google, devi:
    • Il nome dell'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 disporre già dell'autorizzazione iam.serviceAccounts.actAs o devi disporre dell'autorizzazione nel progetto Google Cloud in cui è stato eseguito il provisioning dell'organizzazione Apigee. Consulta Concessione, modifica e revoca dell'accesso alle risorse.
  10. Esegui il deployment del proxy API contenente la configurazione di autenticazione Google che hai implementato. Puoi utilizzare l'API o l'interfaccia utente di Apigee per eseguire il deployment del proxy. Per saperne di più, consulta Eseguire il deployment di un proxy API.
    • Se utilizzi l'interfaccia utente, ti viene chiesto di fornire un nome per l'account di servizio. Utilizza il nome dell'account di servizio 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 di deployment Apigee, di seguito è riportato un esempio di comando cURL che puoi utilizzare. Tieni conto che il comando include un nome account di servizio come parametro di query. Questo è il nome dell'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 dell'account di servizio proxy.
      • PROJECT_ID: l'ID del tuo progetto Google Cloud (uguale al nome dell'organizzazione).
  11. Al termine del deployment, testa il proxy API per assicurarti che il servizio Google restituisca la risposta prevista.

Informazioni sulle autorizzazioni degli 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. Consulta anche Creare e gestire gli account di servizio.

Service account Obbligatorio per Descrizione
Proxy Apigee e Apigee hybrid

Disporre delle autorizzazioni necessarie per consentire a un proxy API di effettuare chiamate autenticate ai servizi Google selezionati.

  • Deve essere creato nello stesso progetto Google Cloud della tua organizzazione Apigee.
  • L'utente che esegue il deployment (il deployer) deve disporre o deve aver ricevuto l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio proxy.
  • Deve includere le autorizzazioni necessarie per comunicare con servizi Google di destinazione specifici. Ad esempio, se vuoi chiamare il servizio Google Logging, questo account di servizio deve includere le autorizzazioni richieste per comunicare con il servizio. Consulta anche Informazioni sui ruoli.
  • Il nome dell'account di servizio deve essere fornito quando esegui il deployment del proxy che utilizza l'autenticazione Google.
Runtime Solo Apigee hybrid

Consente al runtime Apigee di generare token per l'autenticazione nei servizi Google richiesti da un proxy API. Questo account di servizio "simula" l'account di servizio specifico del proxy per effettuare chiamate autenticate per suo conto.

  • Per poter rubare l'identità dell'account di servizio proxy e creare token, all'account di servizio runtime deve essere concesso il ruolo roles/iam.serviceAccountTokenCreator nell'account di servizio proxy. Consulta Gestire l'accesso agli account di servizio.