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. לפני שמתחילים
- התקנתם את ABAP SDK for Google Cloud במערכת שלכם. אפשר לעיין ב-codelab – Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK כדי להגדיר מערכת חדשה.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud.
- בפינה הימנית העליונה של Cloud Console, לוחצים על 'הפעלת 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 שבהן תעבדו ב-codelab הזה:
5. הפעלת Secret Manager בפרויקט ב-Google Cloud
- עוברים לפרויקט Google Cloud ולוחצים על Activate Cloud Shell (הפעלת 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 עבור ה-codelab הזה:
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.
- לוחצים על סמל האפשרויות הנוספות (3 נקודות) משמאל ובוחרים באפשרות הצגת ערך הסוד. הסוד המאוחסן יוצג.
9. יצירת הגדרות SDK ב-SAP
אחרי שהגדרתם את הדרישות המוקדמות בצד של Google Cloud, אפשר להמשיך להגדרה בצד של SAP. לצורך הגדרה שקשורה לאימות ולקישוריות, ה-SDK של ABAP ל-Google Cloud משתמש בטבלה /GOOG/CLIENT_KEY.
כדי לשמור על ההגדרה בטבלה /GOOG/CLIENT_KEY, מבצעים את השלבים הבאים:
- ב-SAP GUI, מזינים את קוד העסקה SPRO.
- לוחצים על SAP Reference IMG.
- לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK for Google Cloud > הגדרות בסיסיות > הגדרת מפתח לקוח).
- מזינים את הערכים הבאים בשדות:
שדה | תיאור |
שם המפתח ב-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 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.
- שומרים ומפעילים את תוכנית הדוחות.
- מריצים את הדוח (לוחצים על F8).
אם ההרצה תתבצע בהצלחה, תראו את פלט הדוח כמו שמוצג בהמשך:
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
מחיקת משאבים ספציפיים
- מוחקים את מכונת החישוב:
gcloud compute instances delete abap-trial-docker
- מוחקים את הכללים של חומת האש:
gcloud compute firewall-rules delete sapmachine
- מוחקים את חשבון השירות:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com