IAM — Cheat Sheet

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).

Concetti chiave

-

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.

Domande tipiche e risposte pronte

-

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.

Insidie e errori comuni

-

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.

Snippet e comandi

// 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"
    }
  ]
}

Da ripassare

-

[ ] 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

Jarvis Interviews
Jarvis