
CA Optics - Analizzatore di gap di Azure AD Conditional Access
Progetto archiviato a causa del cambiamento delle priorità di sviluppo e del reindirizzamento dei miei sforzi nella community verso altre aree (PoC, altri strumenti e demo/presentazioni), il progetto è impostato in sola lettura.
Azure AD Conditional Access Gap Analyzer è una soluzione per scansionare i gap che potrebbero esistere all'interno di configurazioni complesse di Azure Active Directory Conditional Access Policy.
Se sei nuovo a Conditional Access, ti consigliamo di consultare il seguente articolo Microsoft: https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview
Comando in una riga per eseguire questo strumento: (se questa è l'unica parte che intendi leggere e hai completato l'installazione)
node ./ca/main.js --mapping --skipObjectId=259fcf40-ff7c-4625-9b78-cd11793f161f --clearPolicyCache --clearTokenCache --clearMappingCache
Dopo aver completato i prerequisiti e letto questo file README, considera quanto segue:
le policy in modalità reportOnly non sono considerate terminanti:
Leggi: scope
esegui ogni scansione con --clearPolicyCache
esegui ogni scansione con --clearMappingCache se apporti modifiche ai gruppi / utenti correlati alle policy
sono in ambito solo le policy che hanno come obiettivo utenti e app (questo è l'ambito più comune, ma significa ad esempio che la policy di registrazione della sicurezza non viene valutata)
Leggi: scope
Inizia con un ambiente di test per fare esperienza e impostare le aspettative sul funzionamento dello strumento
se hai gruppi o utenti noti esclusi dalle policy, definisci con --skipObjectIds gli oggetti da escludere dalla scansione, a meno che tu non voglia confermare le esclusioni
Se esegui scansioni in più ambienti, assicurati che i login e le cache vengano rimossi prima di eseguire nuove scansioni
Leggi: parameters
az account clear ed esegui un nuovo login all'ambiente che intendi scansionare con az loginLeggi altre note importanti
Note di rilascio: 0.7.1
- Dipendenze aggiornate e output di testo dei report aggiornati
Note di rilascio: 0.7
- Ora utilizza l'endpoint beta per impostazione predefinita; l'opzione --expand ora espande i risultati nel report indipendentemente dall'uso di --allTerminations
Note di rilascio: 0.6.9
- utilizzo di --expand=9c06d103-f5b0-4404-bb25-aec4636912cd,47087cd3-64e9-470b-980a-5662f498e016 ed espansione di 10 membri del gruppo per un'ispezione separata.
Note di rilascio: 0.6.8
- Quando aggiorni una policy con condizioni guest nella GUI, tale policy sarà disponibile solo dall'endpoint beta dopo l'aggiornamento (durante l'anteprima).
- Questo aggiornamento introduce la normalizzazione per le policy trasferite all'endpoint beta a causa di questo comportamento.
- La policy verrà valutata come le precedenti condizioni guest, purché siano incluse le seguenti condizioni "internalGuest,b2bCollaborationGuest,b2bCollaborationMember" e non vi siano tenant esclusi dalla policy. Per valutare le policy trasferite,
- usare '--allowPreviewPolicies' quando si esegue CaOptics per tenere conto di questo comportamento
Note di rilascio: 0.6.6-7 beta
- Consente l'uso di endpoint di accesso diversi per il login e per Graph con i parametri: --altLogin --altGraph
- Consente l'uso di filtri personalizzati per le policy (consigliato solo quando le policy non aderiscono allo schema previsto)
Note di rilascio: 0.6.5 beta
- Aggiunto contatore al report quando viene aggiunto anche un numero elevato di permutazioni (per impostazione predefinita vengono aggiunte solo quelle non terminate)
- Correzioni minori al codice che sostituiscono <var> con <let>
- Il nome del file di report ora include giorno, mese, anno e tenantId, ad es. report_day_4_month_9_year_2022-tenant_48f55450-183a-45d6-a9ce-68f3cbc68947.csv
Note di rilascio: 0.6.4 beta
- Ottieni più gruppi per singola chiamata (meno batch)
- Corretta una race condition rilevata quando si usano generalmente i loop for await
- Racchiudi i valori con "" tra i delimitatori (CSV)
Note di rilascio: 0.6.3 beta
- Ottimizzazioni al modo in cui vengono gestiti gli oggetti mappati.
- Gli oggetti mappati vengono memorizzati nella cache. Puoi ricreare la mappatura degli oggetti usando il parametro 'clearMappingCache'
- Le chiavi di ricerca partiranno sempre dalle condizioni 'user/group/role' per prime
- Aggiunta la possibilità di popolare l'usermap con UUID casuali per testare l'impatto sulle prestazioni (questa è solo un'opzione di debug, e non qualcosa che sarebbe presente nelle versioni non beta)
Note di rilascio: 0.6.2 beta
- Parametri della cache separati in funzioni separate -> (clearTokenCache e ClearPolicyCache)
- Aggiunta la possibilità di eseguire un algoritmo pre-ottimizzato sulle permutazioni con il parametro --aggressive (elevato consumo di memoria, presente solo per test A/B)
- merge completato.
Note di rilascio: 0.6.1 beta
- Aggiunta una versione base del reporting CSV
- Semplificata la generazione delle permutazioni per garantire la generazione delle permutazioni essenziali, e alcune permutazioni vengono terminate prima durante le ricerche
Note di rilascio: 0.6 beta (prima release non "silenziosa")
- Aggiunti i displayName delle app al report MD. Aggiunto il tipo di oggetto al tipo utente
Note di rilascio: 0.5.2,0.5.1,0.5 beta (vedi i rami precedenti per le note di rilascio)

Esempio di rilevamento tra policy
❌ Qualsiasi permutazione con valore 0 significa che nessuna policy è stata terminata per quella particolare combinazione di condizioni.
| Policy | Terminazioni | Ricerca |
|---|---|---|
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:GuestsOrExternalUsers |
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:Jane Doe |
| All | 0 | Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:John Doe |