Compilare i gruppi in modo dinamico in base agli attributi degli oggetti

Il portale di Azure classico offre la possibilità di consentire appartenenze dinamiche basate su attributi più complesse ai gruppi di Azure Active Directory, ovvero Azure AD.

Quando gli attributi di un utente o un dispositivo cambiano, il sistema valuta tutte le regole dinamiche del gruppo in una directory per verificare se la modifica attiverà aggiunte o rimozioni nel gruppo. Se un utente o un dispositivo soddisfa una regola in un gruppo, viene aggiunto come membro a tale gruppo. Se non soddisfano la regola, vengono rimossi.

Nota

  • È possibile configurare una regola per l'appartenenza dinamica nei gruppi di sicurezza o nei gruppi di Office 365.

  • Questa funzionalità richiede una licenza Azure AD Premium P1 per ogni utente membro per almeno un gruppo dinamico.

  • Sebbene sia possibile creare un gruppo dinamico per i dispositivi o gli utenti, non è possibile creare una regola che contenga sia oggetti utente che dispositivo.

  • Al momento non è possibile creare un gruppo di dispositivi in base agli attributi dell'utente proprietario. Le regole di appartenenza dispositivo possono fare riferimento solo ad attributi immediati degli oggetti dispositivo nella directory.

Per creare una regola avanzata

  1. Nel portale di Azure classicoselezionare Active Directorye aprire la directory dell'organizzazione.
  2. Selezionare la scheda Gruppi e aprire il gruppo da modificare.
  3. Selezionare la scheda Configura, selezionare l'opzione Regola avanzata e immettere la regola avanzata nella casella di testo.

Creazione del corpo di una regola avanzata

La regola avanzata che è possibile creare per le appartenenze dinamiche ai gruppi è essenzialmente un'espressione binaria composta da tre parti che genera un risultato di tipo true o false. Di seguito sono elencate le tre parti:

  • Parametro sinistro
  • Operatore binario
  • Costante destra

Una regola avanzata completa simile alla seguente: (parametroSinistro operatoreBinario "CostanteDestra"), dove le parentesi di apertura e chiusura sono obbligatorie per racchiudere l'intera espressione binaria, le virgolette doppie sono obbligatorie per la costante a destra e la sintassi del parametro a sinistra è utente.proprietà. Una regola avanzata può includere più espressioni binarie separate dagli operatori logici -and, -or e -not. Di seguito sono riportati alcuni esempi di regola avanzata con il formato corretto:

  • (user.department -eq "Vendite") -or (user.department -eq "Marketing")
  • (user.department -eq "Vendite") -and -not (user.jobTitle -contains "SDE")

Per l'elenco completo dei parametri supportati e degli operatori delle regole di espressione, vedere le sezioni riportate di seguito.

Si noti che la proprietà deve avere come prefisso il tipo di oggetto corretto, ovvero user o device. La convalida della regola seguente avrà esito negativo: mail –ne null

Ecco la regola corretta:

user.mail –ne null

La lunghezza totale del corpo della regola avanzata non può superare i 2048 caratteri.

Nota

