Menerapkan PDP dengan menggunakan OPA - AWS Bimbingan Preskriptif

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

Menerapkan PDP dengan menggunakan OPA

Open Policy Agent (OPA) adalah mesin kebijakan open-source dan tujuan umum. OPA memiliki banyak kasus penggunaan, tetapi kasus penggunaan yang relevan untuk implementasi PDP adalah kemampuannya untuk memisahkan logika otorisasi dari aplikasi. Ini disebut decoupling kebijakan. OPA berguna dalam menerapkan PDP karena beberapa alasan. Ini menggunakan bahasa deklaratif tingkat tinggi yang disebut Rego untuk menyusun kebijakan dan aturan. Kebijakan dan aturan ini ada secara terpisah dari aplikasi dan dapat membuat keputusan otorisasi tanpa logika khusus aplikasi. OPA juga mengekspos RESTful API untuk membuat pengambilan keputusan otorisasi menjadi sederhana dan mudah. Untuk membuat keputusan otorisasi, aplikasi menanyakan OPA dengan input JSON, dan OPA mengevaluasi input terhadap kebijakan yang ditentukan untuk mengembalikan keputusan akses di JSON. OPA juga mampu mengimpor data eksternal yang mungkin relevan dalam membuat keputusan otorisasi.

Menggunakan OPA untuk mengimplementasikan PDP

OPA memiliki beberapa keunggulan dibandingkan mesin kebijakan khusus:

  • OPA dan evaluasi kebijakannya dengan Rego menyediakan mesin kebijakan pra-bangun yang fleksibel yang hanya memerlukan penyisipan kebijakan dan data apa pun yang diperlukan untuk membuat keputusan otorisasi. Logika evaluasi kebijakan ini harus dibuat ulang dalam solusi mesin kebijakan khusus.

  • OPA menyederhanakan logika otorisasi dengan memiliki kebijakan yang ditulis dalam bahasa deklaratif. Anda dapat memodifikasi dan mengelola kebijakan dan aturan ini secara independen dari kode aplikasi apa pun, tanpa keterampilan pengembangan aplikasi.

  • OPA mengekspos RESTful API, yang menyederhanakan integrasi dengan poin penegakan kebijakan (PEP).

  • OPA menyediakan dukungan bawaan untuk memvalidasi dan mendekode Token Web JSON (JWT).

  • OPA adalah standar otorisasi yang diakui, yang berarti bahwa dokumentasi dan contoh berlimpah jika Anda memerlukan bantuan atau penelitian untuk memecahkan masalah tertentu.

  • Mengadopsi standar otorisasi seperti OPA memungkinkan kebijakan yang ditulis dalam Rego untuk dibagikan di seluruh tim terlepas dari bahasa pemrograman yang digunakan oleh aplikasi tim.

Ada dua hal yang tidak disediakan OPA secara otomatis:

  • OPA tidak memiliki bidang kontrol yang kuat untuk memperbarui dan mengelola kebijakan. OPA memang menyediakan beberapa pola dasar untuk menerapkan pembaruan kebijakan, pemantauan, dan agregasi log dengan mengekspos API manajemen, tetapi integrasi dengan API ini harus ditangani oleh pengguna OPA. Sebagai praktik terbaik, Anda harus menggunakan pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD) untuk mengelola, memodifikasi, dan melacak versi kebijakan serta mengelola kebijakan di OPA.

  • OPA tidak dapat mengambil data dari sumber eksternal secara default. Sumber data eksternal untuk keputusan otorisasi dapat berupa database yang menyimpan atribut pengguna. Ada beberapa fleksibilitas dalam bagaimana data eksternal diberikan kepada OPA - dapat di-cache secara lokal terlebih dahulu atau diambil secara dinamis dari API ketika keputusan otorisasi diminta - tetapi mendapatkan informasi ini bukanlah sesuatu yang dapat dilakukan OPA atas nama Anda.