Migrazione dei permessi Sharepoint tra farm

Allineamento dei permessi tra ambienti di Test e Produzione

Dopo aver sviluppato una soluzione sharepoint, conviene testare le funzionalità dei pacchetti wsp in un ambiente di test, che deve essere simile se non identico, ma comunque separato da quello di produzione.
Trascurando la topologia della farm, per effettuare dei test significativi, devono essere “abbastanza” identici :

  • i contenuti delle web application e delle site collection
  •  i permessi applicati sugli oggetti (siti web, liste e items)

Un modo molto semplice per allineare periodicamente i conentuti è quello di effettuare un restore (stsadm o sql) del backup del Content DB di produzione nell’ambiente di test

A seconda del “posizionamento logistico” reciproco delle farm sharepoint di test e produzione, si potrebbero riscontrare problemi autorizzativi e di visibilità da parte degli utenti di test:

Caso 1: le Farm vivono nello stesso dominio AD
L’ambiente di test è una diversa farm sharepoint ma che si appoggia allo stesso dominio AD
Dopo il restore dei contenuti i permessi e le autorizzazioni sono riportati correttamente, ma in generale i test funzionali sono di difficile esecuzione,  essendo coinvolte nei test le utenze di produzione.

Caso 2: le Farm vivono in domini AD diversi
L’ambiente di test è una diversa farm sharepoint che si appoggia ad un dominio AD creato ad hoc.
Con il restore dei contenuti i vengono riportati i permessi e le autorizzazioni, ma sulle utenze e sui gruppi di produzione e non su quelli di test
Per esempio, se i domini sono DOMAIN_PROD e DOMAIN_TEST,  nell’ambiente di test (dopo il ripristino), il sito WEB rimarrà collegato a utenze di DOMAIN_PROD e non di DOMAIN_TEST.

Per ripristinare i permessi collegandoli alle utenze del dominio di test basta utilizzare i comandi:
STSADM –o migrateuser -oldlogin -newlogin [-ignoresidhistory]
STSADM –o migrategroup -oldlogin -newlogin [-ignoresidhistory]

basta quindi disporre della mappatura vecchio/nuovo ed il resto, con un paio di righe di shell scripting, è un gioco da ragazzi…

#Esempio:
#in list.txt sono elencati i gruppi AD oggetto della rimappatura
 DOMAIN_PROD\GROUP1;DOMAIN_TEST\GROUPA
 DOMAIN_PROD\GROUP2;DOMAIN_TEST\GROUPB
#allora basta lanciare il comando (nella farm di test)
 for /F "tokens=1,2 delims=;" %%i in (list.txt) do stsadm -o migrategroup -oldlogin "%%i" -newlogin "%%j"

Caso 3: le Farm vivono in reti separate ma con nomi di dominio AD identici
E’ il caso di ambienti enterprise che replicano nell’ambiente di test non solo la Farm Sharepoint, ma topologicamente anche l’intera infrastruttura di rete.
In questo caso il test funzionale è molto significativo, visto che le utenze di test hanno la medesima configurazione e le medesime autorizzazioni di quelle di produzione.
Dopo il restore dei contenuti i permessi e le autorizzazioni sono riportati correttamente e sembrerebbe che non debba essere effettuata altra attività.
Ma in generale la differenza tra le utenze AD in test e produzione sta, non nel nome, ma nel SID (e nel GUID).
Sharepoint memorizza il SID nel profilo dell’utente e/o del gruppo e le archivia nel Content DB, per cui i permessi risultanti non vengono risolti correttamente, soprattutto quando si utilizzano nei permessi gruppi AD annidati (gruppi AD definiti in funzione di altri gruppi)

 

Dove sharepoint  memorizza il SID

Dove sharepoint memorizza il SID

Per ripristinare il puntamento ai SID corretti basta utilizzare ancora una volta i comandi

STSADM –o migrateuser -oldlogin -newlogin [-ignoresidhistory]
STSADM –o migrategroup -oldlogin -newlogin [-ignoresidhistory]

il parametro -ignoresidhistory deve essere omesso oppure valorizzato a False (così viene eseguita la verifica dei metadati della cronologia dei SID del nuovo utente per controllare se corrispondono al nome del vecchio utente.  Se il valore è “True”, la verifica dei metadati viene ignorata)

Di fatto così viene fatto un refresh dei metadati ed in particolare dei SID.
Basta quindi disporre della lista degli utenti e dei gruppi utilizzati e il resto è poi una cosa banale…

#Esempio:
#in list.txt sono elencati i gruppi AD oggetto del riallineamento
 DOMAIN_PROD\GROUP1
 DOMAIN_PROD\GROUP2
#allora basta lanciare il comando (nella farm di test)
 for /F %%i in (list.txt) do stsadm -o migrategroup -oldlogin "%%i" -newlogin "%%i"
Questa voce è stata pubblicata in Sharepoint, Software, Windows Autentication e contrassegnata con , . Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*