Configurer l'authentification pour l'édition SAP BTP du SDK ABAP pour Google Cloud

Ce document explique comment s'authentifier auprès de Google Cloud à partir de l'édition SAP BTP du SDK ABAP pour Google Cloud.

Les applications développées à l'aide de l'édition SAP BTP du SDK ABAP pour Google Cloud nécessitent une authentification pour se connecter aux API Google Cloud.

Pour l'authentification et l'autorisation d'accès aux API Google Cloud, le SDK utilise principalement des jetons. Le SDK permet également d'authentifier des clés API auprès des API Google Cloud qui utilisent des clés API. Seules quelques API Google Cloud utilisent des clés API pour l'authentification. Par exemple, Google Maps Platform. Consultez la documentation sur l'authentification concernant le service ou l'API que vous souhaitez utiliser pour déterminer s'il est compatible avec les clés API.

En fonction des API Google Cloud auxquelles vous devez accéder, vous pouvez choisir une méthode d'authentification appropriée. La liste suivante récapitule les différentes méthodes d'authentification compatibles avec le SDK :

S'authentifier à l'aide de jetons via la fédération d'identité de charge de travail

La fédération d'identité de charge de travail respecte la spécification d'échange de jetons OAuth 2.0. Vous fournissez un identifiant provenant de votre fournisseur d'identité au service de jetons de sécurité, qui vérifie l'identité sur l'identifiant, puis renvoie en échange un jeton fédéré. Vous pouvez utiliser ce jeton pour emprunter l'identité d'un compte de service et obtenir un jeton d'accès OAuth 2.0 de courte durée. Le jeton d'accès de courte durée vous permet d'appeler les API Google Cloud auxquelles le compte de service a accès.

Pour l'authentification à l'aide de jetons via la fédération d'identité de charge de travail, activez les API Google Cloud suivantes :

Pour en savoir plus sur l'activation des API Google Cloud, consultez la page Activer des API.

Pour l'authentification à l'aide de jetons via la fédération d'identité de charge de travail, les étapes de configuration de haut niveau sont les suivantes :

  1. Dans SAP BTP, créez une instance de service d'autorisation et de confiance (XSUAA).
  2. Dans Google Cloud, créez un compte de service.
  3. Dans Google Cloud, configurez la fédération d'identité de charge de travail.
  4. Dans SAP BTP, configurez le SDK ABAP pour Google Cloud afin d'utiliser la fédération d'identité de charge de travail.

Créer une instance de service d'autorisation et d'approbation (XSUAA)

Pour fournir les services nécessaires à l'application backend, créez une instance de service d'autorisation et de confiance (XSUAA) en procédant comme suit :

  1. Connectez-vous à SAP BTP Cockpit. Pour en savoir plus, consultez la page SAP Accéder à Cockpit.
  2. Sélectionnez votre sous-compte.
  3. Créez une instance de service XSUAA :

    1. Accédez à Services > Service Marketplace.
    2. Recherchez et sélectionnez Authorization & Trust Management Service (XSUAA) (Service de gestion des autorisations et de la confiance)
    3. Cliquez sur Créer.
    4. Dans la boîte de dialogue Nouvelle instance ou abonnement qui s'affiche, saisissez une valeur pour les champs suivants :

      • Forfait : sélectionnez Application.
      • Environnement d'exécution : sélectionnez Cloud Foundry.
      • Espace : sélectionnez un nom d'espace.
      • Nom de l'instance : saisissez un nom pour l'instance de service XSUAA.
    5. Cliquez sur Créer.

  4. Créez une clé de service :

    1. Accédez à Instances et abonnement > Instances.
    2. Sélectionnez l'instance de service XSUAA que vous avez créée à l'étape précédente, puis cliquez sur l'onglet Service keys (Clés de service).
    3. Cliquez sur Créer.
    4. Saisissez un nom de clé de service, puis cliquez sur Créer.
    5. Pour la clé de service nouvellement créée, cliquez sur le menu Actions (), puis sélectionnez Afficher.
    6. À partir des identifiants de la clé de service, notez les points suivants :

      • url
      • clientid
      • clientsecret

    Vous avez besoin de ces identifiants de clé de service lorsque vous configurez l'authentification sur Google Cloud.

Créer un compte de service

