Implementazione di un PDP utilizzando OPA - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementazione di un PDP utilizzando OPA

L'Open Policy Agent (OPA) è un motore di policy generico open source. OPA ha molti casi d'uso, ma il caso d'uso rilevante per l'implementazione PDP è la sua capacità di disaccoppiare la logica di autorizzazione da un'applicazione. Questo processo si chiama disaccoppiamento delle politiche. L'OPA è utile nell'implementazione di un PDP per diversi motivi. Utilizza un linguaggio dichiarativo di alto livello chiamato Rego per redigere politiche e regole. Queste politiche e regole esistono separatamente da un'applicazione e possono prendere decisioni di autorizzazione senza alcuna logica specifica dell'applicazione. OPA espone inoltre un'API RESTful per rendere semplici e dirette le decisioni di recupero delle autorizzazioni. Per prendere una decisione di autorizzazione, un'applicazione interroga OPA con input JSON e OPA valuta l'input rispetto alle politiche specificate per restituire una decisione di accesso in JSON. OPA è anche in grado di importare dati esterni che potrebbero essere rilevanti per prendere una decisione di autorizzazione.

Utilizzo dell'OPA per implementare un PDP

L'OPA presenta diversi vantaggi rispetto ai motori di policy personalizzati:

  • L'OPA e la sua valutazione delle politiche con Rego forniscono un motore di policy flessibile e predefinito che richiede solo l'inserimento di politiche e di tutti i dati necessari per prendere decisioni di autorizzazione. Questa logica di valutazione delle politiche dovrebbe essere ricreata in una soluzione di motore delle politiche personalizzata.

  • L'OPA semplifica la logica di autorizzazione disponendo di politiche scritte in un linguaggio dichiarativo. È possibile modificare e amministrare queste politiche e regole indipendentemente da qualsiasi codice applicativo, senza competenze di sviluppo di applicazioni.

  • L'OPA espone un'API RESTful, che semplifica l'integrazione con i punti di applicazione delle politiche (PEP).

  • OPA fornisce supporto integrato per la convalida e la decodifica dei token Web JSON (JWT).

  • OPA è uno standard di autorizzazione riconosciuto, il che significa che la documentazione e gli esempi sono numerosi se hai bisogno di assistenza o ricerca per risolvere un problema particolare.

  • L'adozione di uno standard di autorizzazione come OPA consente di condividere le politiche scritte in Rego tra i team indipendentemente dal linguaggio di programmazione utilizzato dall'applicazione del team.

Ci sono due cose che OPA non fornisce automaticamente:

  • OPA non dispone di un solido piano di controllo per l'aggiornamento e la gestione delle politiche. OPA fornisce alcuni modelli di base per l'implementazione degli aggiornamenti delle politiche, il monitoraggio e l'aggregazione dei log esponendo un'API di gestione, ma l'integrazione con questa API deve essere gestita dall'utente OPA. Come best practice, è consigliabile utilizzare una pipeline di integrazione e distribuzione continua (CI/CD) per amministrare, modificare e tenere traccia delle versioni delle policy e gestire le politiche in OPA.

  • Per impostazione predefinita, OPA non può recuperare dati da fonti esterne. Una fonte esterna di dati per una decisione di autorizzazione potrebbe essere un database che contiene gli attributi utente. Esiste una certa flessibilità nel modo in cui i dati esterni vengono forniti all'OPA: possono essere memorizzati nella cache locale in anticipo o recuperati dinamicamente da un'API quando viene richiesta una decisione di autorizzazione, ma l'OPA non può ottenere queste informazioni per conto dell'utente.