אחזור פרטי כניסה/סודות מ-Google Cloud Secret Manager באמצעות ABAP SDK ל-Google Cloud

1. מבוא

בקודלאב הזה פירטנו את השלבים לאחזור פרטי כניסה או סודות מ-Google Cloud Secret Manager API באמצעות ABAP SDK for Google Cloud.

בקודלאב הזה נעשה שימוש בשירותי Google Cloud הבאים:

  • Secret Manager
  • Cloud Shell

מה תפַתחו

עליכם לבצע את הפעולות הבאות:

  • מפעילים את Secret Manager API בפרויקט ב-Google Cloud.
  • יצירת סוד.
  • מוסיפים גרסה סודית.
  • גישה למפתח סודי או אחזור שלו באמצעות ABAP SDK ל-Google Cloud.

בקודלאב הזה, השלבים ליצירת סוד ולהוספת גרסה של סוד יבוצעו באמצעות פקודות gcloud, אבל אפשר לעשות זאת גם באמצעות ספריית הלקוח של Secret Manager שסופקה עם ABAP SDK ל-Google Cloud.

2. דרישות

  • דפדפן, כמו Chrome או Firefox.
  • פרויקט ב-Google Cloud שבו החיוב מופעל, או יצירת חשבון לתקופת ניסיון בחינם של 90 יום ב-Google Cloud Platform.
  • SAP GUI (Windows או Java) מותקן במערכת. אם SAP GUI כבר מותקן במחשב הנייד, מתחברים ל-SAP באמצעות כתובת ה-IP החיצונית של המכונה הווירטואלית ככתובת ה-IP של שרת האפליקציות. אם אתם משתמשים ב-Mac, תוכלו גם להתקין את SAP GUI for Java שזמין בקישור הזה.

3. לפני שמתחילים

6757b2fb50ddcc2d.png

  • מריצים את הפקודות הבאות כדי לבצע אימות לחשבון ולהגדיר את פרויקט ברירת המחדל כ-abap-sdk-poc. הדוגמה היא לתחום us-west4-b. אם צריך, משנים את הפרויקט ואת האזור בפקודות הבאות בהתאם להעדפות שלכם.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. סקירה כללית

לפניכם סקירה כללית מהירה של חלק מהישויות ב-Secret Manager שאותן תעבדו איתן בקודלאב הזה:

  • סוד – סוד הוא אובייקט ברמת הפרויקט שמכיל אוסף של מטא-נתונים וגרסאות של סודות.
  • גרסת סוד – בגרסת סוד מאוחסנים נתוני הסוד בפועל, כמו מפתחות API, סיסמאות או אישורים.

5. הפעלת Secret Manager בפרויקט ב-Google Cloud

  1. עוברים לפרויקט ב-Google Cloud ולוחצים על Activate Cloud Shell בפינה הימנית העליונה.

8d15f753321c53e6.png

  1. מריצים את הפקודה הבאה כדי להפעיל את Cloud Secret Manager API בפרויקט ב-Google Cloud.
gcloud services enable secretmanager.googleapis.com

עכשיו Secret Manager API אמור להיות מופעל בפרויקט ב-Google Cloud.

6. יצירת חשבון שירות עם תפקידי משתמש ב-Secret Manager

כדי ליצור חשבון שירות עם התפקידים הנדרשים:

  1. מריצים את הפקודה הבאה במסוף Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. מוסיפים את התפקידים הנדרשים לחשבון השירות שנוצר בשלב הקודם כדי ליצור סוד, להוסיף גרסה של סוד ולגשת לגרסה של סוד.
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'

בפקודות שלמעלה, abap-sdk-poc משמש כ-placeholder לפרויקט ב-Google Cloud. מחליפים את abap-sdk-poc במזהה הפרויקט.

  • כדי לוודא שהתפקיד נוסף, עוברים לדף IAM. חשבון השירות שיצרתם אמור להופיע יחד עם התפקיד שהוקצה לו.