Dans la console Google Cloud, créez un compte de service IAM. Ce compte de service doit être un compte principal dans le projet Google Cloud contenant les API Google Cloud que vous prévoyez d'utiliser à l'aide du SDK.

  1. Dans la console Google Cloud, sélectionnez le projet dans lequel vous souhaitez créer le compte de service.

    • Si vous créez le compte de service dans le même projet qui contient les API Google Cloud, le compte de service est automatiquement ajouté en tant que compte principal au projet.

    • Si vous créez le compte de service dans un projet autre que celui dans lequel les API Google Cloud sont activées, vous devez ajouter le compte de service à ce projet lors d'une étape supplémentaire. Pour en savoir plus, consultez la section Ajouter le compte de service au projet Google Cloud.

  2. Créer un compte de service pour l'authentification et l'autorisation d'accès aux API Google Cloud

    Accéder à la page "Comptes de service"

    Pour en savoir plus sur la création d'un compte de service, consultez la page Créer un compte de service.

  3. Dans la console Google Cloud, accordez au compte de service les rôles IAM requis pour accéder aux fonctionnalités de l'API. Pour comprendre les exigences de rôle pour les API Google Cloud, consultez la documentation de l'API concernée et suivez le principe du moindre privilège. Pour en savoir plus sur les rôles prédéfinis spécifiques à l'API, consultez la documentation de référence sur les rôles IAM de base et prédéfinis.

  4. Si vous avez créé le compte de service dans un projet différent de celui contenant les API Google Cloud que vous prévoyez d'utiliser à l'aide du SDK, notez le nom du compte de service. Ce nom doit être spécifié lors de l'ajout du compte de service à ce projet.

Ajouter le compte de service au projet Google Cloud

Si vous avez créé le compte de service du SDK ABAP pour Google Cloud dans un projet autre que le projet contenant les API Google Cloud que vous prévoyez d'utiliser à l'aide du SDK, vous devez ajouter le compte de service au projet Google Cloud contenant les API Google Cloud.

Si vous avez créé le compte de service dans le même projet qui contient les API Google Cloud, vous pouvez ignorer cette étape.

Pour ajouter un compte de service existant au projet Google Cloud contenant les API Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Autorisations IAM.

    Accéder à la page "Autorisations IAM"

  2. Vérifiez que le nom du projet contenant les API Google Cloud cibles s'affiche bien en haut de la page. Par exemple :

    Autorisations pour le projet "PROJECT_NAME"

    Si ce n'est pas le cas, changez de projet.

  3. Sur la page des autorisations IAM, cliquez sur Accorder l'accès.

  4. Dans la boîte de dialogue Accorder l'accès à "PROJECT_NAME" qui s'affiche, procédez comme suit :

    1. Dans le champ Nouveaux comptes principaux, spécifiez le nom du compte de service.
    2. Dans le champ Sélectionner un rôle, spécifiez un rôle approprié. Par exemple, pour Pub/Sub, pour modifier les sujets et les abonnements, ainsi que pour accéder à la publication et à la consultation de messages, vous pouvez spécifier le rôle "Éditeur Pub/Sub" (roles/pubsub.editor).

      Pour en savoir plus sur les rôles prédéfinis spécifiques à l'API, consultez la documentation de référence sur les rôles IAM de base et prédéfinis.

    3. Ajoutez des rôles supplémentaires selon vos besoins pour l'utilisation de l'API. Nous vous recommandons de mettre en œuvre le principe du moindre privilège.

    4. Cliquez sur Enregistrer. Le compte de service apparaît dans la liste des comptes principaux du projet sur la page IAM.

Le compte de service permet désormais d'accéder aux API Google Cloud de ce projet.

Configurer la fédération d'identité de charge de travail

Pour obtenir les autorisations nécessaires pour configurer la fédération d'identité de charge de travail, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Pour configurer la fédération d'identité de charge de travail, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Nouveau fournisseur et pool de charges de travail.

    Accéder au nouveau fournisseur de charges de travail et au pool

  2. Dans la section Créer un pool d'identités, saisissez une valeur pour les champs suivants :

    • Nom : nom du pool. Le nom est également utilisé comme ID du pool. Vous ne pourrez pas modifier l'ID du pool par la suite.
    • Description : texte décrivant l'objectif du pool.
  3. Cliquez sur Continuer.

  4. Sous Ajouter un fournisseur au pool, ajoutez les paramètres du fournisseur :

    1. Dans le champ Sélectionner un fournisseur, sélectionnez OpenID Connect (OIDC).
    2. Saisissez les informations suivantes sur le fournisseur :

      • Nom du fournisseur : saisissez un nom pour le fournisseur.
      • Issuer(URL) (Émetteur(URL)) : saisissez l'URL des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA. Ajoutez /oauth/token à l'URL.
      • Audience : sélectionnez Audience autorisée et saisissez l'ID client à partir des identifiants de la clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
  5. Cliquez sur Continuer.

  6. Sous Configurer les attributs du fournisseur, dans le champ OIDC 1, saisissez assertion.sub.

  7. Cliquez sur Enregistrer.

  8. Remarques :

    • ID de pool
    • ID du fournisseur

    Vous avez besoin de ces identifiants lors de la configuration de l'authentification dans l'application Fiori de configuration du SDK.

