============================================================
 Entra ID / Identity Governance Toolkit — 10 script PowerShell
 SynSphere Italia · https://synsphere.it
============================================================

COSA C'E' DENTRO
  10 script PowerShell (codice originale SynSphere) per la GOVERNANCE dell'identita in
  Microsoft Entra ID: accessi privilegiati, igiene delle app e delle credenziali, guest,
  gruppi e consensi. Tutti di SOLA LETTURA. Usano Microsoft Graph PowerShell SDK.

  01-Get-EntraPrivilegedRoleMembers.ps1  Ruoli directory attivati + membri (chi e' admin)
  02-Get-EntraPimEligibleRoles.ps1       Ruoli ELEGGIBILI PIM (richiede Entra ID P2)
  03-Get-EntraAppRegistrations.ps1       Inventario app registration + n. owner
  04-Get-EntraExpiringAppCredentials.ps1 Segreti/certificati app in scadenza entro N giorni
  05-Get-EntraEnterpriseApps.ps1         Service principal / enterprise app + n. credenziali
  06-Get-EntraGuestAccounts.ps1          Guest B2B + creazione + ultimo accesso (P1 per l'accesso)
  07-Get-EntraGroupsWithoutOwners.ps1    Gruppi senza owner (gap di governance)
  08-Get-EntraGroupBasedLicensing.ps1    Gruppi che assegnano licenze (group-based licensing)
  09-Get-EntraOAuth2PermissionGrants.ps1 Consensi OAuth2 delegati (igiene dei consensi)
  10-Get-EntraIdentitySummary.ps1        Cruscotto: admin, app, credenziali, guest, SP

PREREQUISITI
  - PowerShell 5.1+ o PowerShell 7
  - Microsoft Graph PowerShell SDK:  Install-Module Microsoft.Graph -Scope CurrentUser
  - Un account con ruolo di lettura directory (Global Reader e' sufficiente per quasi tutto)
  - Al primo Connect-MgGraph viene chiesto il consenso agli scope indicati in ogni script

PERMESSI GRAPH USATI (delegati, sola lettura)
  RoleManagement.Read.Directory          (01)
  RoleEligibilitySchedule.Read.Directory (02)  -> richiede Entra ID P2 (PIM)
  Application.Read.All                   (03, 04, 05)
  User.Read.All + AuditLog.Read.All      (06)  -> ultimo accesso guest richiede Entra ID P1
  Group.Read.All                         (07)
  Group.Read.All + Organization.Read.All (08)
  Directory.Read.All                     (09)
  Directory.Read.All + Application.Read.All (10)

USO RAPIDO
        .\03-Get-EntraAppRegistrations.ps1
        .\04-Get-EntraExpiringAppCredentials.ps1 -Days 60
        .\07-Get-EntraGroupsWithoutOwners.ps1
        .\10-Get-EntraIdentitySummary.ps1
  Tutti gli script sono di SOLA LETTURA: nessuno modifica la configurazione del tenant.

NOTE IMPORTANTI
  - 04 (credenziali in scadenza) e' il controllo che evita il classico blocco improvviso di
    un'integrazione per un segreto scaduto: eseguilo con cadenza mensile. Copre le app
    registration; per i service principal usa 05.
  - 07 esclude i gruppi sincronizzati da on-premises; le liste di distribuzione create in
    Exchange possono comparire come "senza owner" perche' l'owner e' gestito in Exchange.
  - 02 (PIM) e 06 (ultimo accesso guest) dipendono dalle licenze Entra ID (P2 / P1): senza
    licenza lo script prosegue in modo controllato senza quei dati.

LICENZA
  Uso interno aziendale gratuito (no redistribuzione commerciale). Fornito "as is".

SUPPORTO
  Governance dell'identita e cybersecurity gestita come servizio:
  https://synsphere.it/contattaci
============================================================
