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

ภาพรวมโดยย่อของเอนทิตีบางส่วนของเครื่องมือจัดการข้อมูลลับที่คุณจะใช้ใน Codelab นี้มีดังนี้

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