Autoriser les identités externes à emprunter l'identité du compte de service

Pour emprunter l'identité des comptes de service provenant de charges de travail fédérées, accordez le rôle utilisateur Workload Identity (roles/iam.workloadIdentityUser) au compte de service. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Pour autoriser les identités externes à emprunter l'identité d'un compte de service, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Pools d'identités de charge de travail.

    Accéder aux pools d'identité de charge de travail

  2. Sélectionnez le pool d'identités de charge de travail que vous avez créé dans la section Configurer la fédération d'identités de charge de travail.

  3. Pour accorder l'accès au pool d'identités de charge de travail sélectionné, cliquez sur Accorder l'accès.

  4. Dans la liste Compte de service, sélectionnez le compte de service ayant accès aux API Google Cloud. Si vous utilisez plusieurs comptes de service, ajoutez-les tous ici.

  5. Dans le champ Nom de l'attribut, sélectionnez Objet.

  6. Dans le champ Valeur d'attribut, saisissez l'ID client à partir des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.

  7. Cliquez sur Enregistrer.

  8. Dans la boîte de dialogue Configurer votre application qui s'affiche, cliquez sur Ignorer.

Configurer le SDK ABAP pour Google Cloud afin d'utiliser la fédération d'identité de charge de travail

Créez des artefacts de gestion des communications à l'aide des applications de gestion des communications SAP.

Pour créer des artefacts de gestion des communications pour l'authentification à l'aide du service XSUAA et de la fédération d'identité de charge de travail, utilisez le scénario de communication /GOOG/COM_SDK_WIF fourni avec le SDK ABAP pour Google Cloud.

Vous allez ensuite utiliser la configuration du SDK de l'application Fiori pour créer un plan de communication. Dans le plan de communication, vous définissez une clé client unique que vous utilisez dans votre programme ABAP pour vous authentifier auprès de Google Cloud.

  1. Accéder à la plate-forme de lancement SAP Fiori du système BTP ABAP dans lequel le SDK ABAP pour Google Cloud est installé.
  2. Accédez à Tous les espaces > Administration > Gestion de la communication.
  3. Créez un système de communication :
    1. Ouvrez l'application Systèmes de communication.
    2. Cliquez sur New (Nouveau).
    3. Dans la boîte de dialogue Nouveau système de communication qui s'affiche, saisissez une valeur pour les champs suivants :
      • ID système : saisissez un ID système.
      • Nom du système : saisissez un nom du système.
    4. Cliquez sur Créer.
    5. Dans le champ Nom d'hôte, saisissez l'URL sans https:// parmi les identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
    6. Dans le champ Port, saisissez 443.
    7. Dans l'onglet Utilisateurs pour les communications sortantes, cliquez sur Ajouter.
    8. Spécifiez les informations suivantes :
      • Méthode d'authentification : sélectionnez Nom d'utilisateur et mot de passe.
      • Nom d'utilisateur/ID client : saisissez l'ID client à partir des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
      • Mot de passe : saisissez le code secret du client à partir des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
    9. Cliquez sur Enregistrer.
  4. Créez une configuration de communication :

    1. Ouvrez l'application Configuration de communication.
    2. Cliquez sur New (Nouveau).
    3. Dans la boîte de dialogue Nouvelle configuration de communication qui s'affiche, saisissez une valeur pour les champs suivants :

      • Scénario : sélectionnez Authentification à l'aide de la fédération d'identité de charge de travail (/GOOG/COM_SDK_WIF).
      • Nom de la configuration : saisissez un nom pour la configuration de communication.
    4. Cliquez sur Créer.

    5. Pour la configuration de la communication qui s'affiche, dans le champ Système de communication, sélectionnez le système de communication que vous avez créé à l'étape précédente.

    6. Fournissez les informations suivantes dans la section Configurer la fédération d'identité de charge de travail :

      • ID du pool de fédération d'identité de charge de travail : saisissez l'ID du pool de fédération d'identité de charge de travail.
      • ID du fournisseur de fédération d'identité de charge de travail : saisissez l'ID du fournisseur de fédération d'identité de charge de travail.
    7. Sous Services sortants, saisissez /oauth/token dans le champ Chemin d'accès.

    8. Cliquez sur Enregistrer.

  5. Créez une clé client et un plan de communication :

    1. Accédez à l'espace contenant les applications Fiori pour la configuration du SDK.
    2. Ouvrez l'application SDK Google : configuration principale.
    3. Cliquez sur Créer.
    4. Dans la boîte de dialogue Créer qui s'affiche, saisissez un nom de clé client.
    5. Cliquez sur Continuer.
    6. Spécifiez les informations suivantes :
      • Compte de service : saisissez le compte de service autorisé à accéder aux API Google Cloud.
      • ID du projet : saisissez l'ID du projet Google Cloud. Pour en savoir plus sur l'ID de projet, consultez la section Identifier des projets.
      • Numéro du projet : saisissez le numéro du projet Google Cloud. Pour en savoir plus sur le numéro de projet, consultez la page Identifier des projets.
      • Type d'authentification : sélectionnez W (Fédération d'identité de charge de travail).
    7. Pour le plan de communication qui s'affiche, dans le champ Configuration de la communication, sélectionnez la configuration que vous avez créée à l'étape précédente.
    8. Cliquez sur Créer. Une boîte de dialogue s'affiche confirmant que vous acceptez d'utiliser le SDK ABAP pour Google Cloud conformément aux conditions d'utilisation standards de Google Cloud.
    9. Pour valider la configuration de l'authentification, cliquez sur Vérifier la connexion. Une coche verte pour une entrée indique que la configuration a réussi. En cas d'erreur, consultez la page Dépannage pour obtenir des conseils sur la résolution des erreurs courantes.

