Utiliser l'authentification Google

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Cette rubrique explique comment configurer et déployer un proxy d'API configuré pour utiliser l'authentification Google.

Présentation

Apigee accepte l'utilisation de jetons Google OAuth ou de jetons OpenID Connect pour l'authentification auprès de services Google tels que Cloud Logging et Secret Manager, et des services personnalisés exécutés sur certains produits Google Cloud comme Cloud Functions et Cloud Run.

Pour utiliser cette fonctionnalité, vous devez configurer l'élément XML <Authentication> dans l'un des contextes suivants :

  • Règles ServiceCallout
  • Règles ExternalCallout
  • Configurations de TargetEndpoint

Une fois que vous avez terminé certaines étapes de configuration de base (comme décrit dans cette rubrique), Apigee génère les jetons et effectue des appels sécurisés à des services Google ciblés ou à des services hébergés personnalisés pour vous, sans avoir à définir manuellement des en-têtes d'authentification ou modifier une requête de service. Du point de vue d'un développeur d'API, le processus d'appel des services Google à partir d'un proxy d'API correctement configuré est géré sans difficulté.

Options de configuration du proxy d'API

Cette section explique où utiliser l'élément XML <Authentication> pour activer l'authentification Google OAuth Token ou OpenID Connect :

Option de configuration Description
Règle ServiceCallout La règle ServiceCallout vous permet d'appeler d'autres services internes ou externes à partir d'un proxy d'API. Par exemple, vous pouvez utiliser ServiceCallout pour appeler des services Google externes ou des services hébergés personnalisés. Pour obtenir plus de détails et des exemples d'utilisation, consultez la section Règle ServiceCallout.
Règle ExternalCallout La règle ExternalCallout vous permet d'envoyer des requêtes gRPC à votre serveur gRPC afin de mettre en œuvre un comportement personnalisé qu'il n'est pas possible d'obtenir avec les règles Apigee. Pour obtenir plus de détails et des exemples d'utilisation, consultez la section Règle ExternalCallout.
TargetEndpoint Spécifiez un service Google ou un service hébergé personnalisé en tant que point de terminaison cible du proxy d'API. Pour obtenir plus de détails et des exemples d'utilisation, consultez la documentation de référence sur la configuration des proxys d'API.

Contextes compatibles avec les jetons d'authentification Google

L'élément <Authentication> comporte deux configurations de sous-élément : <GoogleAccessToken> ou <GoogleIDToken>. Le tableau suivant indique les contextes dans lesquels ces éléments sont compatibles :

Utilisation GoogleAccessToken GoogleIDToken
Règle ServiceCallout Compatible Compatible
Règle ExternalCallout Incompatible Compatible
TargetEndpoint Compatible Compatible

Procédure de déploiement

Cette section explique comment déployer un proxy d'API qui utilise l'authentification Google pour appeler des services Google ciblés ou des services hébergés personnalisés. Nous expliquons séparément les étapes de déploiement d'Apigee et d'Apigee hybrid.

Déployer sur Apigee

