Mengambil data eksternal untuk PDP di OPA - AWS Bimbingan Preskriptif

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

Mengambil data eksternal untuk PDP di OPA

Untuk OPA, jika semua data yang diperlukan untuk keputusan otorisasi dapat diberikan sebagai input atau sebagai bagian dari Token Web JSON (JWT) yang diteruskan sebagai komponen kueri, tidak diperlukan konfigurasi tambahan. (Relatif sederhana untuk meneruskan JWTs dan data konteks SaaS ke OPA sebagai bagian dari input kueri.) OPA dapat menerima input JSON arbitrer dalam apa yang disebut pendekatan input overload. Jika PDP memerlukan data di luar apa yang dapat dimasukkan sebagai input atau JWT, OPA menyediakan beberapa opsi untuk mengambil data ini. Ini termasuk bundling, mendorong data (replikasi), dan pengambilan data dinamis.

OPA bundling

Fitur bundling OPA mendukung proses berikut untuk pengambilan data eksternal:

  1. Poin penegakan kebijakan (PEP) meminta keputusan otorisasi.

  2. OPA mengunduh bundel kebijakan baru, termasuk data eksternal.

  3. Layanan bundling mereplikasi data dari sumber data.

Saat Anda menggunakan fitur bundling, OPA secara berkala mengunduh kebijakan dan bundel data dari layanan bundel terpusat. (OPA tidak menyediakan implementasi dan pengaturan layanan bundel.) Semua kebijakan dan data eksternal yang ditarik dari layanan bundel disimpan dalam memori. Opsi ini tidak akan berfungsi jika ukuran data eksternal terlalu besar untuk disimpan dalam memori, atau jika data berubah terlalu sering.

Untuk informasi selengkapnya tentang fitur bundling, lihat dokumentasi OPA.

Replikasi OPA (mendorong data)

Pendekatan replikasi OPA mendukung proses berikut untuk pengambilan data eksternal:

  1. PEP meminta keputusan otorisasi.

  2. Replikator data mendorong data ke OPA.

  3. Replikator data mereplikasi data dari sumber data.

Dalam alternatif pendekatan bundling ini, data didorong ke, alih-alih ditarik secara berkala oleh, OPA. (OPA tidak menyediakan implementasi dan pengaturan replikator.) Pendekatan push memiliki batasan ukuran data yang sama dengan pendekatan bundling, karena OPA menyimpan semua data dalam memori. Keuntungan utama dari opsi push adalah Anda dapat memperbarui data di OPA dengan delta alih-alih mengganti semua data eksternal setiap kali. Ini membuat opsi push lebih sesuai untuk kumpulan data yang sering berubah. 

Untuk informasi selengkapnya tentang opsi replikasi, lihat dokumentasi OPA.

Pengambilan data dinamis OPA

Jika data eksternal yang akan diambil terlalu besar untuk di-cache dalam memori OPA, data dapat ditarik secara dinamis dari sumber eksternal selama evaluasi keputusan otorisasi. Ketika Anda menggunakan pendekatan ini, data selalu up to date. Pendekatan ini memiliki dua kelemahan: latensi jaringan dan aksesibilitas. Saat ini, OPA dapat mengambil data saat runtime hanya melalui permintaan HTTP. Jika panggilan yang masuk ke sumber data eksternal tidak dapat mengembalikan data sebagai respons HTTP, panggilan tersebut memerlukan API khusus atau mekanisme lain untuk menyediakan data ini ke OPA. Karena OPA dapat mengambil data hanya melalui permintaan HTTP, dan kecepatan pengambilan data sangat penting, kami sarankan Anda menggunakan seperti Layanan AWS Amazon DynamoDB untuk menyimpan data eksternal bila memungkinkan.

Untuk informasi lebih lanjut tentang pendekatan tarik, lihat dokumentasi OPA.

Menggunakan layanan otorisasi untuk implementasi dengan OPA

Saat Anda mengambil data eksternal dengan menggunakan bundling, replikasi, atau pendekatan tarik dinamis, kami menyarankan agar layanan otorisasi memfasilitasi interaksi ini. Ini karena layanan otorisasi dapat mengambil data eksternal dan mengubahnya menjadi JSON untuk OPA untuk membuat keputusan otorisasi. Diagram berikut menunjukkan bagaimana layanan otorisasi dapat berfungsi dengan tiga pendekatan pengambilan data eksternal ini.

Mengambil data eksternal dengan OPA

Mengambil data eksternal untuk aliran OPA — bundel atau pengambilan data dinamis pada waktu keputusan (diilustrasikan dengan callout bernomor merah dalam diagram):

  1. OPA memanggil titik akhir API lokal untuk layanan otorisasi, yang dikonfigurasi sebagai titik akhir bundel atau titik akhir untuk pengambilan data dinamis selama keputusan otorisasi.

  2. Layanan otorisasi meminta atau memanggil sumber data eksternal untuk mengambil data eksternal. (Untuk titik akhir bundel, data ini juga harus berisi kebijakan dan aturan OPA. Pembaruan bundel menggantikan semuanya—baik data maupun kebijakan—dalam cache OPA.)

  3. Layanan otorisasi melakukan transformasi apa pun yang diperlukan pada data yang dikembalikan untuk mengubahnya menjadi input JSON yang diharapkan.

  4. Data dikembalikan ke OPA. Ini di-cache dalam memori untuk konfigurasi bundel dan digunakan segera untuk keputusan otorisasi dinamis.

Mengambil data eksternal untuk aliran OPA — replikator (diilustrasikan dengan callout bernomor biru dalam diagram):

  1. Replikator (bagian dari layanan otorisasi) memanggil sumber data eksternal dan mengambil data apa pun yang akan diperbarui di OPA. Ini dapat mencakup kebijakan, aturan, dan data eksternal. Panggilan ini dapat berada pada irama yang ditetapkan, atau dapat terjadi sebagai respons terhadap pembaruan data di sumber eksternal.

  2. Layanan otorisasi melakukan transformasi apa pun yang diperlukan pada data yang dikembalikan untuk mengubahnya menjadi input JSON yang diharapkan.

  3. Layanan otorisasi memanggil OPA dan menyimpan data dalam memori. Layanan otorisasi dapat secara selektif memperbarui data, kebijakan, dan aturan.