• authz
  • authn
  • concetto

Che cos'è AuthZ (Autorizzazione)?

Esplora la definizione di AuthZ, AuthN vs AuthZ, come funziona AuthZ e le migliori pratiche per l'autorizzazione.

Guamian
Guamian
Product & Design

Che cos'è AuthZ e in che modo è diverso da AuthN?

AuthZ è l'abbreviazione di autorizzazione. L'autorizzazione è un meccanismo separato dall'autenticazione. Mentre l'autenticazione identifica chi sei, l'autorizzazione determina se puoi accedere a risorse specifiche e quali azioni puoi eseguire su di esse.

Negli esempi del mondo reale, le risorse possono includere software, sistemi, documenti, ordini e risorse. L'autorizzazione aggiunge un ulteriore livello di controllo, specificando chi può accedere a queste risorse e in quali condizioni.

Come funziona AuthZ?

L'autorizzazione è separata dall'autenticazione ma spesso è collegata ad essa. Ad esempio, protocolli standard come OAuth 2.0, OIDC e SAML incorporano meccanismi di autorizzazione basati su token.

In un sistema di autorizzazione basato su token, un server di autorizzazione concede un access token agli utenti. Questo token, che include permessi, determina se l'utente può accedere a certe risorse.

Assegnare permessi direttamente agli utenti può essere inefficiente, specialmente quando sono richieste condizioni più dettagliate. Ad esempio, l'accesso potrebbe dipendere da circostanze specifiche, come la posizione dell'utente, rendendo necessarie politiche di controllo degli accessi per una migliore gestione delle autorizzazioni.

Ecco un flusso di alto livello passo per passo su come funziona l'autorizzazione:

  1. Iniziare l'autenticazione: L'utente accede selezionando un identificatore e un metodo, come usando un'email e una password.
  2. Richiesta di autorizzazione: Dopo l'accesso, l'utente richiede di accedere a una risorsa, includendo dettagli come il proprio ID utente e i ruoli.
  3. Validazione del controllo degli accessi: Il sistema verifica la richiesta rispetto alle politiche di autorizzazione predefinite, come regole basate su ruoli o attributi.
  4. Decisione di autorizzazione: Il sistema determina se concedere o negare l'accesso in base alle politiche e ai permessi.

Per comprendere nel dettaglio il flusso di richiesta di autorizzazione di OAuth 2.0, dai un'occhiata alla richiesta di autorizzazione

Quali sono i tipi di autorizzazione?

Controllo accessi basato sui ruoli e come funziona

Role-Based Access Control (RBAC) utilizza i ruoli per gestire l'accesso. A ogni utente vengono assegnati uno o più ruoli predefiniti e ogni ruolo include un set di permessi. La chiave di RBAC è comprendere la relazione tra soggetti (o utenti), ruoli e permessi.

Per comprendere come funziona il Controllo Accessi Basato sui Ruoli (RBAC), è necessario conoscere:

  1. Soggetti: Questi possono essere utenti o entità non umane, come utente o applicazione machine-to-machine.
  2. Ruoli: Rappresentano funzioni lavorative o responsabilità. ad esempio, admin membro
  3. Permessi: Specificano quali azioni sono consentite su risorse specifiche, ad esempio, leggi: ordine.

RBAC-diagram.png

Controllo accessi basato sugli attributi e come funziona

Attribute-Based Access Control (ABAC) è ampiamente usato nell'autorizzazione e supporta scenari più complessi utilizzando attributi specifici di un'entità, oltre ai ruoli.

Ad esempio, un’azienda gestisce una piattaforma di condivisione documenti globale in cui i dipendenti necessitano di accesso controllato a file sensibili in base al loro ruolo lavorativo, posizione e livello di classificazione del documento.

Gli attributi possono essere progettati nei seguenti modi:

  1. Attributi utente: Ruolo (ad esempio, “Manager,” “Engineer”), posizione (ad esempio, “America,” “Europa”).
  2. Attributi risorsa: Tipo di documento (ad esempio, “Rapporto Finanziario,” “File di Design”), livello di classificazione (ad esempio, “Confidenziale”).
  3. Attributi ambiente: Tempo di accesso (ad esempio, “Durante le ore lavorative”), tipo di dispositivo (ad esempio, “Laptop aziendale”).

Esistono anche altri modelli di controllo degli accessi come il controllo degli accessi basato su politiche (PBAC). Ogni modello ha i suoi punti di forza e di debolezza e la scelta del modello dipende dal caso d'uso e dalle esigenze.

Casi d'uso ed esempi di AuthZ

Software B2C

Il software B2C spesso richiede ruoli specifici basati sulle esigenze aziendali. Ad esempio, un'app di gestione librerie può includere ruoli con diverse responsabilità, come gestire risorse e servizi.

