Récupérer des identifiants/des secrets à partir de Google Cloud Secret Manager avec le SDK ABAP pour Google Cloud

1. Introduction

Dans cet atelier de programmation, nous avons décrit la procédure à suivre pour récupérer des identifiants ou des secrets à partir de l'API Google Cloud Secret Manager à l'aide du SDK ABAP pour Google Cloud.

Les services Google Cloud suivants sont utilisés dans cet atelier de programmation:

  • Secret Manager
  • Cloud Shell

Ce que vous allez faire

Vous allez effectuer les opérations suivantes:

  • Activez l'API Secret Manager dans un projet Google Cloud.
  • Créer un secret
  • Ajoutez une version de secret.
  • Accéder/Récupérer un secret à l'aide du SDK ABAP pour Google Cloud

Dans cet atelier de programmation, les étapes de création d'un secret et d'ajout d'une version de secret seront effectuées à l'aide de commandes gcloud. Vous pouvez également utiliser la bibliothèque cliente de Secret Manager fournie avec le SDK ABAP pour Google Cloud.

2. Conditions requises

  • Un navigateur (Chrome ou Firefox, par exemple)
  • Un projet Google Cloud pour lequel la facturation est activée ou créez un compte d'essai sans frais de 90 jours pour Google Cloud Platform.
  • Interface utilisateur graphique SAP (Windows ou Java) installée sur votre système. Si l'interface utilisateur SAP est déjà installée sur votre ordinateur portable, connectez-vous à SAP à l'aide de l'adresse IP externe de la VM comme adresse du serveur d'applications. Si vous utilisez un Mac, vous pouvez également installer la GUI SAP pour Java disponible sur ce lien.

3. Avant de commencer

6757b2fb50ddcc2d.png

  • Exécutez les commandes suivantes pour vous authentifier pour votre compte et définir le projet par défaut sur abap-sdk-poc. La zone us-west4-b est utilisée comme exemple. Si nécessaire, veuillez modifier le projet et la zone dans les commandes suivantes en fonction de vos préférences.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Présentation

Voici un bref aperçu de certaines des entités de Secret Manager que vous allez utiliser dans cet atelier de programmation:

  • Secret : un secret est un objet de projet global qui contient un ensemble de métadonnées et de versions de secrets.
  • Version de secret : une version de secret stocke les données réelles du secret, telles que des clés API, des mots de passe ou des certificats.

5. Activer Secret Manager dans votre projet Google Cloud

  1. Accédez à votre projet Google Cloud, puis cliquez sur Activer Cloud Shell en haut à droite.

8d15f753321c53e6.png

  1. Exécutez la commande suivante pour activer l'API Cloud Secret Manager dans votre projet Google Cloud.
gcloud services enable secretmanager.googleapis.com

L'API Secret Manager devrait maintenant être activée dans votre projet Google Cloud.

6. Créer un compte de service avec des rôles utilisateur Secret Manager

Pour créer un compte de service avec les rôles requis, procédez comme suit:

  1. Exécutez la commande suivante dans le terminal Cloud Shell :
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Ajoutez les rôles requis au compte de service créé à l'étape précédente pour créer un secret, ajouter une version de secret et y accéder.
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.secrets.create'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.add'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.access'

Les commandes ci-dessus utilisent abap-sdk-poc comme espace réservé pour le projet Google Cloud. Remplacez abap-sdk-poc par l'ID de votre projet.

  • Pour vérifier que le rôle a bien été ajouté, accédez à la page IAM. Le compte de service que vous avez créé doit être listé avec le rôle qui lui a été attribué.

7. Créer un secret

  • Dans Cloud Shell, exécutez la commande suivante pour créer un secret nommé "demo-secret" pour cet atelier de programmation:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Vous devriez voir un secret créé dans votre projet Google Cloud, comme illustré ci-dessous.

99a318dbdd37af4e.png

8. Ajouter une version de secret

  1. Dans Cloud Shell, exécutez la commande suivante pour ajouter une version de secret au secret "demo-secret".
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Une version de secret est créée. Pour afficher les détails, cliquez sur "demo-secret" .

bbf6b9f2f9c4340a.png

  1. Cliquez sur les trois points à droite, puis sélectionnez Afficher la valeur du secret. Le secret stocké s'affiche.

6f3afd0ac25445bf.png

9. Créer des configurations de SDK dans SAP

