1. مقدمة
في هذا الدرس التطبيقي، أدرجنا الخطوات اللازمة لاسترداد بيانات الاعتماد أو الأسرار من Google Cloud Secret Manager API باستخدام ABAP SDK for Google Cloud.
يتم استخدام خدمات Google Cloud التالية في هذا الدرس العملي:
- Secret Manager
- Cloud Shell
ما ستنشئه
ستنفّذ ما يلي:
- فعِّل Secret Manager API في مشروع على Google Cloud.
- إنشاء سرّ
- إضافة نسخة من المفتاح السرّي
- الوصول إلى سر أو استرداده باستخدام حزمة تطوير البرامج (SDK) ABAP لخدمة Google Cloud
في هذا الدرس العملي، سيتم تنفيذ خطوات إنشاء سرّ وإضافة إصدار سرّ من خلال أوامر gcloud، ولكن يمكن أيضًا تنفيذ ذلك باستخدام مكتبة العميل في Secret Manager المتوفّرة مع حزمة تطوير البرامج (SDK) للغة ABAP في 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 1909 على Google Cloud Platform وتثبيت حزمة تطوير البرامج (SDK) لمنصة ABAP لإعداد نظام جديد.
- ستستخدم 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 التي ستتعامل معها في هذا الدرس التطبيقي حول الترميز:
- Secret: Secret هو عنصر على مستوى المشروع يحتوي على مجموعة من البيانات الوصفية وإصدارات Secret.
- إصدار السّر: يخزّن إصدار السّر بيانات السّر الفعلية، مثل مفاتيح واجهة برمجة التطبيقات أو كلمات المرور أو الشهادات.
5- تفعيل Secret Manager في مشروعك على Google Cloud
- انتقِل إلى مشروعك على Google Cloud وانقر على تفعيل 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
كعنصر نائب لمشروع 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. بالنسبة إلى الإعدادات ذات الصلة بالمصادقة والاتصال، يستخدم حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud الجدول /GOOG/CLIENT_KEY.
للحفاظ على الإعدادات في الجدول /GOOG/CLIENT_KEY، اتّبِع الخطوات التالية:
- في SAP GUI، أدخِل رمز المعاملة SPRO.
- انقر على SAP Reference IMG.
- انقر على حزمة تطوير البرامج (SDK) للغة ABAP على 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>> |
فئة التفويض | /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. تهانينا
تهانينا! لقد استرجعت بنجاح سرًا مخزّنًا في Google Cloud Platform Secret Manager باستخدام حزمة تطوير البرامج (SDK) للغة ABAP في Google Cloud.
يتضمّن Google Cloud Secret Manager ميزات أخرى أيضًا، مثل:
- تصحيح مفتاح سرّي
- إتلاف نسخة سرية
- حذف سرّ
يمكنك استدعاء ميزات Secret Manager هذه من خلال حزمة تطوير البرامج (SDK) للغة ABAP في Google Cloud من تطبيقات SAP.
12. تَنظيم
إذا كنت لا تريد مواصلة استخدام دروس البرمجة الإضافية المتعلّقة بحزمة تطوير البرامج (SDK) للغة ABAP على 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