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

1. מבוא

ב-codelab הזה מפורטים השלבים לאחזור פרטי כניסה או סודות מ-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.

ב-codelab הזה, השלבים ליצירת סוד ולהוספת גרסה של סוד מתבצעים באמצעות פקודות 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 שבהן תעבדו ב-codelab הזה:

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

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

  1. עוברים לפרויקט Google Cloud ולוחצים על Activate Cloud Shell (הפעלת 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 עבור ה-codelab הזה:
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. לוחצים על סמל האפשרויות הנוספות (3 נקודות) משמאל ובוחרים באפשרות הצגת ערך הסוד. הסוד המאוחסן יוצג.

6f3afd0ac25445bf.png

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

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

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

  1. ב-SAP GUI, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK for Google Cloud > הגדרות בסיסיות > הגדרת מפתח לקוח).
  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 Editor, מוסיפים את הקוד הבא:.
* 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. מזל טוב

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

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

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

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

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

אם לא רוצים להמשיך עם ה-codelab הנוסף שקשור ל-ABAP SDK ל-Google Cloud, צריך להמשיך לניקוי.

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

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

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

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