Sostituzione dei diritti con autorizzazioni intrinseche

Completato

Nella versione prima del secondo ciclo di rilascio del 2022, la funzionalità delle autorizzazioni intrinseche consente solo di estendere le autorizzazioni del ruolo (provenienti dai set di autorizzazioni assegnati all'utente). Pertanto, se uno sviluppatore concede meno autorizzazioni rispetto alla licenza e ai diritti, la modifica non influisce sull'utente. Se lo sviluppatore concede più autorizzazioni rispetto alla licenza e ai diritti, non viene considerato nulla al di sopra di quanto concesso dalla licenza e dai diritti. Le autorizzazioni sono limitate a quanto consentito dai diritti.

Con l'attuale attributo delle autorizzazioni intrinseche, non è possibile andare oltre i diritti, indipendentemente dalle autorizzazioni fornite dallo sviluppatore tramite il codice AL.

Con il secondo ciclo di rilascio del 2022, è stata aggiunta la possibilità di ignorare i diritti con autorizzazioni intrinseche.

Con le autorizzazioni intrinseche, gli sviluppatori possono ora concedere autorizzazioni a un metodo o a un evento durante l'esecuzione del codice. Non appena l'esecuzione del codice è completata, le autorizzazioni vengono revocate. Le autorizzazioni intrinseche semplificano la gestione complessiva e il lavoro di manutenzione dei set di autorizzazioni. Uno specifico metodo o evento AL può ottenere le autorizzazioni elevate necessarie per completare l'attività in questione senza generare errori di autorizzazione. Questa funzionalità aiuta a rafforzare la sicurezza generale limitando le autorizzazioni utente a lungo termine e concedendo invece autorizzazioni all'elaborazione di codice.

Nota

È possibile usare le autorizzazioni intrinseche solo per gli oggetti all'interno della stessa estensione.

Ad esempio, un venditore desidera creare un report che includa determinate informazioni critiche. In background, un metodo eseguirà una query per recuperare le informazioni dalla tabella contenente i dati classificati. Grazie alle autorizzazioni intrinseche, invece di gestire le autorizzazioni per il venditore specifico, uno sviluppatore può aggiungere l'autorizzazione in modo permanente nel percorso del codice specifico. A questo metodo verranno concesse le autorizzazioni per l'oggetto specificato, che in questo caso è una tabella. A questo punto, ogni volta che una persona autorizzata eseguirà questo metodo, avrà le autorizzazioni necessarie per completare la richiesta.

È preferibile usare le autorizzazioni intrinseche per piccole procedure dedicate o attività di sistema che non mettono a rischio l'esposizione dei dati agli utenti.

Ecco un esempio di codice per l'attributo InherentPermissions:

al-languageCopy
[InherentPermissions(PermissionObjectType::Table, Database::Customer, 'r', InherentPermissionsScope::Both)]
Procedure GetCustomersLocation(): CustomerLocation

Facendo riferimento all'esempio spiegato sopra, si supponga che il report debba mostrare in quale sede le vendite sono più alte nel trimestre. Poiché non è ideale concedere l'accesso a tutti i dati appartenenti ai clienti, al metodo viene concessa l'autorizzazione di lettura. Il metodo recupererà solo la posizione del cliente e ignorerà altri dettagli (come nome, indirizzo e così via) privati.

Le autorizzazioni intrinseche e i diritti intrinseci insieme garantiscono maggiore flessibilità agli sviluppatori, che possono così assegnare autorizzazioni ai propri metodi, eventi e oggetti. Gli sviluppatori possono definire diritti intrinseci per i propri oggetti, ad esempio codeunit, tabelle, pagine e così via. In questo modo, gli sviluppatori possono fornire a tutti gli utenti un accesso sufficiente per poter svolgere attività essenziali senza alcuna interruzione e indipendentemente dal tipo di accesso concesso loro dalla licenza o dal diritto in uso.