Belajar ABAP Part 16: Security Best Practices & Authorization in ABAP/CDS
Security adalah aspek kritikal dalam pengembangan ABAP. Tanpa kontrol otorisasi yang baik, data sensitif bisa terekspos ke user yang tidak berhak. Di part ini kita akan membahas bagaimana Authorization bekerja di ABAP dan CDS, serta best practices untuk menulis kode yang aman.
1. Authorization Object
Authorization Object adalah komponen di SAP yang mendefinisikan izin akses berdasarkan field-field tertentu (misalnya Company Code, Activity). Authorization Object digunakan dalam role (via PFCG).
Contoh Authorization Object standar: M_BEST_BSA
(untuk Purchase Requisition by Document Type).
2. Authority-Check di ABAP
Dalam ABAP, validasi otorisasi dilakukan dengan statement AUTHORITY-CHECK
. Contoh sederhana:
AUTHORITY-CHECK OBJECT 'Z_SALES_AUTH'
ID 'VKORG' FIELD lv_vkorg
ID 'ACTVT' FIELD '03'. "Display
IF sy-subrc <> 0.
MESSAGE 'You are not authorized to view this Sales Org' TYPE 'E'.
ENDIF.
0 = authorized
, selain itu tidak berhak.3. DCL (Data Control Language) di CDS
Di dunia CDS View, security dikelola dengan DCL (Data Control Language). DCL mengikat Authorization Object dengan CDS sehingga filter terjadi otomatis di query.
Contoh DCL untuk CDS View Sales Data:
@EndUserText.label: 'Authorization for Sales Data'
define role ZR_SALES_AUTH {
grant select on ZC_SalesData
where VKORG = aspect pfcg_auth(VKORG, 'Z_SALES_AUTH');
}
Dengan DCL ini, user hanya bisa melihat Sales Org sesuai otorisasi di role.
4. Best Practices Security di ABAP/CDS
- Selalu gunakan
AUTHORITY-CHECK
untuk transaksi Z-report. - Implementasikan DCL di CDS agar query otomatis secure.
- Hindari hardcode user dalam program.
- Lakukan input validation (cek value kosong, tipe data, dsb).
- Cegah SQL injection dengan parameterized query (gunakan Open SQL, jangan string concatenation).
5. Real Case: Proteksi Report Z Sales
Misal ada report Z_SALES_REPORT
yang menampilkan data sales berdasarkan Sales Organization. Kita ingin supaya hanya user dengan otorisasi tertentu bisa akses.
Contoh Implementasi
REPORT z_sales_report.
PARAMETERS: p_vkorg TYPE vkorg.
" Authorization check
AUTHORITY-CHECK OBJECT 'Z_SALES_AUTH'
ID 'VKORG' FIELD p_vkorg
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE 'Not authorized for this Sales Org' TYPE 'E'.
ENDIF.
" Jika authorized, fetch data
SELECT vbeln, vkorg, netwr
FROM vbak
INTO TABLE @DATA(lt_sales)
WHERE vkorg = @p_vkorg.
cl_demo_output=>display( lt_sales ).
Pada contoh di atas:
- User input
Sales Org
(p_vkorg). - Program cek otorisasi via
AUTHORITY-CHECK
. - Jika tidak berhak → error message.
- Jika berhak → data ditampilkan.
6. Summary
- Authorization Object adalah dasar kontrol akses di SAP.
AUTHORITY-CHECK
wajib dipakai di ABAP report untuk validasi akses.- DCL di CDS mengikat security langsung ke level database query.
- Selalu ikuti best practices security seperti input validation, SQL injection prevention, dan role-based access.
- Real case: proteksi
Z_SALES_REPORT
denganAUTHORITY-CHECK
agar hanya user berotorisasi yang bisa lihat data.
Comments
Post a Comment