Tag: iam, security, authentication, authorization, oauth, oidc, jwt
Livello: intermedio
TL;DR: Gestione delle identità e degli accessi per garantire che solo utenti e servizi autorizzati possano interagire con le risorse. Separa in modo netto l'autenticazione (chi sei) dall'autorizzazione (cosa puoi fare).
-
Autenticazione (AuthN): processo crittografico o basato su credenziali per verificare l'identità di un utente o di un servizio.
-
Autorizzazione (AuthZ): processo di verifica e concessione dei permessi e dei privilegi associati a un'identità gia' autenticata.
-
SSO (Single Sign-On): meccanismo che permette agli utenti di accedere a più applicazioni indipendenti autenticandosi una sola volta.
-
MFA (Multi-Factor Authentication): richiede l'utilizzo combinato di due o più metodi di verifica indipendenti per mitigare furti di credenziali.
-
RBAC (Role-Based Access Control): modello di assegnazione dei permessi basato sui ruoli predefiniti che l'utente ricopre nell'organizzazione.
-
ABAC (Attribute-Based Access Control): modello di concessione dei permessi calcolato dinamicamente su attributi dell'utente, della risorsa e del contesto.
-
Principle of Least Privilege: regola fondamentale di sicurezza che impone di fornire alle entità solo i permessi strettamente necessari.
-
Identity Provider (IdP): sistema centrale e fidato che crea, mantiene e gestisce le informazioni di identità e rilascia token.
-
Federation: architettura che permette di delegare l'autenticazione a un Identity Provider esterno stabilendo un patto di fiducia.
-
Q: Qual è la differenza tra OAuth2 e OpenID Connect?R: OAuth2 è esclusivamente un framework di autorizzazione delegata. OIDC è un layer di autenticazione costruito sopra OAuth2 che rilascia un ID Token.
-
Q: Come applichi il Principle of Least Privilege nella pratica?R: Lo applico definendo policy granulari, evitando permessi wildcard, usando ruoli temporanei per operazioni critiche e conducendo audit periodici dei permessi attivi.
-
Q: Come metti in sicurezza una comunicazione machine-to-machine?R: Uso il flusso Client Credentials di OAuth2, assegnando a ciascun servizio un client ID e un secret per ottenere token di accesso dedicati.
-
Confondere autenticazione e autorizzazione usando un token di identità (ID Token) per autorizzare l'accesso alle API.
-
Includere dati sensibili non crittografati nel payload di un JWT, esponendoli a chiunque possa intercettare il token.
-
Emettere access token con una durata temporale troppo lunga senza prevedere meccanismi di revoca o rotazione.
-
Mantenere permessi estesi o di amministrazione assegnati di default per comodità durante la fase di sviluppo locale.
// Esempio di policy IAM resource-based (modello standard cloud)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"api:ReadData",
"api:WriteData"
],
"Resource": "urn:service:resource:12345"
}
]
}
-
[ ] Diagramma di sequenza del flusso Authorization Code con PKCE
-
[ ] Validazione corretta della firma e delle claim (iss, aud, exp) di un JWT
-
[ ] Differenze architetturali tra SAML 2.0 e OIDC