S'authentifier à l'aide d'une clé API stockée dans Secret Manager

Lorsque vous utilisez des clés API pour l'authentification auprès de Google Cloud, vous pouvez les stocker en toute sécurité avec le service Secret Manager de Google Cloud.

Pour l'authentification à l'aide d'une clé API stockée dans Secret Manager, activez les API Google Cloud suivantes :

Pour en savoir plus sur l'activation des API Google Cloud, consultez la page Activer des API.

Pour obtenir les autorisations nécessaires pour configurer Secret Manager et Workload Identity Federation, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour l'authentification à l'aide d'une clé API stockée dans Secret Manager, les étapes de configuration de haut niveau sont les suivantes :

  1. Dans SAP BTP, créez une instance de service d'autorisation et de confiance (XSUAA).
  2. Dans Google Cloud, créez un compte de service.
  3. Dans Google Cloud, configurez la fédération d'identité de charge de travail.
  4. Dans Google Cloud, créez une clé API.
  5. Dans Google Cloud, créez un secret et stockez la clé API.
  6. Dans SAP BTP, configurez le SDK ABAP pour Google Cloud afin d'utiliser la clé API de Secret Manager.

Lorsque vous vous authentifiez à l'aide d'une clé API stockée dans Secret Manager, vous pouvez réutiliser l'instance de service XSUAA, le compte de service, le pool de fédération d'identité de charge de travail et le fournisseur que vous avez créés pour l'authentification à l'aide de jetons.

Créer une clé API

Pour vous authentifier à l'aide d'une clé API, vous devez créer une clé API. La chaîne de clé API est une chaîne chiffrée, par exemple AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. Le SDK ABAP pour Google Cloud utilise la chaîne de clé API dans la requête HTTP pour s'authentifier de manière sécurisée lors de l'appel d'une API Google Cloud.

Google Cloud propose plusieurs façons de créer des clés API.

Pour créer des clés API à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API dans le menu.

    • La boîte de dialogue Clé API créée affiche la chaîne de clé API. Copiez votre chaîne de clé et conservez-la à un emplacement sécurisé. Vous avez besoin de cette clé API pour configurer l'authentification dans Google Cloud.

    • Par défaut, les clés API ne sont pas restreintes. Nous vous recommandons de limiter les clés API en sélectionnant les API auxquelles cette clé API peut être utilisée. Pour en savoir plus sur l'ajout de restrictions d'API, consultez la section Ajouter des restrictions d'API.

Créer un secret et stocker la clé API

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Cliquez sur Créer un secret.

  3. Sur la page Créer un secret, sous Nom, saisissez le nom du secret. Un nom de secret peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union et des traits de soulignement. La longueur maximale autorisée pour un nom est de 255 caractères.

  4. Dans le champ Valeur du secret, saisissez la clé API que vous avez créée dans la section Créer une clé API.

  5. Cliquez sur Créer un secret. Le contenu de votre secret est stocké dans une version de secret.

  6. Cliquez sur le nom du secret que vous avez créé.

  7. Dans l'onglet Versions qui s'affiche, notez les points suivants :

    • Nom du secret
    • Version

    Vous avez besoin de ces informations secrètes lors de la configuration de l'authentification sur Google Cloud.

