เคยสงสัยไหมว่า ใน SAP S/4HANA Public Cloud ระบบรู้ได้อย่างไรว่า ใคร “ควรเห็นข้อมูลอะไร” และ “ทำอะไรได้บ้าง” ทั้งที่เราไม่เห็น PFCG Role, Authorization Object หรือ AUTHORITY-CHECK แบบที่คุ้นเคยในระบบ On-Premise
แล้วถ้าเราเป็น Developer ที่ต้องพัฒนา Custom CDS View หรือ RAP Application จะออกแบบ Authorization อย่างไรให้ปลอดภัย เป็นมาตรฐาน และไม่ฝืนแนวทางของ SAP
บทความนี้ เนทติเซนท์ จะพาไปทำความเข้าใจกับ Authorization ใน Public Cloud แบบเห็นภาพรวม โดยอธิบายด้วยภาษาที่เข้าใจง่าย ไม่จำเป็นต้องเป็น SAP สายลึกก็อ่านรู้เรื่อง
Authorization ใน Public Cloud ต่างจาก On-premise อย่างไร
ใน S/4HANA Public Cloud แนวคิดเรื่องการควบคุมสิทธิ์ “ไม่ได้เริ่มจาก Code” แต่เริ่มจาก โครงสร้างสิทธิ์ที่ผูกกับ Fiori Launchpad และ IAM Framework โดยระบบได้มีการออกแบบให้ลดการเขียน Code ตรวจสิทธิ์เอง ใช้การตั้งค่า (Configuration) เป็นหลัก และให้ระบบ “กรองข้อมูลให้โดยอัตโนมัติ”
ซึ่ง Authorization จะทำงานผ่านโครงสร้างหลัก 4 ระดับ

