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. לפני שמתחילים
- התקנתם את ABAP SDK for Google Cloud במערכת. כדי להגדיר מערכת חדשה, אפשר לעיין בקודלאב התקנת ABAP Platform Trial 1909 ב-Google Cloud Platform והתקנת ABAP SDK.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud.
- במסוף Cloud, לוחצים על Activate Cloud Shell בפינה הימנית העליונה:
- מריצים את הפקודות הבאות כדי לבצע אימות לחשבון ולהגדיר את פרויקט ברירת המחדל כ-
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 שאותן תעבדו איתן בקודלאב הזה:
5. הפעלת Secret Manager בפרויקט ב-Google Cloud
- עוברים לפרויקט ב-Google Cloud ולוחצים על Activate Cloud Shell בפינה הימנית העליונה.
- מריצים את הפקודה הבאה כדי להפעיל את Cloud Secret Manager API בפרויקט ב-Google Cloud.
gcloud services enable secretmanager.googleapis.com
עכשיו Secret Manager API אמור להיות מופעל בפרויקט ב-Google Cloud.
6. יצירת חשבון שירות עם תפקידי משתמש ב-Secret Manager
כדי ליצור חשבון שירות עם התפקידים הנדרשים:
- מריצים את הפקודה הבאה במסוף Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
- מוסיפים את התפקידים הנדרשים לחשבון השירות שנוצר בשלב הקודם כדי ליצור סוד, להוסיף גרסה של סוד ולגשת לגרסה של סוד.
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, כפי שמוצג בהמשך.
8. הוספת גרסה של סוד
- ב-Cloud Shell, מריצים את הפקודה הבאה כדי להוסיף גרסה של סוד לסוד 'demo-secret'.
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
נוצרת גרסה סודית. כדי להציג את הפרטים, לוחצים על 'demo-secret' .
- לוחצים על שלוש הנקודות בצד שמאל ובוחרים באפשרות הצגת הערך הסודי. הסוד השמור יוצג.
9. יצירת הגדרות SDK ב-SAP
עכשיו, אחרי שהגדרת את הדרישות המוקדמות בצד של Google Cloud, נוכל להמשיך בהגדרה בצד של SAP. להגדרות שקשורות לאימות ולקישוריות, ה-ABAP SDK ל-Google Cloud משתמש בטבלה /GOOG/CLIENT_KEY.
כדי לשמור על ההגדרות בטבלה /GOOG/CLIENT_KEY:
- בממשק המשתמש של SAP, מזינים את קוד העסקה SPRO.
- לוחצים על SAP Reference IMG.
- לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
- שומרים את הערכים הבאים בשדות:
שדה | תיאור |
שם המפתח ב-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
- מתחברים למערכת SAP.
- עוברים לקוד העסקה SE38 ויוצרים דוח בשם ZDEMO_ACCESS_SECRET.
- בחלון הקופץ שנפתח, מזינים את הפרטים כפי שמתואר בהמשך ולוחצים על שמירה.
- בחלון הקופץ הבא, בוחרים באפשרות 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.
- שומרים ומפעילים את תוכנית הדוחות.
- מפעילים את הדוח (מקישים על F8).
אם הפקודה תתבצע בהצלחה, הפלט של הדוח אמור להיראות כך:
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
מחיקת משאבים ספציפיים
- מוחקים את מכונה לעיבוד נתונים:
gcloud compute instances delete abap-trial-docker
- מוחקים את firewall-rules:
gcloud compute firewall-rules delete sapmachine
- מוחקים את חשבון השירות:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com