Les étapes suivantes expliquent comment déployer un proxy d'API sur Apigee, dans lequel le proxy est configuré pour effectuer des appels authentifiés aux services Google ou aux services hébergés personnalisés. Les étapes supposent que vous avez déjà créé le proxy et qu'il inclut un élément <Authentication> dans l'un des contextes compatibles répertoriés.

  1. Créez un compte de service Google dans le projet Google Cloud au sein duquel votre organisation Apigee a été créée. Lorsque vous déployez un proxy d'API configuré pour utiliser l'authentification Google, vous devez indiquer le nom de ce compte de service. Les jetons OAuth générés représentent le compte de service. Vous pouvez créer le compte de service dans Google Cloud Console ou à l'aide de la commande gcloud. Consultez la section Créer et gérer des comptes de service.
  2. Accordez à l'utilisateur en charge du déploiement (le déployeur) l'autorisation iam.serviceAccounts.actAs sur le compte de service. Consultez également la section À propos des autorisations de compte de service.
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  3. Où :

    • PROJECT_ID : ID du projet Cet ID est identique au nom de votre organisation.
    • SA_NAME : nom que vous avez fourni lors de la création du compte de service.
    • MEMBER : membre pour lequel vous ajoutez la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.
  4. Accordez à votre compte de service les autorisations nécessaires pour communiquer avec vos services Google ciblés. Par exemple, si vous souhaitez appeler le service Google Logging, ce compte de service doit inclure les autorisations requises pour communiquer avec ce service. Consultez également la section Comprendre les rôles.
  5. Avant de déployer un proxy d'API configuré pour utiliser l'authentification Google, vous avez besoin des éléments suivants :
    • Le nom du compte de service que vous avez créé précédemment. Par exemple : SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    • En tant qu'utilisateur effectuant le déploiement (le déployeur), vous devez déjà disposer de l'autorisation iam.serviceAccounts.actAs sur le compte de service. Consultez la section Accorder, modifier et révoquer les accès à des ressources.
  6. Déployez le proxy d'API contenant la configuration d'authentification Google que vous avez mise en œuvre. Vous pouvez utiliser l'API ou l'interface utilisateur d'Apigee pour déployer le proxy. Pour en savoir plus, consultez la section Déployer un proxy d'API.
    • Si vous utilisez l'interface utilisateur, vous êtes invité à fournir un nom de compte de service. Utilisez le nom du compte de service du proxy que vous avez créé à l'étape 1. Exemple : SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

    • Si vous préférez déployer le proxy à l'aide de l'API de déploiement Apigee, voici un exemple de commande cURL que vous pouvez utiliser. Notez que la commande inclut un nom de compte de service en tant que paramètre de requête. Il s'agit du nom du compte de service que vous avez créé à l'étape 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

      Où :

      • TOKEN : jeton OAuth que vous devez obtenir en échange de vos identifiants Google. Pour en savoir plus, consultez la section Obtenir un jeton d'accès OAuth 2.0.
      • ORG_NAME : nom de votre organisation Apigee.
      • ENV_NAME : nom de l'environnement sur lequel déployer le proxy d'API.
      • SA_NAME : nom que vous avez fourni lors de la création du compte de service.
      • PROJECT_ID : votre ID de projet Google Cloud (identique au nom de l'organisation).
  7. Une fois le déploiement terminé, testez votre proxy d'API pour vous assurer que le service Google renvoie la réponse attendue.

Déployer sur Apigee hybrid

Les étapes suivantes expliquent comment déployer sur Apigee hybrid un proxy d'API configuré pour effectuer des appels authentifiés aux services Google. Les étapes supposent que vous avez déjà créé le proxy et qu'il inclut un élément <Authentication> dans l'un des contextes compatibles répertoriés.

  1. Créez un compte de service et une clé pour le composant d'exécution Apigee hybrid à l'aide de l'une des méthodes suivantes :
    • Utilisez l'outil create-service-account fourni avec Apigee hybrid pour créer un compte de service apigee-runtime. L'outil crée le compte de service et renvoie une clé de compte de service. Pour en savoir plus, consultez la documentation concernant create-service-account.
    • Créez le compte de service dans Google Cloud Console ou à l'aide de la commande gcloud. Consultez la section Créer et gérer des comptes de service. Pour récupérer la clé du compte de service, consultez la page Créer et gérer les clés de comptes de service.
  2. Ouvrez votre fichier overrides.yaml et spécifiez le chemin d'accès au fichier de clé de compte de service pour chaque environnement nécessitant une capacité d'authentification Google :
    envs:
      - name: "ENVIRONMENT_NAME"
        serviceAccountPaths:
          runtime: "KEY_FILE_PATH"

    Exemple :

    envs:
      - name: "test"
        serviceAccountPaths:
          runtime: "./service_accounts/my_runtime_sa.json"
  3. Appliquez le fichier de remplacements à votre cluster à l'aide de la commande apigeectl apply.
  4. Créez un deuxième compte de service, que nous appelons le compte de service proxy. Ce compte de service doit appartenir au même projet Google Cloud que celui utilisé pour créer votre organisation Apigee. Lorsque vous déployez un proxy d'API configuré pour utiliser l'authentification Google, vous devez indiquer l'adresse e-mail de ce compte de service. Les jetons OAuth générés représentent le compte de service.
  5. Accordez à l'utilisateur en charge du déploiement (le déployeur) l'autorisation iam.serviceAccounts.actAs sur le compte de service. Consultez également la section À propos des autorisations de compte de service.
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  6. Où :

    • PROJECT_ID : ID du projet Cet ID est identique au nom de votre organisation.
    • SA_NAME : nom que vous avez fourni lors de la création du compte de service.
    • MEMBER : membre pour lequel vous ajoutez la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.
  7. Accordez à votre compte de service proxy les autorisations nécessaires pour communiquer avec vos services Google ciblés. Par exemple, si vous souhaitez appeler le service Google Logging, ce compte de service doit inclure les autorisations requises pour communiquer avec ce service. Consultez également la section Comprendre les rôles.
  8. Assurez-vous que l'environnement d'exécution peut emprunter l'identité du compte de service proxy. Pour ce faire, attribuez au compte de service d'exécution le rôle iam.serviceAccountTokenCreator sur le compte de service proxy. Consultez également la section À propos des autorisations de compte de service. Exemple :
    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
    

    Où :

    • PROJECT_ID : ID du projet Cet ID est identique au nom de votre organisation. Notez que vous n'avez pas besoin d'utiliser le projet associé à votre organisation pour créer le compte de service d'exécution. Veillez simplement à utiliser les bons ID de projet dans cette commande.
    • PROXY_SA_NAME : ID du compte de service proxy.
    • RUNTIME_SA_NAME : ID du compte de service d'exécution.
  9. Avant de déployer un proxy d'API configuré pour utiliser l'authentification Google, vous avez besoin des éléments suivants :
    • Le nom du compte de service proxy que vous avez créé précédemment. Par exemple : PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
    • En tant qu'utilisateur effectuant le déploiement, vous devez disposer de l'autorisation iam.serviceAccounts.actAs dans le projet Google Cloud où est provisionnée l'organisation Apigee. Consultez Accorder, modifier et révoquer les accès à des ressources.
  10. Déployez le proxy d'API contenant la configuration d'authentification Google que vous avez mise en œuvre. Vous pouvez utiliser l'API ou l'interface utilisateur d'Apigee pour déployer le proxy. Pour en savoir plus, consultez la section Déployer un proxy d'API.
    • Si vous utilisez l'interface utilisateur, vous êtes invité à fournir un nom de compte de service. Utilisez le nom du compte de service proxy que vous avez créé précédemment. Exemple : PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

    • Si vous préférez déployer le proxy à l'aide de l'API de déploiement Apigee, voici un exemple de commande cURL que vous pouvez utiliser. Notez que la commande inclut un nom de compte de service en tant que paramètre de requête. Il s'agit du nom du compte de service 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

      Où :

      • TOKEN : jeton OAuth que vous devez obtenir en échange de vos identifiants Google. Pour en savoir plus, consultez la section Obtenir un jeton d'accès OAuth 2.0.
      • ORG_NAME : nom de votre organisation Apigee.
      • ENV_NAME : nom de l'environnement sur lequel déployer le proxy d'API.
      • PROXY_SA_NAME : nom du compte de service proxy.
      • PROJECT_ID : votre ID de projet Google Cloud (identique au nom de l'organisation).
  11. Une fois le déploiement terminé, testez votre proxy d'API pour vous assurer que le service Google renvoie la réponse attendue.

À propos des autorisations de compte de service

Pour configurer un proxy d'API de manière à utiliser l'authentification Google, vous devez créer un compte de service comme décrit dans le tableau suivant. Consultez aussi la section Créer et gérer des comptes de service.

Compte de service Obligatoire pour Description
Proxy Apigee et Apigee hybride

Dispose des autorisations nécessaires pour qu'un proxy d'API effectue des appels authentifiés aux services Google ciblés.

  • Doit être créé dans le même projet Google Cloud que votre organisation Apigee.
  • L'utilisateur effectuant le déploiement (le déployeur) doit déjà posséder ou se voir accorder l'autorisation iam.serviceAccounts.actAs sur le compte de service du proxy.
  • Doit inclure les autorisations nécessaires pour communiquer avec des services Google cibles spécifiques. Par exemple, si vous souhaitez appeler le service Google Logging, ce compte de service doit inclure les autorisations requises pour communiquer avec ce service. Consultez également la section Comprendre les rôles.
  • Le nom du compte de service doit être fourni lorsque vous déployez le proxy qui utilise l'authentification Google.
Exécution Apigee hybrid uniquement

Permet à l'environnement d'exécution Apigee de générer des jetons pour s'authentifier auprès des services Google demandés par un proxy d'API. Ce compte de service "emprunte l'identité" du compte de service spécifique au proxy pour effectuer des appels authentifiés en son nom.

  • Pour emprunter l'identité du compte de service proxy et créer des jetons, le compte de service d'exécution doit disposer du rôle roles/iam.serviceAccountTokenCreator sur le compte de service proxy. Consultez la section Gérer l'accès aux comptes de service.