| ระดับ | องค์ประกอบ | หน้าที่ | ตัวอย่าง |
| 1 | Business Role กลุ่มสิทธิ์ที่กำหนดให้ผู้ใช้ 1 คน | กำหนดว่า User คนนี้ เข้า App อะไรได้บ้าง และ ทำงานในบทบาทอะไร | BR_PURCHASING_MANAGER |
| 2 | Business Catalog ชุดรวมของ Fiori App และ OData Service | บอกว่าบทบาทนี้ “เห็น App และ Service อะไร” | SAP_MM_BC_PURCHASING_PROCESS_PC |
| 3 | Restriction Type กลไกควบคุมสิทธิ์เชิงข้อมูล (ผูกกับแนวคิด Authorization Object) | กำหนดว่า “User เห็นข้อมูลประเภทไหนได้บ้าง” | MM_PUR_PO |
| 4 | Restriction Field ฟิลด์ที่ใช้ “กรองข้อมูลจริง” | จำกัดข้อมูลตามค่า เช่น Plant, Company Code, Purchasing Org | WERKS, EKORG, BUKRS |
ประเด็นสำคัญที่ Developer ต้องเข้าใจคือ ใน Public Cloud การจำกัดข้อมูลไม่ได้เกิดจาก ABAP Code โดยตรง แต่เกิดจาก Restriction Field ที่ระบบใช้กรองข้อมูลผ่าน OData Service หรือ CDS View แบบอัตโนมัติ
มุมมองสำหรับ Developer ต้องออกแบบอะไรบ้าง
CDS Authorization – คุมข้อมูลตั้งแต่ระดับ Data Model
ใน Custom CDS View ควรกำหนด Annotation ให้ระบบรู้ว่า View นี้ต้องมีการตรวจสิทธิ์ เช่น @AccessControl.authorizationCheck: #CHECK
จากนั้นสร้าง DCL (Data Control Language) เพื่อกำหนดเงื่อนไขการเข้าถึงข้อมูล เช่น
define role ZR_PURCHASE_AUTH {
grant select on ZR_PURCHASE_VH
where werks = aspect pfcg_auth( ‘WERKS’ );
}
ซึ่งผลลัพธ์ที่ได้คือ เมื่อผู้ใช้เปิด App หลังจากนั้น OData จะกรองข้อมูลให้อัตโนมัติ เหลือเฉพาะ Plant (WERKS) ที่ผู้ใช้มีสิทธิ์ โดย ไม่ต้องเขียน AUTHORITY-CHECK ใน ABAP เลย
RAP Authorization – คุมสิทธิ์ระดับ Action และ Record
ใน RAP (Restful ABAP Programming Model) เราสามารถกำหนดสิทธิ์ของแต่ละ Action ได้ชัดเจน
ตัวอย่างใน Behavior Definition :
- create ( authorization : global );
- update ( authorization : none, features : instance );
- delete ( authorization : update );
- action ( authorization : instance ) customAction;
นอกจากนี้ ยังสามารถควบคุมละเอียดขึ้นผ่าน Method เช่น
- get_global_authorizations → ตรวจสิทธิ์ระดับระบบ
- get_instance_authorizations → ตรวจสิทธิ์ราย record
- get_instance_features → เปิด/ปิด field หรือ action ตามสิทธิ์
Best Practice สำหรับ Developer
- ออกแบบ CDS ให้มีฟิลด์ที่ใช้เป็น Restriction Field ได้ เช่น Company Code, Plant
- ใช้ DCL ควบคุมข้อมูล แทนการเขียนเงื่อนไขใน ABAP
- หลีกเลี่ยงการ Hardcode User ID หรือ Role Name
- ทดสอบด้วย Test User หลาย Role เพื่อยืนยันว่า Restriction ทำงานถูกต้อง
- ทำงานร่วมกับ Functional Consultant ด้าน IAM เพื่อกำหนด Business Role ให้สอดคล้องกับ Logic ของ App
จาก Code-Driven สู่ Configuration-Driven Authorization
ใน S/4HANA Public Cloud ส่วนของ Authorization ไม่ใช่เรื่องของ “เขียนโค้ดเพิ่ม” อีกต่อไป แต่คือ “ออกแบบให้ระบบจัดการสิทธิ์ได้เอง” ซึ่งสิ่งที่ Developer ควรต้องทำความเข้าใจ คือ
- Business Role ควบคุมได้ทั้งสิทธิระดับ App และ Data
- CDS และ RAP ต้องออกแบบให้รองรับ Restriction โดยธรรมชาติ
- การทำงานร่วมกับ Functional และ IAM สำคัญพอๆ กับการเขียน Code
เพราะฉะนั้น Authorization ใน SAP S/4HANA Public Cloud จึงไม่ใช่เรื่องของการเขียน Code ให้มากขึ้น แต่คือการออกแบบระบบให้เข้าใจบทบาทของผู้ใช้และจัดการสิทธิ์ได้อย่างเหมาะสมตั้งแต่ต้น
และเมื่อ Developer ออกแบบ CDS และ RAP ให้สอดคล้องกับโครงสร้างของ Business Role และ Restriction ระบบก็จะช่วยดูแลเรื่องความปลอดภัยให้โดยอัตโนมัติ พร้อมรองรับการขยายระบบในอนาคต
หากองค์กรกำลังพัฒนา หรือวางแผนปรับใช้ SAP S/4HANA Public Cloud และอยากมั่นใจว่า Authorization มีความถูกต้อง ความปลอดภัย และถูกออกแบบอย่างไร
ทีม เนทติเซนท์ ยินดีแลกเปลี่ยนประสบการณ์และช่วยมองภาพรวมไปด้วยกัน ตั้งแต่การออกแบบ Data Model, CDS, RAP ไปจนถึงการเชื่อมโยงกับ Business Role และ IAM ให้สอดคล้องกับการใช้งานจริงขององค์กร
ทำความรู้จักกับหลังบ้านของ SAP Cloud เพิ่มเติมได้ที่
- ทำไม Table Generator ถึงสำคัญกับการเริ่มต้น SAP Cloud
- สร้างแอปบน SAP Cloud ได้ง่าย ด้วย ABAP RESTful
- ABAP Classic สู่ ABAP Cloud ก้าวใหม่ของนักพัฒนา SAP ในยุค Cloud
สอบถามข้อมูลเพิ่มเติมได้ที่
Email : [email protected]
LINE : @netizen
Website : www.netizen.co.th

