استرداد بيانات الاعتماد/السمات السرية من Google Cloud Secret Manager باستخدام حزمة تطوير البرامج (SDK) لـ ABAP في Google Cloud

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- قبل البدء

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 التي ستتعامل معها في هذا الدرس التطبيقي حول الترميز:

  • Secret: Secret هو عنصر على مستوى المشروع يحتوي على مجموعة من البيانات الوصفية وإصدارات Secret.
  • إصدار السّر: يخزّن إصدار السّر بيانات السّر الفعلية، مثل مفاتيح واجهة برمجة التطبيقات أو كلمات المرور أو الشهادات.

5- تفعيل Secret Manager في مشروعك على Google Cloud

  1. انتقِل إلى مشروعك على Google Cloud وانقر على تفعيل 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 كعنصر نائب لمشروع 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. بالنسبة إلى الإعدادات ذات الصلة بالمصادقة والاتصال، يستخدم حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud الجدول ‎ /GOOG/CLIENT_KEY.

للحفاظ على الإعدادات في الجدول /GOOG/CLIENT_KEY، اتّبِع الخطوات التالية:

  1. في SAP GUI، أدخِل رمز المعاملة SPRO.
  2. انقر على SAP Reference IMG.
  3. انقر على حزمة تطوير البرامج (SDK) للغة ABAP على 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>>

فئة التفويض

/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. تهانينا

تهانينا! لقد استرجعت بنجاح سرًا مخزّنًا في 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

حذف موارد فردية

  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