App multi-tenant B2B

Le app B2B spesso utilizzano un'architettura multi-tenant, in cui ogni tenant rappresenta un'organizzazione. All'interno dell'organizzazione, sono necessari ruoli come admin e membro. È qui che l'Autorizzazione (AuthZ) gioca un ruolo chiave nella gestione degli utenti a livello organizzativo, utilizzando spesso il Controllo Accessi Basato sui Ruoli (RBAC).

Autorizzazione macchina-macchina

La comunicazione macchina-macchina avviene direttamente tra i servizi senza interazione umana. Ad esempio, chiamare servizi API. Spesso coinvolge token (ad esempio, token di accesso OAuth 2.0) per garantire un accesso sicuro, dinamico e granulare.

Quali sono le migliori pratiche per AuthZ?

Ecco alcune migliori pratiche per l'autorizzazione (authZ) per garantire un controllo degli accessi sicuro ed efficace:

  • Principio del minor privilegio

    Ciò garantisce che il rischio di accesso non autorizzato o danni da account compromessi sia ridotto al minimo. Gli utenti e i sistemi dovrebbero accedere solo alle risorse e alle azioni necessarie per il loro ruolo.

  • Utilizzare l'autorizzazione basata su token

    Il controllo degli accessi basato su token offre una maggiore flessibilità e un controllo dettagliato aderendo agli standard aperti. Utilizza token sicuri (ad esempio, OAuth 2.0, JWTs) per concedere accesso a tempo determinato e con ambito.

  • Audit e monitoraggio regolari

    È necessario esaminare regolarmente i log degli accessi e le politiche di autorizzazione per individuare anomalie o permessi obsoleti.

  • Applicare la separazione dei compiti

    Inizia implementando permessi dettagliati, come definire azioni e risorse specifiche (ad esempio, leggere, scrivere, eliminare). Quando crei ruoli, utilizza nomi di ruolo chiari e applica la separazione dei compiti per ridurre al minimo il rischio di frodi o errori da parte di un singolo utente.

  • Supportare la multi-tenancy (se applicabile)

    Per i sistemi multi-tenant, l'isolamento dei tenant è importante. Combinandolo con il controllo degli accessi basato su ruoli, puoi ottenere la separazione delle risorse di dati, assicurando che i ruoli appropriati possano accedere alle risorse solo all'interno del proprio tenant. Questo previene l'accesso non intenzionale o dannoso alle risorse di altri tenant.

  • Revocare l'accesso dinamicamente

    Quando progetti il tuo sistema AuthZ, assicurati che i permessi possano essere aggiornati o revocati immediatamente se le condizioni cambiano (ad esempio, aggiornamenti del ruolo o cessazione del lavoro). Ciò può essere realizzato tramite controlli API dinamici, webhook, o altri metodi. L'obiettivo è prevenire accessi non autorizzati in tempo reale.

Qual è la differenza tra AuthZ (Autorizzazione) vs Auth (Autenticazione)?

La differenza tra autenticazione e autorizzazione risiede nel loro scopo e processo all'interno della gestione dell'identità e degli accessi.

AuthN (Autenticazione) risponde alla domanda, “Chi sei e quale identità possiedi” È il processo di verifica dell'identità di un utente, servizio o dispositivo. L'autenticazione assicura che l'entità che tenta di accedere a un sistema o a una risorsa sia autentica. I metodi comuni includono password, biometria e autenticazione a due fattori (2FA). Ad esempio, quando accedi a un account utilizzando la tua email e password, il sistema conferma la tua identità tramite autenticazione.

AuthZ (Autorizzazione) risponde alla domanda, “Cosa puoi fare?” È il processo di concessione o negazione dell'accesso alle risorse in base ai permessi o ai ruoli dell'utente. L'autorizzazione avviene dopo l'autenticazione e determina quali azioni l'utente autenticato può eseguire. Ad esempio, dopo l'accesso, un utente admin può avere accesso a modificare le impostazioni, mentre un utente regolare può solo visualizzarle.

In sintesi, AuthN (autenticazione) conferma l'identità, mentre AuthZ (autorizzazione) definisce l'accesso. L'autenticazione avviene per prima, seguita dall'autorizzazione per garantire un uso sicuro e appropriato delle risorse.

Costruisci AuthZ (Autorizzazione) con Logto

Logto Cloud offre servizi chiave di autorizzazione basati su protocolli open-standard come OIDC, OAuth 2.0 e SAML. Le funzionalità includono Role-Based Access Control, Organizations (Multi-Tenancy) e Custom Token Claims per soddisfare le tue esigenze di autorizzazione da varie prospettive.