Maintenant que vous avez configuré les conditions préalables côté Google Cloud, nous pouvons passer à la configuration côté SAP. Pour la configuration de l'authentification et de la connectivité associée, le SDK ABAP pour Google Cloud utilise la table /GOOG/CLIENT_KEY.

Pour gérer la configuration dans la table /GOOG/CLIENT_KEY, procédez comme suit:

  1. Dans l'IUG de SAP, saisissez le code de transaction SPRO.
  2. Cliquez sur SAP Reference IMG.
  3. Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer la clé client.
  4. Maintenez les valeurs suivantes pour les champs:

Champ

Description

Nom de la clé Google Cloud

SECRET_MANAGER_DEMO

Nom du compte de service Google Cloud

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Champ d'application Google Cloud

https://www.googleapis.com/auth/cloud-platform

Identifiant de projet Google Cloud

<<ID de votre projet Google Cloud>>

Classe d'autorisation

/GOOG/CL_AUTH_GOOGLE

Laissez les autres champs vides.

10. Récupérer un secret à l'aide du SDK

  1. Connectez-vous à votre système SAP.
  2. Accédez au code de transaction SE38, puis créez un rapport nommé "ZDEMO_ACCESS_SECRET".
  3. Dans la fenêtre pop-up qui s'affiche, renseignez les informations comme indiqué ci-dessous, puis cliquez sur Enregistrer.

b1ef7c7744ceb5ce.png

  1. Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
  • Dans l'éditeur ABAP, ajoutez le code suivant :
* Data declarations
 DATA:
   lv_p_projects_id TYPE string,
   lv_p_secrets_id  TYPE string,
   lv_p_versions_id TYPE string.

 TRY.
* Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_secretmgr_v1( iv_key_name = 'SECRET_MANAGER_DEMO' ).

* Populate relevant parameters
 lv_p_projects_id = lo_client->gv_project_id.
 lv_p_secrets_id = 'demo-secret'.
 lv_p_versions_id = 'latest'.

* Call API method: secretmanager.projects.secrets.versions.access
     lo_client->access_versions(
       EXPORTING
         iv_p_projects_id = lv_p_projects_id
         iv_p_secrets_id  = lv_p_secrets_id
         iv_p_versions_id = lv_p_versions_id
       IMPORTING
         es_output        = DATA(ls_output)
         ev_ret_code      = DATA(lv_ret_code)
         ev_err_text      = DATA(lv_err_text)
         es_err_resp      = DATA(ls_err_resp) ).
     IF lo_client->is_success( lv_ret_code ).
      cl_http_utility=>if_http_utility~decode_base64(
        EXPORTING
          encoded = ls_output-payload-data
        RECEIVING
          decoded = DATA(lv_decoded_secret) ).
       DATA(lv_msg) = 'Secret data fetched successfully, Decoded Secret: ' && lv_decoded_secret.
      cl_demo_output=>display( lv_msg ).
     ELSE.
       lv_msg = lv_ret_code && ':' && lv_err_text.
       cl_demo_output=>display( lv_msg ).

     ENDIF.

* Close HTTP Connection
     lo_client->close( ).

   CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.

 ENDTRY.
  1. Enregistrez et activez le programme de création de rapports.
  2. Exécutez le rapport (appuyez sur F8).

Si l'exécution réussit, le résultat du rapport s'affiche comme suit:

24acec0fc2d4d18b.png

11. Félicitations !

Félicitations ! Vous avez récupéré un secret stocké dans Google Cloud Platform Secret Manager à l'aide du SDK ABAP pour Google Cloud.

Google Cloud Secret Manager propose également d'autres fonctionnalités, par exemple:

  • Appliquer un correctif à un secret
  • Détruire une version de secret
  • Supprimer un secret

Vous pouvez appeler ces fonctionnalités Secret Manager via le SDK ABAP pour Google Cloud à partir de vos applications SAP.

12. Effectuer un nettoyage

Si vous ne souhaitez pas poursuivre les ateliers de programmation supplémentaires liés au SDK ABAP pour Google Cloud, veuillez procéder au nettoyage.

Supprimer le projet

  • Supprimez le projet Google Cloud:
gcloud projects delete abap-sdk-poc

Supprimer des ressources individuelles

  1. Supprimez l'instance de calcul:
gcloud compute instances delete abap-trial-docker
  1. Supprimez les règles de pare-feu:
gcloud compute firewall-rules delete sapmachine
  1. Supprimez le compte de service :
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com