Passaggio 4: crea gli account di servizio

Questo passaggio spiega come creare gli account di servizio Google Cloud necessari per il funzionamento di Apigee Hybrid.

Panoramica

Apigee Hybrid utilizza service account Google Cloud per consentire ai componenti ibridi di comunicare effettuando chiamate API autorizzate.

Ambienti di produzione e non di produzione

Questa guida fa riferimento alle installazioni di produzione ("Prod") e non di produzione ("Non-prod"). Un'installazione di produzione è ottimizzata per una maggiore capacità di utilizzo, spazio di archiviazione e scalabilità. Un'installazione non di produzione utilizza meno risorse ed è destinata principalmente all'apprendimento e a scopi dimostrativi.

Quando crei e configuri i service account per Apigee hybrid, è importante tenere presente il tipo di installazione a cui ti rivolgi.

Per le installazioni di produzione, ti consigliamo di creare un account di servizio separato per ogni componente di Apigee Hybrid. Ad esempio, runtime, mart, metriche, udca e così via ottengono ciascuno il proprio account di serviziot.

Per le installazioni non di produzione, puoi creare un singolo account di servizio che si applichi a tutti i componenti.

Per scoprire di più sui service account utilizzati da Apigee e sui ruoli assegnati, consulta Service account e ruoli utilizzati dai componenti ibridi.

Workload Identity su GKE

Per le installazioni ibride di Apigee su GKE, Google Cloud offre un'opzione chiamata workload identity per autenticare i componenti di runtime ibrido. Questa opzione non utilizza i file di certificato scaricati per autenticare i service account. Associa invece i service account Google Cloud creati in questo passaggio ai service account Kubernetes nel cluster Kubernetes.

Workload Identity è disponibile solo sulle installazioni GKE.

Crea i service account

Utilizza le seguenti procedure per creare i service account Google Cloud per l'installazione ibrida:

  • Lo strumento create-service-account:se stai installando Apigee hybrid su una piattaforma diversa da GKE o se stai eseguendo l'installazione su GKE ma non vuoi utilizzare l'identità del workload, utilizza lo strumento fornito da Apigee, create-service-account, per creare i service account, assegnare i ruoli ai service account e creare e scaricare i file delle chiavi per il service account in un unico comando. Segui le procedure descritte in
    Creare service account utilizzando create-service-account.
  • Google Cloud console o gcloud: se stai installando Apigee hybrid su GKE e prevedi di utilizzare Workload Identity, utilizza Google Cloud console o gcloud per creare i service account senza scaricare i file di certificato. Segui le procedure descritte in
    Creare service account in Google Cloud console o con gcloud.

Crea service account utilizzando create-service-account

Utilizza lo strumento create-service-account nelle seguenti circostanze:

  • Stai eseguendo l'installazione su una piattaforma diversa da GKE
  • Stai eseguendo l'installazione su GKE, ma non prevedi di utilizzare l'identità del workload.

Altrimenti, vai a Creare account di servizio in Google Cloud console o con gcloud.

  1. Assicurati che le variabili di ambiente HYBRID_FILES e PROJECT_ID siano impostate.

    PROJECT_ID deve essere impostato sull'ID progetto Google Cloud, perché lo strumento create-service-account legge la variabile di ambiente PROJECT_ID per creare gli account di servizio nel progetto corretto.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. Crea il account di servizio con il seguente comando:

    Non di produzione

    Questo comando crea un singolo account di servizio denominato apigee-non-prod da utilizzare in un'installazione non di produzione e scarica il file della chiave per il account di servizio nella directory $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    Produzione

    Questo comando crea tutti i service account individuali per un'installazione di produzione e scarica i file delle chiavi per i service account nella directory $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    Se visualizzi il seguente prompt, inserisci y:

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.

    Se è la prima volta che crei un determinato account di servizio, lo strumento lo crea senza ulteriori richieste.

    Se, invece, visualizzi il seguente messaggio e prompt, inserisci y per generare nuove chiavi:

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
  3. Verifica che la chiave del account di servizio sia stata creata utilizzando il seguente comando. Sei responsabile di conservare queste chiavi private in modo sicuro. I nomi dei file delle chiavi hanno come prefisso il nome del tuo progetto Google Cloud.
    ls $HYBRID_FILES/service-accounts

    Il risultato dovrebbe essere simile al seguente:

    project_id-apigee-non-prod.json

Crea service account in Google Cloud console o con gcloud

Se prevedi di utilizzare Workload Identity su GKE per autenticare i componenti di runtime ibrido, non è necessario creare e scaricare i file di certificato per i service account. Pertanto, non utilizzare lo strumento create-service-account. Crea invece i service account in Google Cloud console o con l'API IAM in gcloud.

In caso contrario, vai a Creare service account utilizzando create-service-account.

Console

Segui le istruzioni riportate in Creare service account per creare i seguenti service account e assegnare loro i seguenti ruoli:

Non prod

Per le installazioni non di produzione:

Nome account di servizio Ruoli IAM
apigee-non-prod
  • Apigee Analytics Agent
  • Apigee Connect Agent
  • Apigee Runtime Agent
  • Apigee Synchronizer Manager
  • Logs Writer
  • Monitoring Metric Writer
  • Storage Object Admin

Produzione

Per le installazioni di produzione:

Installazioni di produzione
Nome account di servizio Ruoli IAM
apigee-cassandra Storage Object Admin
apigee-logger Logs Writer
apigee-mart Apigee Connect Agent
apigee-metrics Monitoring Metric Writer
apigee-runtime Nessun ruolo richiesto
apigee-synchronizer Apigee Synchronizer Manager
apigee-udca Apigee Analytics Agent
apigee-watcher Apigee Runtime Agent

gcloud

Utilizza i seguenti comandi per creare i service account e assegnare i ruoli IAM.

Non prod

Per le installazioni non di produzione:

  1. Crea il account di servizio apigee-non-prod:
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. Assegna i ruoli IAM al account di servizio:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. Verifica le associazioni di ruoli:
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

Produzione

Per le installazioni di produzione:

Utilizza i seguenti comandi per creare ogni account di servizio e assegnare il ruolo IAM corrispondente.

  1. apigee-cassandra account di servizio:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. apigee-logger account di servizio:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. apigee-mart account di servizio:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. apigee-metrics account di servizio:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. apigee-runtime account di servizio:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. apigee-synchronizer account di servizio:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. apigee-udca account di servizio:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. apigee-watcher account di servizio:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

Per saperne di più sulla creazione di service account con gcloud, consulta Creare service account.

Ora hai creato i service account e assegnato i ruoli necessari ai componenti di Apigee Hybrid. Successivamente, crea i certificati TLS richiesti dal gateway in entrata ibrido.

1 2 3 4 (NEXT) Step 5: Create TLS certificates 6 7 8 9 10 11