Ce document explique comment s'authentifier auprès de Google Cloud à l'aide de jetons via la fédération d'identité de charge de travail. Avec la fédération d'identité de charge de travail, vous pouvez autoriser les charges de travail SAP sur site ou multicloud à accéder aux ressources Google Cloud sans utiliser de clé de compte de service. Vous pouvez utiliser la fédération d'identité avec Amazon Web Services (AWS) ou avec n'importe quel fournisseur d'identité (IdP) compatible avec OpenID Connect (OIDC), tel que Microsoft Azure, ou SAML 2.0.
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 IdP au service de jetons de sécurité, qui vérifie l'identité sur l'identifiant, puis renvoie en échange un jeton d'accès. Vous pouvez utiliser ce jeton pour emprunter l'identité d'un compte de service et obtenir un jeton d'accès 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, les étapes de configuration de haut niveau sont les suivantes :
- Préparez votre fournisseur d'identité externe.
- Dans Google Cloud, configurez la fédération d'identité de charge de travail.
- Dans Google Cloud, créez un compte de service.
- Dans Google Cloud, autorisez la charge de travail externe à emprunter l'identité du compte de service.
- Dans le SDK ABAP pour Google Cloud, implémentez le code ABAP pour récupérer les jetons de sécurité à partir de votre fournisseur d'identité (IdP).
- Dans le SDK ABAP pour Google Cloud, configurez la clé client.
Tous les produits Google Cloud ne sont pas compatibles avec la fédération d'identité de charge de travail. Avant de configurer l'authentification à l'aide de la fédération d'identité de charge de travail, consultez la liste des produits compatibles et les limites. Pour en savoir plus, consultez la page Fédération des identités des employés : produits compatibles et limitations.
Préparer votre fournisseur d'identité externe
Vous devez préparer votre IdP afin que votre charge de travail SAP puisse obtenir des identifiants pouvant être échangés contre un jeton de sécurité Google OAuth 2.0.
Pour préparer votre fournisseur d'identité externe, procédez comme suit en fonction de votre fournisseur d'identité :
- Si vous utilisez AWS ou Azure comme fournisseur d'identité, suivez les instructions pour préparer votre fournisseur d'identité externe.
- Si vous utilisez d'autres fournisseurs d'identité, suivez les instructions pour préparer votre fournisseur d'identité externe.
Configurer la fédération d'identité de charge de travail
Dans Google Cloud, configurez le pool d'identités de charge de travail et les fournisseurs.
Vous configurez un pool d'identités, qui est une entité permettant de gérer des identités externes. Vous configurez également un fournisseur de pools d'identités de charge de travail, qui est une entité décrivant une relation entre Google Cloud et votre IdP.
Pour configurer la fédération d'identité de charge de travail, procédez comme suit en fonction de votre fournisseur d'identité externe :
- Si vous utilisez AWS ou Azure comme IdP, suivez les instructions pour créer le pool d'identités de charge de travail et le fournisseur.
- Si vous utilisez d'autres fournisseurs d'identité, suivez les instructions pour créer le pool d'identités de charge de travail et le fournisseur.
Remarques :
- Numéro du projet : numéro du projet Google Cloud dans lequel vous avez créé le pool d'identités de charge de travail.
- ID du pool : ID unique qui identifie le pool d'identités de charge de travail.
- ID du fournisseur : ID qui identifie le fournisseur du pool d'identités de charge de travail.
Vous en avez besoin pour la configuration de la clé client du SDK ABAP.
Créer un compte de service
Dans la console Google Cloud, créez un compte de service IAM dédié pour accéder aux API Google Cloud. 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.
Dans la console Google Cloud, activez l'API Service Account Credentials IAM, l'API Security Token Service et toute autre API compatible à laquelle vous prévoyez d'accéder à l'aide du SDK.
Accéder à la bibliothèque d'API
Pour en savoir plus sur l'activation des API Google Cloud, consultez la page Activer des API.
Créez un compte de service qui représente la charge de travail.
Attribuez 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 page Rechercher des rôles IAM pour les API Google Cloud.
Autoriser la charge de travail externe à emprunter l'identité du compte de service
Pour autoriser la charge de travail externe à emprunter l'identité du compte de service, procédez comme suit en fonction de votre fournisseur d'identité externe :
- Si vous utilisez AWS ou Azure comme fournisseur d'identité, suivez les instructions pour autoriser la charge de travail externe à emprunter l'identité du compte de service.
- Si vous utilisez d'autres fournisseurs d'identité, suivez les instructions pour autoriser la charge de travail externe à emprunter l'identité du compte de service.
Implémentez le code ABAP pour récupérer les jetons de sécurité à partir de votre IdP
Le SDK ABAP pour Google Cloud fournit une classe abstraite /GOOG/CL_AUTH_WIF_BASE
, qui dispose de la logique permettant de récupérer les jetons de sécurité OAuth 2.0 du service de jetons de sécurité, et les jetons d'accès OAuth 2.0 à partir de l'API IAM Service Account Credentials. En tant que développeur, vous devez créer une classe enfant dans votre espace de noms qui hérite de la classe abstraite /GOOG/CL_AUTH_WIF_BASE
.
Pour appeler des fonctions Cloud Run à partir du SDK ABAP pour Google Cloud à l'aide de la fédération d'identité de charge de travail, le SDK fournit une autre classe abstraite /GOOG/CL_AUTH_WIF_ID_TOKEN
. Si vous configurez l'authentification à l'aide de Workload Identity Federation, vous devez créer une autre classe enfant dans votre espace de noms qui hérite de la classe abstraite /GOOG/CL_AUTH_WIF_ID_TOKEN
. Vous spécifiez cette classe enfant dans le champ Classe d'autorisation lors de la configuration de la clé client pour appeler Cloud Run Functions.
Veillez à implémenter la méthode GET_EXT_IDP_TOKEN
dans la classe enfant et à écrire la logique permettant d'obtenir le jeton de sécurité de votre IdP. Complétez les champs suivants :
CV_TOKEN
: jeton récupéré à partir de votre fournisseur d'identité au formatstring
.CV_TOKEN_TYPE
: type de jeton de sécurité récupéré à partir de votre fournisseur d'identité. Les types de jetons compatibles sont les suivants :urn:ietf:params:oauth:token-type:jwt
urn:ietf:params:oauth:token-type:id_token
urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:token-type:access_token
urn:ietf:params:oauth:token-type:saml2
Les valeurs renseignées dans CV_TOKEN
et CV_TOKEN_TYPE
sont ensuite utilisées par les méthodes de la classe abstraite /GOOG/CL_AUTH_WIF_BASE
pour échanger et récupérer le jeton OAuth 2.0 final, qui est utilisé dans les appels d'API.
L'exemple suivant montre les implémentations d'exemple de la méthode GET_EXT_IDP_TOKEN
pour d'autres fournisseurs de services cloud tels qu'AWS et Azure.
AWS
Azure
Configurer la clé client
-
Dans l'interface utilisateur graphique de SAP, exécutez le code de transaction
/GOOG/SDK_IMG
.Vous pouvez également exécuter le code de transaction
SPRO
, puis cliquer sur SAP Reference IMG (IMG de référence SAP). - Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer la clé client.
- Cliquez sur Nouvelles entrées.
Renseignez les champs suivants :
Champ Description Nom de la clé Google Cloud Spécifiez un nom de configuration de clé client. Nom du compte de service Google Cloud Spécifiez le nom du compte de service (au format d'adresse e-mail) créé pour accéder aux API Google Cloud à l'étape Créer un compte de service. Par exemple : sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Champ d'application Google Cloud Laissez ce champ vide. Identifiant de projet Google Cloud Indiquez l'ID du projet Google Cloud dans lequel vous avez créé le pool d'identités de charge de travail. Nom de la commande Laissez ce champ vide. Classe d'autorisation Spécifiez la classe enfant, qui contient l'implémentation de la classe /GOOG/CL_AUTH_WIF_BASE
. Pour en savoir plus, consultez la section Implémenter du code ABAP pour récupérer les jetons de sécurité à partir de votre IdP.Mise en cache des jetons Laissez ce champ vide. Secondes avant actualisation du jeton Laissez ce champ vide. Paramètre d'autorisation 1 Indiquez l'ID du pool d'identités de charge de travail. Paramètre d'autorisation 2 Indiquez l'ID du fournisseur d'identité de charge de travail. Enregistrez l'entrée.
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 :
Consultez le guide de dépannage du SDK ABAP pour Google Cloud.
Posez vos questions concernant le SDK ABAP pour Google Cloud et discutez de celui-ci avec la communauté sur les forums Cloud.
Recueillez toutes les informations de diagnostic disponibles et contactez Cloud Customer Care. Pour savoir comment contacter le service client, consultez la page Obtenir de l'aide pour SAP sur Google Cloud.