Menerapkan PEP - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerapkan PEP

Policy enforcement point (PEP) bertanggung jawab untuk menerima permintaan otorisasi yang dikirim ke Policy Decision Point (PDP) untuk evaluasi. PEP dapat berada di mana saja dalam aplikasi di mana data dan sumber daya harus dilindungi, atau di mana logika otorisasi diterapkan. PEPs relatif sederhana dibandingkan dengan PDPs. PEP bertanggung jawab hanya untuk meminta dan mengevaluasi keputusan otorisasi dan tidak memerlukan logika otorisasi apa pun. PEPs, tidak seperti PDPs, tidak dapat dipusatkan dalam aplikasi SaaS. Ini karena otorisasi dan kontrol akses diperlukan untuk diimplementasikan di seluruh aplikasi dan titik aksesnya. PEPs dapat diterapkan ke APIs, layanan mikro, lapisan Backend for Frontend (BFF), atau titik mana pun dalam aplikasi di mana kontrol akses diinginkan atau diperlukan. Membuat PEPs meresap dalam aplikasi memastikan bahwa otorisasi sering diverifikasi dan independen di beberapa titik.    

Untuk menerapkan PEP, langkah pertama adalah menentukan di mana penegakan kontrol akses harus terjadi dalam suatu aplikasi. Pertimbangkan prinsip ini ketika memutuskan di mana PEPs harus diintegrasikan ke dalam aplikasi Anda: 

Jika aplikasi mengekspos API, harus ada otorisasi dan kontrol akses pada API itu.

Ini karena dalam arsitektur berorientasi layanan mikro atau berorientasi layanan, APIs berfungsi sebagai pemisah antara fungsi aplikasi yang berbeda. Masuk akal untuk memasukkan kontrol akses sebagai pos pemeriksaan logis antara fungsi aplikasi. Kami sangat menyarankan agar Anda menyertakan PEPs sebagai prasyarat untuk akses ke setiap API dalam aplikasi SaaS. Dimungkinkan juga untuk mengintegrasikan otorisasi di titik lain dalam suatu aplikasi. Dalam aplikasi monolitik, mungkin perlu PEPs terintegrasi dalam logika aplikasi itu sendiri. Tidak ada lokasi tunggal di mana PEPs harus disertakan, tetapi pertimbangkan untuk menggunakan prinsip API sebagai titik awal.

Meminta keputusan otorisasi

PEP harus meminta keputusan otorisasi dari PDP. Permintaan dapat mengambil beberapa bentuk. Metode termudah dan paling mudah diakses untuk meminta keputusan otorisasi adalah mengirim permintaan otorisasi atau kueri ke RESTful API yang diekspos oleh PDP (OPA atau Izin Terverifikasi). Jika Anda menggunakan Izin Terverifikasi, Anda juga dapat memanggil IsAuthorizedmetode dengan menggunakan AWS SDK untuk mengambil keputusan otorisasi. Satu-satunya fungsi PEP dalam pola ini adalah untuk meneruskan informasi yang dibutuhkan oleh permintaan otorisasi atau kueri. Ini bisa sesederhana meneruskan permintaan yang diterima oleh API sebagai input ke PDP. Ada metode lain untuk membuat PEPs. Misalnya, Anda dapat mengintegrasikan PDP OPA secara lokal dengan aplikasi yang ditulis dalam bahasa pemrograman Go sebagai pustaka alih-alih menggunakan API.

Mengevaluasi keputusan otorisasi

PEPs perlu memasukkan logika untuk mengevaluasi hasil keputusan otorisasi. Ketika PDPs diekspos sebagai APIs, keputusan otorisasi kemungkinan dalam format JSON dan dikembalikan oleh panggilan API. PEP harus mengevaluasi kode JSON ini untuk menentukan apakah tindakan yang diambil diotorisasi. Misalnya, jika PDP dirancang untuk memberikan Boolean mengizinkan atau menolak keputusan otorisasi, PEP mungkin hanya memeriksa nilai ini, dan kemudian mengembalikan kode status HTTP 200 untuk mengizinkan dan kode status HTTP 403 untuk penolakan. Pola menggabungkan PEP sebagai prasyarat untuk mengakses API adalah pola yang mudah diimplementasikan dan sangat efektif untuk menerapkan kontrol akses di seluruh aplikasi SaaS. Dalam skenario yang lebih rumit, PEP mungkin bertanggung jawab untuk mengevaluasi kode JSON arbitrer yang dikembalikan oleh PDP. PEP harus ditulis untuk memasukkan logika apa pun yang diperlukan untuk menafsirkan keputusan otorisasi yang dikembalikan PDP. Karena PEP kemungkinan akan diimplementasikan di banyak tempat berbeda dalam aplikasi Anda, kami sarankan Anda mengemas kode PEP Anda sebagai pustaka atau artefak yang dapat digunakan kembali dalam bahasa pemrograman pilihan Anda. Dengan cara ini, PEP Anda dapat dengan mudah diintegrasikan kapan saja dalam aplikasi Anda dengan pengerjaan ulang minimal.