Le operazioni di stringa ed espressione regolare non fanno distinzione tra maiuscole e minuscole. Le stringhe contenenti virgolette (") devono essere precedute dal carattere di escape ', ad esempio user.department -eq `"Sales". Usare le virgolette solo per i valori di tipo stringa e usare solo le virgolette singole.

Operatori delle regole di espressione supportati

Nella tabella seguente sono elencati tutti gli operatori delle regole di espressione supportati e la relativa sintassi da usare nel corpo della regola avanzata:

Operatore Sintassi
Non uguale a -ne
Uguale a -eq
Non inizia con -notStartsWith
Inizia con -startsWith
Non contiene -notContains
Contiene -contains
Non corrispondente -notMatch
Corrispondente -match
In -in
Non incluso -notIn

Precedenza degli operatori

Tutti gli operatori sono elencati di seguito in base alla precedenza, dal minore al maggiore. Gli operatori sulla stessa riga hanno la stessa precedenza. -any -all -or -and -not -eq -ne -startsWith -notStartsWith -contains -notContains -match –notMatch -in -notIn

Tutti gli operatori possono essere usati con o senza trattino come prefisso.

Si noti che le parentesi non sono sempre necessarie. Le parentesi devono essere aggiunte solo quando la precedenza non rispetta i requisiti specifici, ad esempio:

user.department –eq "Marketing" –and user.country –eq "US"

Equivale a:

(user.department –eq "Marketing") –and (user.country –eq "US")

Uso degli operatori -In e -notIn

Per confrontare il valore di un attributo utente con una serie di valori diversi è possibile usare gli operatori -In o -notIn. Di seguito è illustrato un esempio con l'operatore -In:

user.department -In [ "50001", "50002", "50003", “50005”, “50006”, “50007”, “50008”, “50016”, “50020”, “50024”, “50038”, “50039”, “51100” ]

Si noti l'uso di "[" e "]" all'inizio e alla fine dell'elenco di valori. Questa condizione restituisce True se il valore di user.department è uguale a uno dei valori nell'elenco.

Correzione degli errori di query

Nella tabella seguente sono elencati errori potenziali e indica come correggerli se si verificano

Errore di analisi della query Uso errato Uso corretto
Errore: l'attributo non è supportato (user.invalidProperty -eq "Valore") (user.department -eq "valore")
La proprietà deve corrispondere a una delle proprietà nell' elenco di proprietà supportate.
Errore: l'operatore non è supportato sull'attributo. (user.accountEnabled -contains true) (user.accountEnabled -eq true)
La proprietà è di tipo booleano. Usare gli operatori supportati (-eq o - ne) per il tipo boolean nell'elenco precedente.
Errore: si è verificato un errore di compilazione della query. (user.department -eq "Vendite") -and (user.department -eq "Marketing")(user.userPrincipalName -match "*@domain.ext" (user.department -eq "Sales") -and (user.department -eq "Marketing")
L'operatore logico deve corrispondere a una delle proprietà supportate nell'elenco sopra.(user.userPrincipalName -match ".*@domain.ext")or(user.userPrincipalName -match "@domain.ext$")Error nell'espressione regolare.
Errore: l'espressione binaria non ha il formato corretto (user.department –eq "Vendite") (user.department -eq "Vendite")(user.department-eq"Vendite") (user.accountEnabled -eq true) -and (user.userPrincipalName -contains "alias@domain")<br/>La query include più errori. La parentesi non si trova nella posizione corretta.
Errore: si è verificato un errore sconosciuto durante la configurazione delle appartenenze dinamiche. (user.accountEnabled -eq "True" AND user.userPrincipalName -contains "alias@domain" (user.accountEnabled -eq true) -and (user.userPrincipalName -contains "alias@domain")<br/>La query include più errori. La parentesi non si trova nella posizione corretta.

Proprietà supportate

Di seguito sono elencate tutte le proprietà utente che è possibile usare nelle regole avanzate:

Proprietà di tipo boolean

Operatori consentiti

  • -eq
  • -ne
Proprietà Valori consentiti Utilizzo
accountEnabled true false user.accountEnabled -eq true
dirSyncEnabled true false user.dirSyncEnabled -eq true

Proprietà di tipo stringa

Operatori consentiti

  • -eq
  • -ne
  • -notStartsWith
  • -startsWith
  • -contains
  • -notContains
  • -match
  • -notMatch
  • -in
  • -notIn
Proprietà Valori consentiti Utilizzo
city Qualsiasi valore stringa o $null (user.city -eq "valore")
country Qualsiasi valore stringa o $null (user.country -eq "valore")
companyName Qualsiasi valore stringa o $null (user.companyName -eq "value")
department Qualsiasi valore stringa o $null (user.department -eq "valore")
displayName Qualsiasi valore stringa. (user.displayName -eq "valore")
facsimileTelephoneNumber Qualsiasi valore stringa o $null (user.facsimileTelephoneNumber -eq "valore")
givenName Qualsiasi valore stringa o $null (user.givenName -eq "valore")
jobTitle Qualsiasi valore stringa o $null (user.jobTitle -eq "valore")
mail Qualsiasi valore stringa o $null (indirizzo SMTP dell'utente) (user.mail -eq "valore")
mailNickName Qualsiasi valore stringa (alias di posta dell'utente) (user.mailNickName -eq "valore")
mobile Qualsiasi valore stringa o $null (user.mobile -eq "valore")
objectId GUID dell'oggetto utente (user.objectId -eq "1111111-1111-1111-1111-111111111111")
onPremisesSecurityIdentifier Identificatore di sicurezza (SID) locale per gli utenti sincronizzati da un ambiente locale al cloud. (user.onPremisesSecurityIdentifier -eq "S-1-1-11-1111111111-1111111111-1111111111-1111111")
passwordPolicies Nessuno DisableStrongPassword DisablePasswordExpiration DisablePasswordExpiration, DisableStrongPassword (user.passwordPolicies -eq "DisableStrongPassword")
physicalDeliveryOfficeName Qualsiasi valore stringa o $null (user.physicalDeliveryOfficeName -eq "valore")
postalCode Qualsiasi valore stringa o $null (user.postalCode -eq "valore")
preferredLanguage Codice ISO 639-1 (user.preferredLanguage -eq "en-US")
sipProxyAddress Qualsiasi valore stringa o $null (user.sipProxyAddress -eq "valore")
state Qualsiasi valore stringa o $null (user.state -eq "valore")
streetAddress Qualsiasi valore stringa o $null (user.streetAddress -eq "valore")
surname Qualsiasi valore stringa o $null (user.surname -eq "valore")
telephoneNumber Qualsiasi valore stringa o $null (user.telephoneNumber -eq "valore")
usageLocation Codice di paese di due lettere (user.usageLocation -eq "US")
userPrincipalName Qualsiasi valore stringa. (user.userPrincipalName -eq "alias@domain")
userType membro guest $null (user.userType -eq "Membro")

Proprietà di tipo insieme String

Operatori consentiti

  • -contains
  • -notContains
Proprietà Valori consentiti Utilizzo
otherMails Qualsiasi valore stringa. (user.otherMails -contains "alias@domain")

| proxyAddresses |SMTP: alias@domain smtp: alias@domain |(user.proxyAddresses -contains "SMTP: alias@domain") |

Proprietà multivalore

Operatori consentiti

  • -any (soddisfatto quando almeno un elemento della raccolta corrisponde alla condizione)
  • -all (soddisfatto quando tutti gli elementi della raccolta corrispondono alla condizione)
Proprietà Valori Uso
assignedPlans Ogni oggetto della raccolta espone le proprietà di stringa seguenti: capabilityStatus, service, servicePlanId user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")

Le proprietà multivalore sono raccolte di oggetti dello stesso tipo. È possibile usare gli operatori -any e -all per applicare una condizione rispettivamente a uno o a tutti gli elementi della raccolta. ad esempio:

assignedPlans è una proprietà multivalore che elenca tutti i piani di servizio assegnati all'utente. L'espressione riportata di seguito selezionerà gli utenti che hanno il piano di servizio Exchange Online (Piano 2) con lo stato abilitato:

user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")

L'identificatore GUID identifica il piano di servizio Exchange Online (Piano 2).

Nota

Questa espressione è utile per identificare tutti gli utenti per i quali è stata abilitata una funzionalità di Office 365 o di un altro servizio online Microsoft. Ad esempio, per identificarli come destinatari di un determinato set di criteri.

L'espressione seguente selezionerà tutti gli utenti che hanno un piano di servizio qualsiasi associato al servizio Intune (identificato dal nome di servizio "SCO"):

user.assignedPlans -any (assignedPlan.service -eq "SCO" -and assignedPlan.capabilityStatus -eq "Enabled")

Uso dei valori Null

Per specificare un valore Null in una regola, è possibile usare "null" o $null. Esempio:

user.mail –ne null equivale a user.mail –ne $null

Attributi di estensione ed attributi personalizzati

Gli attributi di estensione e gli attributi personalizzati sono supportati nelle regole di appartenenza dinamica.

Gli attributi di estensione vengono sincronizzati dall'istanza locale di Window Server AD e hanno il formato "ExtensionAttributeX", dove X equivale a 1 - 15. Ecco un esempio di regola che usa un attributo di estensione:

(user.extensionAttribute15 -eq "Marketing")

Gli attributi personalizzati vengono sincronizzati dall'istanza locale di Windows Server AD o da un'applicazione SaaS collegata e hanno il formato "user.extension_[GUID]__[Attributo]", dove [GUID] è l'identificatore univoco in AAD per l'applicazione che ha creato l'attributo in AAD e [Attributo] è il nome dell'attributo creato. Ecco un esempio di regola che usa un attributo personalizzato:

user.extension_c272a57b722d4eb29bfe327874ae79cb__OfficeNumber

È possibile trovare il nome dell'attributo personalizzato nella directory eseguendo una query sull'attributo nell'utente con Esplora grafico e cercando il nome dell'attributo. Non sono attualmente supportati attributi multivalore sincronizzati da Active Directory locale.

Regola per i dipendenti diretti

È possibile creare un gruppo contenente tutti i dipendenti diretti di un manager. Quando i dipendenti diretti del manager cambieranno, l'appartenenza al gruppo verrà automaticamente modificata.

Nota

  1. Per il corretto funzionamento della regola, verificare che la proprietà Manager ID sia impostata correttamente sugli utenti inclusi nel tenant. È possibile controllare il valore corrente per un utente nella scheda Profilo.
  2. Questa regola supporta solo i dipendenti diretti. Attualmente non è possibile creare un gruppo per una gerarchia nidificata, ad esempio un gruppo che include dipendenti diretti e i relativi dipendenti.

Per configurare il gruppo

  1. Eseguire i passaggi da 1 a 5 illustrati nella sezione Per creare la regola avanzata e selezionare Utente dinamico come Tipo di appartenenza.
  2. Nel pannello Dynamic membership rules (Regole di appartenenza dinamica) immettere la regola con la sintassi seguente:

    Dipendenti diretti per "{obectID_of_manager}"

    Esempio di una regola valida:

                     Direct Reports for "62e19b97-8b3d-4d4a-a106-4ce66896a863"
    

    where “62e19b97-8b3d-4d4a-a106-4ce66896a863” is the objectID of the manager. The object ID can be found on manager's Profile tab.

  3. Dopo aver salvato la regola, tutti gli utenti con il valore Manager ID specificato verranno aggiunti al gruppo.

Uso degli attributi per creare regole per gli oggetti dispositivo

È anche possibile creare una regola che consenta di selezionare gli oggetti dispositivo per l'appartenenza a un gruppo. È possibile usare gli attributi del dispositivo seguenti:

Proprietà Valori consentiti Utilizzo
accountEnabled true false (device.accountEnabled -eq true)
displayName Qualsiasi valore stringa. (device.displayName - eq "Iphone di Rob")
deviceOSType Qualsiasi valore stringa. (device.deviceOSType -eq "IOS")
deviceOSVersion Qualsiasi valore stringa. (device.OSVersion -eq "9.1")
deviceCategory nome di una categoria di dispositivo valido (device.deviceCategory -eq "BYOD")
deviceManufacturer Qualsiasi valore stringa. (device.deviceManufacturer -eq "Microsoft")
deviceModel Qualsiasi valore stringa. (device.deviceModel -eq "IPhone 7+")
deviceOwnership Personale, Azienda (device.deviceOwnership -eq "Company")
domainName Qualsiasi valore stringa. (device.domainName -eq "contoso.com")
enrollmentProfileName Qualsiasi valore stringa. (device.enrollmentProfileName -eq "")
isRooted true false (device.deviceOSType -eq true)
managementType Qualsiasi valore stringa. (device.managementType -eq "")
organizationalUnit Qualsiasi valore stringa. (device.organizationalUnit -eq "")
deviceId un deviceId valido (device.deviceId -eq "d4fe7726-5966-431c-b3b8-cddc8fdb717d")
objectId un objectId AAD valido (device.objectId -eq "76ad43c9-32c5-45e8-a272-7b58b58f596d")

Nota

Impossibile creare le regole di dispositivo usando l'elenco a discesa "regola semplice" nel portale di Azure classico.

Modifica dell'appartenenza dinamica in statica e viceversa

È possibile modificare il modo in cui viene gestita l'appartenenza in un gruppo. Ciò è utile per mantenere lo stesso ID e nome di gruppo nel sistema in modo che i riferimenti al gruppo esistenti restino validi. Creando un nuovo gruppo sarebbe infatti necessario aggiornare tali riferimenti.

Avviso

Quando si modifica un gruppo statico esistente in gruppo dinamico, tutti i membri esistenti verranno rimossi dal gruppo e verrà quindi elaborata la regola di appartenenza per aggiungere nuovi membri. Se il gruppo viene usato per controllare l'accesso alle app o alle risorse, i membri originali potrebbero perdere l'accesso finché non viene completata l'elaborazione della regola di appartenenza.

È consigliabile testare prima la nuova regola per verificare che la nuova appartenenza nel gruppo sia quella prevista.

  1. Nel portale di Azure classico aprire il gruppo.
  2. Selezionare la scheda Configura per visualizzare lo stato corrente di appartenenza dinamica.
  3. Per rendere statico un gruppo, impostare semplicemente Abilita appartenenze dinamiche su NO. Fare clic sul pulsante Salva sulla barra degli strumenti in basso per confermare. I membri esistenti verranno mantenuti nel gruppo e da ora in poi la regola di appartenenza non verrà elaborata.
  4. Per rendere dinamico un gruppo, modificare l'impostazione in , specificare la regola di appartenenza desiderata e fare clic su Salva. I membri esistenti verranno rimossi e verrà avviata l'elaborazione della nuova regola per l'aggiunta di nuovi membri.

Passaggi successivi

Questi articoli forniscono informazioni aggiuntive su Azure Active Directory.