بازیابی اطلاعات کاربری/اسرار از Google Cloud Secret Manager با ABAP SDK for Google Cloud

1. مقدمه

در این لبه کد، ما مراحل نحوه بازیابی اطلاعات کاربری یا اسرار را از Google Cloud Secret Manager API با استفاده از ABAP SDK برای Google Cloud فهرست کرده‌ایم.

خدمات Google Cloud زیر در این کد لبه استفاده می شود:

  • مدیر مخفی
  • پوسته ابری

چیزی که خواهی ساخت

شما موارد زیر را انجام خواهید داد:

  • فعال کردن Secret Manager API در پروژه Google Cloud.
  • یک راز ایجاد کنید.
  • یک نسخه مخفی اضافه کنید.
  • دسترسی/بازیابی یک راز با استفاده از ABAP SDK برای Google Cloud.

در این کد لبه، مراحل ایجاد یک راز و افزودن نسخه مخفی از طریق دستورات gcloud انجام می شود، اما این کار را می توان با استفاده از کتابخانه مشتری برای Secret Manager ارائه شده با ABAP SDK برای Google Cloud نیز انجام داد.

2. الزامات

  • یک مرورگر، مانند کروم یا فایرفاکس .
  • یک پروژه Google Cloud با فعال کردن صورت‌حساب یا ایجاد یک حساب آزمایشی رایگان 90 روزه برای Google Cloud Platform.
  • SAP GUI (ویندوز یا جاوا) در سیستم شما نصب شده است. اگر SAP GUI قبلاً روی لپ‌تاپ شما نصب شده است، با استفاده از آدرس IP خارجی VM به عنوان IP سرور برنامه، به SAP متصل شوید. اگر در مک هستید، می توانید SAP GUI برای جاوا را نیز در این لینک نصب کنید.

3. قبل از شروع

6757b2fb50ddcc2d.png

  • دستورات زیر را برای احراز هویت برای حساب خود اجرا کنید و پروژه پیش فرض را روی abap-sdk-poc تنظیم کنید. Zone 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 - یک راز یک شیء جهانی پروژه است که شامل مجموعه ای از ابرداده ها و نسخه های مخفی است.
  • نسخه مخفی - نسخه مخفی داده های مخفی واقعی مانند کلیدهای API، گذرواژه ها یا گواهی ها را ذخیره می کند.

5. Secret Manager را در پروژه Google Cloud خود فعال کنید

  1. به پروژه Google Cloud خود بروید و روی Activate Cloud Shell در گوشه سمت راست بالا کلیک کنید.

8d15f753321c53e6.png

  1. دستور زیر را برای فعال کردن Cloud Secret Manager در پروژه 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. یک راز ایجاد کنید

  • در پوسته ابری، دستور زیر را اجرا کنید تا یک راز با نام "demo-secret" برای این codelab ایجاد کنید:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

همانطور که در زیر نشان داده شده است، باید بتوانید یک راز ایجاد شده در پروژه Google Cloud خود را ببینید.

99a318dbdd37af4e.png

8. یک نسخه مخفی اضافه کنید

  1. در پوسته ابری، دستور زیر را اجرا کنید تا یک نسخه مخفی به "دمو-مخفی" مخفی اضافه شود.
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

یک نسخه مخفی ایجاد می شود. برای مشاهده جزئیات، روی "دمو-مخفی" کلیک کنید.

bbf6b9f2f9c4340a.png

  1. روی سه نقطه سمت راست کلیک کنید و View Secret Value را انتخاب کنید، راز ذخیره شده نشان داده می شود.

6f3afd0ac25445bf.png

9. تنظیمات SDK را در SAP ایجاد کنید

اکنون که پیش نیازها را در سمت Google Cloud تنظیم کرده‌اید، می‌توانیم با پیکربندی در سمت SAP پیش برویم. برای احراز هویت و پیکربندی مرتبط با اتصال، ABAP SDK برای Google Cloud از جدول /GOOG/CLIENT_KEY استفاده می‌کند.

برای حفظ پیکربندی در جدول /GOOG/CLIENT_KEY جدول، مراحل زیر را انجام دهید:

  1. در SAP GUI، کد تراکنش SPRO را وارد کنید.
  2. روی SAP Reference IMG کلیک کنید.
  3. روی ABAP SDK برای Google Cloud > Basic Settings > Configure Client Key کلیک کنید.
  4. مقادیر زیر را در برابر فیلدها حفظ کنید:

میدان

توضیحات

نام کلید Google Cloud

SECRET_MANAGER_DEMO

نام حساب سرویس Google Cloud

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud Scope

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 را با استفاده از 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

منابع فردی را حذف کنید

  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