Étape 4 : Créer des comptes de service

Cette page explique comment créer les comptes de service Google Cloud requis pour le fonctionnement d'Apigee hybrid.

Présentation

Apigee hybrid utilise des comptes de service Google Cloud pour permettre aux composants hybrides de communiquer en effectuant des appels d'API autorisés.

Environnements de production et environnements hors production

Ce guide fait référence à des installations de production et hors production. Une installation de production est réglée pour des valeurs élevées de capacité d'utilisation, de stockage et d'évolutivité. Une installation hors production utilise moins de ressources et sert principalement à l'apprentissage et à la démonstration.

Lorsque vous créez et configurez des comptes de service pour Apigee hybrid, il est important de connaître le type d'installation que vous ciblez.

Pour les installations de production, nous vous recommandons de créer un compte de service distinct pour chaque composant Apigee hybrid. Par exemple, chacun des composants runtime, mart, metrics, udca, etc., possède son propre compte de service.

Pour les installations hors production, vous pouvez créer un seul compte de service qui s'applique à tous les composants.

Pour en savoir plus sur les comptes de service utilisés par Apigee et les rôles qui leur sont attribués, consultez la page Comptes de service et rôles utilisés par les composants hybrides.

Workload Identity sur GKE

Pour les installations Apigee hybrid sur GKE, Google Cloud propose une option appelée Workload Identity servant à authentifier les composants d'exécution hybrides. Cette option n'utilise pas les fichiers de certificat téléchargés pour authentifier les comptes de service, mais associe les comptes de service Google Cloud que vous créez à cette étape aux comptes de service Kubernetes dans le cluster Kubernetes.

Workload Identity n'est disponible que sur les installations GKE.

Créer les comptes de service

Procédez comme suit afin de créer les comptes de service Google Cloud pour votre installation hybride :

  • Outil create-service-account : si vous installez Apigee hybrid sur une plate-forme autre que GKE, ou si vous effectuez une installation sur GKE, mais que vous ne souhaitez pas utiliser Workload Identity, utilisez l'outil fourni par Apigee, create-service-account, pour créer les comptes de service, leur attribuer des rôles, puis créer et télécharger les fichiers de clé du compte de service en une seule commande. Suivez les procédures décrites dans
    Créer des comptes de service à l'aide de create-service-account.
  • Console Google Cloud ou gcloud : si vous installez Apigee hybrid sur GKE et que vous prévoyez d'utiliser Workload Identity, utilisez la console Google Cloud ou gcloud pour créer les comptes de service sans télécharger les fichiers de certificat. Suivez les procédures décrites dans la section
    Créer des comptes de service dans la console Google Cloud ou avec gcloud.

Créer des comptes de service à l'aide de create-service-account

Utilisez l'outil create-service-account dans les cas suivants :

  • Vous effectuez l'installation sur une plate-forme autre que GKE.
  • Vous effectuez l'installation sur GKE, mais vous ne prévoyez pas d'utiliser Workload Identity.

Sinon, passez directement à la section Créer des comptes de service dans la console Google Cloud ou avec gcloud.

  1. Assurez-vous que les variables d'environnement HYBRID_FILES et HYBRID_FILES sont définies.

    PROJECT_ID doit être défini sur votre ID de projet Google Cloud, car l'outil create-service-account lit la variable d'environnement PROJECT_ID pour créer les comptes de service dans le projet approprié.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. Créez le compte de service à l'aide de la commande suivante :

    Hors production

    Cette commande crée un seul compte de service nommé apigee-non-prod en vue de l'utiliser dans une installation hors production et télécharge le fichier de clé du compte de service dans le répertoire $HYBRID_FILES/service-accounts.

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

    Production

    Cette commande crée tous les comptes de service individuels pour une installation en production et télécharge les fichiers de clé des comptes de service dans le répertoire $HYBRID_FILES/service-accounts.

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

    Lorsque l'invite suivante s'affiche, saisissez 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.
    

    Si c'est la première fois que vous créez un compte de service particulier, l'outil le crée sans invite supplémentaire.

    Toutefois, si le message et l'invite suivants s'affichent, saisissez y pour générer de nouvelles clés :

    [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. Vérifiez que la clé du compte de service a été créée à l'aide de la commande suivante. Vous avez la responsabilité de stocker ces clés privées en lieu sûr. Les noms de fichiers de clés commencent par le nom de votre projet Google Cloud.
    ls $HYBRID_FILES/service-accounts

    Le résultat doit se présenter sous la forme suivante :

    project_id-apigee-non-prod.json

Créer des comptes de service dans la console Google Cloud ou avec gcloud

Si vous prévoyez d'utiliser Workload Identity sur GKE pour authentifier des composants d'exécution hybride, vous n'avez pas besoin de créer ni de télécharger des fichiers de certificat pour les comptes de service. Par conséquent, n'utilisez pas l'outil create-service-account. Créez plutôt les comptes de service dans la console Google Cloud ou avec l'API IAM dans gcloud.

Sinon, passez directement à la section Créer des comptes de service à l'aide de create-service-account.

Console

Suivez les instructions de la section Créer des comptes de service pour créer les comptes de service suivants et leur attribuer les rôles suivants :

Hors production

Pour les installations hors production :

Nom du compte de service Rôles IAM
apigee-non-prod
  • Agent d'analyses Apigee
  • Agent Apigee Connect
  • Agent d'exécution Apigee
  • Gestionnaire de synchronisateur Apigee
  • Rédacteur de journaux
  • Rédacteur de métriques Monitoring
  • Administrateur des objets de l'espace de stockage

Production

Pour les installations en production :

Installations en production
Nom du compte de service Rôles IAM
apigee-cassandra Administrateur des objets de l'espace de stockage
apigee-logger Rédacteur de journaux
apigee-mart Agent Apigee Connect
apigee-metrics Rédacteur de métriques Monitoring
apigee-runtime Aucun rôle requis
apigee-synchronizer Gestionnaire de synchronisateur Apigee
apigee-udca Agent d'analyses Apigee
apigee-watcher Agent d'exécution Apigee

gcloud

Exécutez les commandes suivantes pour créer les comptes de service et attribuer les rôles IAM.

Hors production

Pour les installations hors production :

  1. Créez le compte de service apigee-non-prod :
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. Accordez les rôles IAM au compte de service :
    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. Validez les liaisons de rôles :
    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"

Production

Pour les installations en production :

Exécutez les commandes suivantes pour créer chaque compte de service et lui attribuer le rôle IAM correspondant.

  1. Compte de service apigee-cassandra :
    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. Compte de service apigee-logger :
    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. Compte de service apigee-mart :
    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. Compte de service apigee-metrics :
    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. Compte de service apigee-runtime :
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. Compte de service apigee-synchronizer :
    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. Compte de service apigee-udca :
    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. Compte de service apigee-watcher :
    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"

Pour en savoir plus sur la création de comptes de service avec gcloud, consultez la section Créer des comptes de service.

Vous avez à présent créé des comptes de service et attribué les rôles nécessaires aux composants Apigee hybrid. Ensuite, créez les certificats TLS requis par la passerelle d'entrée hybride.

1 2 3 4 (SUITE) Étape 5 : Créer des certificats TLS 6 7 8 9 10 11