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. قبل از شروع
- شما ABAP SDK را برای Google Cloud روی سیستم خود نصب کرده اید. برای راه اندازی یک سیستم جدید می توانید به codelab مراجعه کنید - ABAP Platform Trial 1909 را در Google Cloud Platform نصب کنید و ABAP SDK را نصب کنید .
- شما از Cloud Shell ، یک محیط خط فرمان در حال اجرا در Google Cloud استفاده خواهید کرد.
- از Cloud Console، روی Activate Cloud Shell در گوشه سمت راست بالا کلیک کنید:
- دستورات زیر را برای احراز هویت برای حساب خود اجرا کنید و پروژه پیش فرض را روی
abap-sdk-poc
تنظیم کنید. Zoneus-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 در پروژه 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. یک راز ایجاد کنید
- در پوسته ابری، دستور زیر را اجرا کنید تا یک راز با نام "demo-secret" برای این codelab ایجاد کنید:
gcloud secrets create demo-secret \
--replication-policy="automatic"
همانطور که در زیر نشان داده شده است، باید بتوانید یک راز ایجاد شده در پروژه Google Cloud خود را ببینید.
8. یک نسخه مخفی اضافه کنید
- در پوسته ابری، دستور زیر را اجرا کنید تا یک نسخه مخفی به "دمو-مخفی" مخفی اضافه شود.
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
یک نسخه مخفی ایجاد می شود. برای مشاهده جزئیات، روی "دمو-مخفی" کلیک کنید.
- روی سه نقطه سمت راست کلیک کنید و View Secret Value را انتخاب کنید، راز ذخیره شده نشان داده می شود.
9. تنظیمات SDK را در SAP ایجاد کنید
اکنون که پیش نیازها را در سمت Google Cloud تنظیم کردهاید، میتوانیم با پیکربندی در سمت SAP پیش برویم. برای احراز هویت و پیکربندی مرتبط با اتصال، ABAP SDK برای Google Cloud از جدول /GOOG/CLIENT_KEY استفاده میکند.
برای حفظ پیکربندی در جدول /GOOG/CLIENT_KEY جدول، مراحل زیر را انجام دهید:
- در SAP GUI، کد تراکنش SPRO را وارد کنید.
- روی SAP Reference IMG کلیک کنید.
- روی ABAP SDK برای 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 Scope | 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 را با استفاده از 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
- قوانین فایروال را حذف کنید:
gcloud compute firewall-rules delete sapmachine
- حساب سرویس را حذف کنید:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com