เรียกข้อมูลเข้าสู่ระบบ/ข้อมูลลับจาก Google Cloud Secret Manager ด้วย ABAP SDK สำหรับ Google Cloud

1. บทนำ

ในโค้ดแล็บนี้ เราได้แสดงขั้นตอนเกี่ยวกับวิธีดึงข้อมูลเข้าสู่ระบบหรือข้อมูลลับจาก Google Cloud Secret Manager API โดยใช้ ABAP SDK สำหรับ Google Cloud

ในโค้ดแล็บนี้จะใช้บริการ Google Cloud ต่อไปนี้

  • Secret Manager
  • Cloud Shell

สิ่งที่คุณจะสร้าง

คุณจะดำเนินการต่อไปนี้

  • เปิดใช้ Secret Manager API ในโปรเจ็กต์ Google Cloud
  • สร้างข้อมูลลับ
  • เพิ่มเวอร์ชันของข้อมูลลับ
  • เข้าถึง/ดึงข้อมูลลับโดยใช้ ABAP SDK สำหรับ Google Cloud

ในโค้ดแล็บนี้ ขั้นตอนการสร้างข้อมูลลับและการเพิ่มเวอร์ชันของข้อมูลลับจะดำเนินการผ่านคำสั่ง gcloud แต่คุณยังทำได้โดยใช้ไลบรารีของไคลเอ็นต์สำหรับ Secret Manager ที่มาพร้อมกับ ABAP SDK สำหรับ Google Cloud

2. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน หรือสร้างบัญชีทดลองใช้ฟรี 90 วันสำหรับ Google Cloud Platform
  • SAP GUI (Windows หรือ Java) ที่ติดตั้งในระบบ หากติดตั้ง SAP GUI ในแล็ปท็อปแล้ว ให้เชื่อมต่อกับ SAP โดยใช้ที่อยู่ IP ภายนอกของ VM เป็น IP ของเซิร์ฟเวอร์แอปพลิเคชัน หากใช้ Mac คุณยังติดตั้ง SAP GUI สำหรับ 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 ที่คุณจะใช้ใน Codelab นี้มีดังนี้

  • Secret - Secret คือออบเจ็กต์ระดับโปรเจ็กต์ที่มีคอลเล็กชันของข้อมูลเมตาและเวอร์ชัน Secret
  • เวอร์ชันของข้อมูลลับ - เวอร์ชันของข้อมูลลับจะจัดเก็บข้อมูลลับจริง เช่น คีย์ API, รหัสผ่าน หรือใบรับรอง

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 ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้าง Secret ที่มีชื่อว่า "demo-secret" สำหรับ Codelab นี้
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. คลิกจุด 3 จุดทางด้านขวา แล้วเลือกดูค่าลับ ระบบจะแสดงข้อมูลลับที่จัดเก็บไว้

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 > การตั้งค่าพื้นฐาน > กำหนดค่าคีย์ไคลเอ็นต์
  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. ในป๊อปอัปถัดไป ให้เลือกออบเจ็กต์ในเครื่องหรือระบุชื่อแพ็กเกจตามความเหมาะสม
  • ในเอดิเตอร์ 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. ขอแสดงความยินดี

ยินดีด้วย คุณดึงข้อมูลลับที่จัดเก็บไว้ใน Secret Manager ของ Google Cloud Platform โดยใช้ ABAP SDK สำหรับ Google Cloud ได้สำเร็จแล้ว

Secret Manager ของ Google Cloud ยังมีฟีเจอร์อื่นๆ ด้วย เช่น

  • การแก้ไขข้อมูลลับ
  • ทำลายเวอร์ชันของข้อมูลลับ
  • การลบข้อมูลลับ

คุณเรียกใช้ฟีเจอร์ Secret Manager เหล่านี้ได้ผ่าน ABAP SDK สำหรับ Google Cloud จากแอปพลิเคชัน SAP

12. ล้างข้อมูล

หากไม่ต้องการทำ Codelab เพิ่มเติมที่เกี่ยวข้องกับ ABAP SDK สำหรับ Google Cloud ต่อ โปรดดำเนินการล้างข้อมูล

ลบโปรเจ็กต์

  • ลบโปรเจ็กต์ Google Cloud โดยทำดังนี้
gcloud projects delete abap-sdk-poc

ลบทรัพยากรแต่ละรายการ

  1. ลบอินสแตนซ์ Compute โดยทำดังนี้
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