7. יצירת סוד

  • ב-Cloud Shell, מריצים את הפקודה הבאה כדי ליצור סוד בשם demo-secret לקודלאב הזה:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

אמורה להופיע שם הסוד שיצרתם בפרויקט ב-Google Cloud, כפי שמוצג בהמשך.

99a318dbdd37af4e.png

8. הוספת גרסה של סוד

  1. ב-Cloud Shell, מריצים את הפקודה הבאה כדי להוסיף גרסה של סוד לסוד 'demo-secret'.
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

נוצרת גרסה סודית. כדי להציג את הפרטים, לוחצים על 'demo-secret' .

bbf6b9f2f9c4340a.png

  1. לוחצים על שלוש הנקודות בצד שמאל ובוחרים באפשרות הצגת הערך הסודי. הסוד השמור יוצג.

6f3afd0ac25445bf.png

9. יצירת הגדרות SDK ב-SAP

עכשיו, אחרי שהגדרת את הדרישות המוקדמות בצד של Google Cloud, נוכל להמשיך בהגדרה בצד של SAP. להגדרות שקשורות לאימות ולקישוריות, ה-ABAP SDK ל-Google Cloud משתמש בטבלה /GOOG/CLIENT_KEY.

כדי לשמור על ההגדרות בטבלה /GOOG/CLIENT_KEY:

  1. בממשק המשתמש של SAP, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
  4. שומרים את הערכים הבאים בשדות:

שדה

תיאור

שם המפתח ב-Google Cloud

SECRET_MANAGER_DEMO

שם חשבון השירות ב-Google Cloud

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

היקף Google Cloud

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

מזהה הפרויקט ב-Google Cloud

<<מזהה הפרויקט שלך ב-Google Cloud>>

Authorization Class

/GOOG/CL_AUTH_GOOGLE

משאירים את שאר השדות ריקים.

10. אחזור סוד באמצעות ה-SDK

  1. מתחברים למערכת SAP.
  2. עוברים לקוד העסקה SE38 ויוצרים דוח בשם ZDEMO_ACCESS_SECRET.
  3. בחלון הקופץ שנפתח, מזינים את הפרטים כפי שמתואר בהמשך ולוחצים על שמירה.

b1ef7c7744ceb5ce.png

  1. בחלון הקופץ הבא, בוחרים באפשרות Local Object (אובייקט מקומי) או מספקים שם לחבילה בהתאם.
  • בעורך ABAP, מוסיפים את הקוד הבא:
* 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. שומרים ומפעילים את תוכנית הדוחות.
  2. מפעילים את הדוח (מקישים על F8).

אם הפקודה תתבצע בהצלחה, הפלט של הדוח אמור להיראות כך:

24acec0fc2d4d18b.png

11. מזל טוב

מעולה! אחזרתם בהצלחה סוד ששמור ב-Secret Manager של Google Cloud Platform באמצעות ABAP SDK ל-Google Cloud.

ל-Google Cloud Secret Manager יש גם תכונות אחרות, כמו:

  • תיקון של סוד
  • השמדת גרסה של סוד
  • מחיקת סוד

אפשר להפעיל את התכונות האלה של Secret Manager דרך ABAP SDK ל-Google Cloud מאפליקציות SAP.

12. הסרת המשאבים

אם אתם לא רוצים להמשיך בקודלאבים הנוספים שקשורים ל-ABAP SDK ל-Google Cloud, תוכלו להמשיך לניקוי.

מחיקת הפרויקט

  • מוחקים את הפרויקט ב-Google Cloud:
gcloud projects delete abap-sdk-poc

מחיקת משאבים ספציפיים

  1. מוחקים את מכונה לעיבוד נתונים:
gcloud compute instances delete abap-trial-docker
  1. מוחקים את firewall-rules:
gcloud compute firewall-rules delete sapmachine
  1. מוחקים את חשבון השירות:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com