Configurer le SDK ABAP pour Google Cloud afin d'utiliser la clé API de Secret Manager

Créez des artefacts de gestion des communications à l'aide des applications de gestion des communications SAP.

Pour créer des artefacts de gestion des communications pour l'authentification à l'aide du service XSUAA et de la fédération d'identité de charge de travail, utilisez le scénario de communication /GOOG/COM_SDK_APIKSM fourni avec le SDK ABAP pour Google Cloud.

Vous allez ensuite utiliser la configuration du SDK de l'application Fiori pour créer un plan de communication. Dans le plan de communication, vous définissez une clé client unique que vous utilisez dans votre programme ABAP pour vous authentifier auprès de Google Cloud.

  1. Accéder à la plate-forme de lancement SAP Fiori du système BTP ABAP dans lequel le SDK ABAP pour Google Cloud est installé.
  2. Accédez à Tous les espaces > Administration > Gestion de la communication.
  3. Créez un système de communication :
    1. Ouvrez l'application Systèmes de communication.
    2. Cliquez sur New (Nouveau).
    3. Dans la boîte de dialogue Nouveau système de communication qui s'affiche, saisissez une valeur pour les champs suivants :
      • ID système : saisissez un ID système.
      • Nom du système : saisissez un nom du système.
    4. Cliquez sur Créer.
    5. Dans le champ Nom d'hôte, saisissez l'URL sans https:// parmi les identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
    6. Dans le champ Port, saisissez 443.
    7. Dans l'onglet Utilisateurs pour les communications sortantes, cliquez sur Ajouter.
    8. Spécifiez les informations suivantes :
      • Méthode d'authentification : sélectionnez Nom d'utilisateur et mot de passe.
      • Nom d'utilisateur/ID client : saisissez l'ID client à partir des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
      • Mot de passe : saisissez le code secret du client à partir des identifiants de clé de service que vous avez notés lors de la création de l'instance de service XSUAA.
    9. Cliquez sur Enregistrer.
  4. Créez une configuration de communication :

    1. Ouvrez l'application Configuration de communication.
    2. Cliquez sur New (Nouveau).
    3. Dans la boîte de dialogue Nouvelle configuration de communication qui s'affiche, saisissez les informations suivantes :

      • Scénario : sélectionnez Authentification à l'aide d'une clé API avec Secret Manager (/GOOG/COM_SDK_APIKSM).
      • Nom de la configuration : saisissez un nom pour la configuration de communication.
    4. Cliquez sur Créer.

    5. Pour la configuration de la communication qui s'affiche, dans le champ Système de communication, sélectionnez le système de communication que vous avez créé à l'étape précédente.

    6. Sous Propriétés supplémentaires, indiquez une valeur pour les propriétés suivantes :

    7. Sous Services sortants, saisissez /oauth/token dans le champ Chemin d'accès.

    8. Cliquez sur Enregistrer.

  5. Créez une clé client et un plan de communication :

    1. Accédez à l'espace contenant les applications Fiori pour la configuration du SDK.
    2. Ouvrez l'application SDK Google : configuration principale.
    3. Cliquez sur Créer.
    4. Dans la boîte de dialogue Créer qui s'affiche, saisissez un nom de clé client.
    5. Cliquez sur Continuer.
    6. Spécifiez les informations suivantes :

      • Compte de service : saisissez le compte de service autorisé à accéder aux API Google Cloud.
      • ID du projet : saisissez l'ID du projet Google Cloud. Pour en savoir plus sur l'ID de projet, consultez Identifier des projets.
      • Numéro du projet : saisissez le numéro du projet Google Cloud. Pour en savoir plus sur le numéro de projet, consultez la page Identifier des projets.
      • Type d'authentification : sélectionnez V (Clé API à l'aide de Secret Manager).
    7. Pour le plan de communication qui s'affiche, dans le champ Configuration de la communication, sélectionnez la configuration que vous avez créée à l'étape précédente.

    8. Cliquez sur Créer. Une boîte de dialogue s'affiche confirmant que vous acceptez d'utiliser le SDK ABAP pour Google Cloud conformément aux conditions d'utilisation standards de Google Cloud.

    9. Pour valider la configuration de l'authentification, cliquez sur Vérifier la connexion. Une coche verte pour une entrée indique que la configuration a réussi. En cas d'erreur, consultez la page Dépannage pour obtenir des conseils sur la résolution des erreurs courantes.

Obtenir de l'aide

Procédez comme suit si vous avez besoin d'aide pour résoudre les problèmes liés au SDK ABAP pour Google Cloud :