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. ก่อนเริ่มต้น
- คุณได้ติดตั้ง ABAP SDK สําหรับ Google Cloud ในระบบแล้ว คุณสามารถดูข้อมูลใน Codelab - Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK เพื่อตั้งค่าระบบใหม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน
- เรียกใช้คําสั่งต่อไปนี้เพื่อตรวจสอบสิทธิ์สําหรับบัญชีและตั้งค่าโปรเจ็กต์เริ่มต้นเป็น
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
- ไปที่โปรเจ็กต์ Google Cloud แล้วคลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน
- เรียกใช้คําสั่งต่อไปนี้เพื่อเปิดใช้ Cloud Secret Manager API ในโปรเจ็กต์ 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. สร้างข้อมูลลับ
- ใน Cloud Shell ให้เรียกใช้คําสั่งต่อไปนี้เพื่อสร้างข้อมูลลับที่มีชื่อ "demo-secret" สําหรับโค้ดแล็บนี้
gcloud secrets create demo-secret \
--replication-policy="automatic"
คุณควรเห็นข้อมูลลับที่สร้างในโปรเจ็กต์ Google Cloud ดังที่แสดงด้านล่าง
8. เพิ่มเวอร์ชันของข้อมูลลับ
- ใน Cloud Shell ให้เรียกใช้คําสั่งต่อไปนี้เพื่อเพิ่มเวอร์ชันลับลงใน "demo-secret"
echo -n "This is my super secret data" | \
gcloud secrets versions add demo-secret --data-file=-
ระบบจะสร้างเวอร์ชันของข้อมูลลับ หากต้องการดูรายละเอียด ให้คลิก "demo-secret"
- คลิกจุด 3 จุดทางด้านขวา แล้วเลือกดูค่าลับ ข้อมูลลับที่เก็บไว้จะแสดงขึ้น
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 > การตั้งค่าพื้นฐาน > กําหนดค่าคีย์ไคลเอ็นต์
- คงค่าต่อไปนี้ในช่อง
ช่อง | คำอธิบาย |
ชื่อคีย์ 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
- เข้าสู่ระบบระบบ SAP
- ไปที่รหัสธุรกรรม SE38 แล้วสร้างรายงานชื่อ "ZDEMO_ACCESS_SECRET"
- ในป๊อปอัปที่เปิดขึ้น ให้ระบุรายละเอียดตามที่แสดงด้านล่าง แล้วคลิกบันทึก
- ในป๊อปอัปถัดไป ให้เลือกออบเจ็กต์ในเครื่องหรือระบุชื่อแพ็กเกจตามความเหมาะสม
- ในเครื่องมือแก้ไข 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. ขอแสดงความยินดี
ยินดีด้วย คุณดึงข้อมูลลับที่จัดเก็บไว้ใน 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
ลบทรัพยากรแต่ละรายการ
- ลบอินสแตนซ์การประมวลผลโดยทำดังนี้
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