Visualizzare o rimuovere le autorizzazioni delegate di Active Directory
La delega di Active Directory (AD) è parte fondamentale dell’infrastruttura IT di molte organizzazioni. Delegando l’amministrazione, è possibile concedere agli utenti o ai gruppi solo le autorizzazioni necessarie senza aggiungere utenti a gruppi con privilegi (ad esempio, amministratori di dominio, operatori di account). Il modo più semplice per eseguire la delega è utilizzare la delega di controllo guidata nello snap-in utenti e computer di Active Directory Microsoft Management Console (MMC).
Correlati: Gestione di Active Directory con PowerShell
Sebbene la delega guidata di controllo fornisca un modo semplice per delegare le autorizzazioni, non esiste una procedura guidata corrispondente per rimuovere le autorizzazioni delegate. Qualcuno di Microsoft deve aver notato questa lacuna e ha creato un programma da riga di comando chiamato Dsrevoke.exe che può rimuovere le voci di autorizzazione aggiunte dalla delega di controllo guidata.
Tuttavia, il Dsrevoke.il programma exe ha due importanti limitazioni tecniche, che sono documentate nell’articolo Microsoft ” Quando si utilizza lo strumento da riga di comando Dsrevoke per segnalare le autorizzazioni per tutte le unità organizzative in un dominio basato su Windows Server 2003, lo strumento potrebbe non restituire tutte le voci di controllo degli accessi.”Queste limitazioni sono:
- Dsrevoke.exe può trovare solo fino a 1.000 OU in una singola ricerca. La soluzione suggerita per questa limitazione consiste nell’avviare la ricerca del programma in un’unità organizzativa (OU) più annidata per ridurre il numero di risultati.
- Dsrevoke.exe fallisce se qualsiasi OU contiene un carattere forward slash (/) nei loro nomi. Non esiste una soluzione alternativa per questa limitazione se non per rinominare l’OU incriminato.
Quando si lavora con Dsrevoke.exe recentemente, sono stato in grado di aggirare il primo problema, ma poi mi sono imbattuto nel secondo problema. Per motivi organizzativi, rinominare l’unità operativa per rimuovere il carattere barra non era un’opzione. Inoltre, la barra è un carattere valido in un nome OU e Dsrevoke.exe dovrebbe funzionare indipendentemente dal fatto che un OU contenga una barra nel suo nome o meno. Inoltre, lavorare intorno al limite di 1.000 OU nel mio ambiente richiedeva molto tempo.
A causa di questi problemi, ho deciso di vedere se c’erano alternative integrate a Dsrevoke.exe. A partire dalle versioni recenti di Windows, i Dsacl.il programma exe fornisce un modo per rimuovere le autorizzazioni aggiunte dalla delega della procedura guidata di controllo. Anche se non fallisce se un OU contiene una barra nel suo nome, Dsacls.exe non può cercare i subcontainer per le autorizzazioni come Dsrevoke.exe lo fa.
Per prima cosa ho deciso di scrivere un semplice script per cercare OU e chiamare Dsacl.exe per rimuovere le autorizzazioni delegate da ciascuna unità operativa. Tuttavia, mentre pensavo a come volevo progettare un tale script, mi è venuto in mente che mi piacerebbe anche vedere un elenco di quali OU avevano autorizzazioni delegate a un particolare utente o gruppo. Dsrevoke.exe e Dsacl.exe può produrre un elenco di autorizzazioni, ma l’output è molto lungo e tecnico. Volevo qualcosa di più semplice.
A causa delle limitazioni in Dsrevoke.exe e Dsacl.exe, e il mio desiderio di ottenere un output più breve, ho deciso di scrivere uno script di Windows PowerShell per ottenere la funzionalità che volevo. Il risultato è Remove-DSACE. ps1. Prima di discutere di questo script, però, ho bisogno di fornire alcune informazioni di base su ciò che accade quando si utilizza la delega di controllo guidata così come coprire alcuni concetti di base di sicurezza di Windows.
Aggiunta di autorizzazioni delegate con la procedura guidata
Come accennato in precedenza, la delega di controllo guidata fornisce un modo semplice per delegare le autorizzazioni. Ad esempio, supponiamo che i membri del gruppo di reimpostazione password siano in grado di reimpostare le password per gli utenti nell’UU Tutti gli utenti nel dominio AD. Per fare ciò, è necessario eseguire questi passaggi:
- Aprire la console Utenti e computer di Active Directory.
- Fare clic con il pulsante destro del mouse su Tutti gli utenti e scegliere Delegate Control, come mostrato in Figura 1. Fare clic sul pulsante Avanti per avanzare oltre la pagina di benvenuto della procedura guidata.
- Nella pagina Utenti o gruppi della procedura guidata, fare clic sul pulsante Aggiungi.
- Nella finestra di dialogo Seleziona utenti, computer o gruppi, immettere il nome del gruppo (Reimpostazione password), fare clic sul pulsante Controlla nomi per assicurarsi che il nome del gruppo sia corretto e fare clic su OK, come mostrato nella Figura 2.
- Dopo aver verificato che il nome del gruppo sia elencato nella pagina Utenti o gruppi, fare clic su Avanti, come mostrato in Figura 3.
- Nella pagina Attività da delegare, selezionare Reimposta password utente e forzare la modifica della password al successivo accesso e fare clic su Avanti, come mostrato in Figura 4.
- Verificare le informazioni nella pagina finale della procedura guidata e fare clic su Fine.
Quando si fa clic sul pulsante Fine, la procedura guidata Delega di controllo aggiunge le autorizzazioni richieste all’UU Tutti gli utenti. È possibile visualizzare gli effetti della delega facendo clic con il pulsante destro del mouse su Tutti gli utenti, scegliendo Proprietà e selezionando la scheda Protezione. Se la scheda Protezione non è visibile, attivare l’opzione Funzioni avanzate nel menu Visualizza della console Utenti e computer di Active Directory.) Per una vista dettagliata, è possibile fare clic sul pulsante Avanzate. Figura 5 mostra la finestra di dialogo Impostazioni di sicurezza avanzate che appare.
ACL, ASSI e fiduciari—Oh mio!
Per comprendere le informazioni fornite nella finestra di dialogo Impostazioni di sicurezza avanzate, è necessario conoscere i seguenti concetti di sicurezza di Windows: Access Control list (ACL), Access Control entry (ACE), trustee e ereditarietà. È inoltre necessario comprendere questi concetti per utilizzare Remove-DSACE. ps1.
ACL. Esistono due tipi di ACL: ACL discrezionali (DACL) e ACL di sistema (SACL). Un DACL identifica gli account a cui è consentito o negato l’accesso a un oggetto. Un SACL descrive come un amministratore desidera registrare i tentativi di accesso a un oggetto (ad esempio, auditing).
ASSO. Un ACL è composto da ASSI. Ogni ACE identifica un trustee e specifica l’accesso del trustee (consenti, nega o verifica) per l’oggetto. La delega guidata di controllo aggiunge ASSI al DACL di un contenitore AD. Figura 5 mostra il DACL per tutti gli utenti OU. In questa figura, la voce di autorizzazione termine è sinonimo di ACE.
Fiduciario. Un trustee è l’entità (un utente, un gruppo di sicurezza o una sessione di accesso) a cui si applica un ACE. Ogni ASSO si applica a un singolo trustee. Nella Figura 5, il termine Principale è sinonimo di fiduciario. Figura 5 mostra che ci sono due ASSI assegnati al gruppo di reimpostazione della password. In altre parole, il gruppo di reimpostazione della password è il fiduciario (principale) per questi due ASSI.
Eredità. Un ACE può essere applicato direttamente a un oggetto o può essere ereditato dall’oggetto genitore della risorsa. Nella Figura 5, i due ASSI per Tutti gli utenti OU che contengono il gruppo di reimpostazione password come trustee non vengono ereditati dal contenitore padre (cioè, la colonna Ereditata da legge Nessuno) perché la delega di controllo guidata li ha aggiunti direttamente al DACL. La figura 6 mostra il DACL per l’UO contabile. Il DACL dell’OU contabile contiene due ASSI per il gruppo di reimpostazione della password, ma questi ASSI sono ereditati dall’OU Tutti gli utenti (cioè,la colonna Ereditata da legge OU=Tutti gli utenti,DC=fabrikam, DC=locale).
Introduzione di Remove-DSACE.ps1
Ho scritto Remove-DSACE. ps1 (abbreviazione di remove directory service ACEs) per raggiungere i seguenti obiettivi:
- Trova OU contenenti ASSI non ereditati contenenti un fiduciario.
- Ricorrere in sub-OU se richiesto.
- Rimuovi gli ASSI non ereditati contenenti un trustee.
- Produrre uscita concisa.
La sintassi dello script è la seguente:
Remove-DSACE path
Il parametro-Report o-Remove determina se lo script elencherà o rimuoverà gli ASSI non ereditati. Se si specifica-Report, lo script trova ASSI non ereditati contenenti trustee, ma non li rimuove. Se si specifica-Remove, lo script rimuove gli ASSI non ereditati. È molto importante capire che lo script rimuoverà tutti gli ASSI non ereditati per il trustee, non solo gli ASSI aggiunti dalla delega di controllo guidata. Questo perché non c’è alcun modo per determinare come sono stati aggiunti gli ASSI non ereditati.
I parametri-Report e-Remove sono facoltativi, ma lo script assume il parametro-Report per impostazione predefinita. Lo script genererà un errore se si specificano entrambi i parametri contemporaneamente.
Si utilizza il parametro-Path per specificare uno o più nomi distinti (DNs) degli utenti. Il nome del parametro-Path è facoltativo e accetta l’input della pipeline. Sebbene sia possibile specificare più DNs, non è possibile utilizzare i caratteri jolly.
Il parametro-Trustee indica il trustee da trovare negli ASSI. Lo script esamina il DACL di ogni OU per gli ASSI non ereditati contenenti il trustee nominato. È possibile specificare più trustee utilizzando un elenco delimitato da virgole o un array, ma non è possibile utilizzare i caratteri jolly. È possibile specificare i nomi dei fiduciari utilizzando uno qualsiasi dei formati dei nomi elencati nella Tabella 1.
Formato | Esempio |
---|---|
Windows NT 4.0 formato di denominazione (NT4) | FABRIKAM\KenDyer |
oggetto del DN | CN=Ken Dyer,CN=Users,DC=fabrikam,DC=com |
L’oggetto è il nome canonico | fabrikam.com/Users/Ken Dyer |
L’oggetto è il nome dell’entità utente (UPN) |
includere il parametro-Recurse se si desidera cercare le unità Organizzative sotto specificato OU. Se si desidera connettersi a un controller di dominio specifico (DC), è possibile specificare il nome del server con il parametro
-ServerName. Entrambi i parametri-Recurse e-ServerName sono opzionali.
Lo script supporta credenziali alternative. Il parametro-Credential utilizza un oggetto PSCredential che contiene il nome utente e la password che lo script deve utilizzare per connettersi al dominio.
Lo script supporta anche il parametro-Confirm. Il parametro-Confirm è significativo solo in combinazione con il parametro-Remove. Il parametro-Confirm è abilitato per impostazione predefinita, a meno che non lo si disattivi specificando-Confirm: FALSE FALSE o impostando la variabile Confirm ConfirmPreference su None. Dovresti disabilitare il parametro-Confirm solo quando sei assolutamente certo di rimuovere gli ASSI corretti.
Lo script produce oggetti di output contenenti le proprietà elencate nella Tabella 2.
Proprietà | Descrizione |
---|---|
Percorso | L’unità organizzativa DN |
Fiduciario | Il fiduciario nome nel formato DOMINIO\nome |
gli Assi | Il numero di non ereditati nel OU ACL |
Risultato* | La parola “Rimosso” o un messaggio di errore |
*Il Risultato di proprietà esiste solo quando si utilizza il parametro-Remove. |
Lo script include solo OU con ASSI non ereditati contenenti un trustee. Gli assi ereditati per un trustee non sono inclusi nell’output. La figura 7 mostra due esempi. Il primo comando in Figura 7 non produce alcun output perché il DACL per l’OU di contabilità non contiene ASSI non ereditati per il gruppo di reimpostazione della password. (L’UO contabilità ha due ASSI per il gruppo di reimpostazione password, ma questi ASSI sono ereditati dall’UO Tutti gli utenti, come mostrato in Figura 6.) Il secondo comando in Figura 7 produce output. Ci sono due ASSI non ereditati per il gruppo di reimpostazione password nell’OU Tutti gli utenti (come si vede in Figura 5).
Esempio del mondo reale
Diamo un’occhiata a come si potrebbe utilizzare Remove-DSACE.ps1 nel mondo reale. Supponiamo che un amministratore nel fabrikam.dominio locale aveva utilizzato la delega di controllo guidata per delegare le autorizzazioni al gruppo di personale di segreteria in Tutti gli utenti OU e alcune delle OU sotto di esso, ma non ricorda quale OU. È necessario rimuovere queste autorizzazioni delegate in modo da poter delegare le autorizzazioni ad altri gruppi.
Innanzitutto, è necessario visualizzare un elenco delle OU che hanno ASSI non ereditati contenenti il gruppo di personale di segreteria. Per fare ciò, è possibile utilizzare il comando:
Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List
Questo comando e il suo output sono mostrati in Figura 8.
Da questo output, è possibile vedere che ci sono tre OU che hanno ASSI non ereditati contenenti il gruppo Staff di segreteria. Dopo aver verificato che è possibile rimuovere questi ASSI, è possibile sostituire il parametro-Report con il parametro-Remove e ripetere il comando, come mostrato in Figura 9. Come ho detto prima, se al gruppo di personale di segreteria sono state assegnate altre autorizzazioni al di fuori della procedura guidata Delega di controllo, anche quelle verranno rimosse.
Prendi il controllo della Delega AD
La delega del controllo guidata è uno strumento molto utile, ma non esiste un modo semplice per visualizzare o invertire rapidamente i suoi effetti. Anche se è possibile utilizzare Dsrevoke.exe e Dsacl.exe per eseguire queste attività, questi strumenti hanno alcune limitazioni. Se invece utilizzi lo script Remove-DSACE.ps1, avrai un controllo migliore sulle autorizzazioni delegate in AD. È possibile scaricare questo script facendo clic sul pulsante Scarica il codice nella parte superiore della pagina.
Video correlati da Brian Desmond (solo accesso VIP):
Sessione 1: Mastering Delega autorizzazioni Active Directory
Sessione 2: Mastering Delega autorizzazioni di sicurezza Active Directory
Leave a Reply