# Gruppenverwaltung Group Management

Sicherheitsgruppen, Microsoft-365-Gruppen, dynamische Regeln, Besitzermodelle und gruppenbasierte Lizenzierung.Security groups, Microsoft 365 groups, dynamic rules, ownership models, and group-based licensing.

Sicherheitsfokus Security focus

Gruppen steuern Zugriff, Lizenzen, Kommunikation und Richtlinienzuweisungen.Groups control access, licenses, collaboration, and policy assignment.

Dynamik Dynamic membership

Regelbasierte Gruppen reduzieren manuelle Pflege und Fehler.Rule-based groups reduce manual maintenance and mistakes.

Governance Governance

Benennung, Ablauf und Besitzerschaft sind für saubere Betriebsmodelle zentral.Naming, expiration, and ownership are central to clean operating models.

## Gruppentypen Group types

In Entra ID dominieren Sicherheitsgruppen und Microsoft-365-Gruppen. Beide Objekttypen sind technisch ähnlich, aber funktional unterschiedlich.In Entra ID, security groups and Microsoft 365 groups dominate. Both object types are technically similar but functionally different.

Aspekt Aspect | Sicherheitsgruppe Security group | M365-Gruppe M365 group
--- | --- | ---
Zweck Purpose | Zugriff, Rollen, Lizenzierung.Access, roles, licensing. | Zusammenarbeit inkl. Teams/SharePoint/Planner.Collaboration including Teams/SharePoint/Planner.
mailEnabled mailEnabled | In der Regel nein.Usually no. | Ja.Yes.
groupTypes groupTypes | Leer oder dyn. Sicherheitsregel.Empty or dynamic security rule. | ["Unified"] ggf. mit DynamicMembership.["Unified"] optionally with DynamicMembership.
Besitzer/Mitglieder Owners/members | Ja.Yes. | Ja.Yes.
Nested groups Nested groups | Teilweise unterstützt.Partly supported. | Nicht für Mitgliedschaftsverschachtelung.Not for nested membership.
Gruppenbasierte Lizenzierung Group-based licensing | Ja.Yes. | Ja, wenn geeignet.Yes, if suitable.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.Read.All"
    Get-MgGroup -Top 20 -Property DisplayName,SecurityEnabled,MailEnabled,GroupTypes |
      Select-Object DisplayName, SecurityEnabled, MailEnabled, GroupTypes

Graph API Graph API

    GET https://graph.microsoft.com/v1.0/groups?$select=displayName,securityEnabled,mailEnabled,groupTypes&$top=20
    Authorization: Bearer <token>

## Sicherheitsgruppe erstellen Create security group

Eine klassische Sicherheitsgruppe ist die Standardwahl für Zugriffssteuerung, App-Zuweisungen und rollennahe Automatisierung.A classic security group is the default choice for access control, app assignments, and role-adjacent automation.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All"
    New-MgGroup `
      -DisplayName "SG-Cloud-Admins" `
      -Description "Security group for cloud admins" `
      -MailEnabled:$false `
      -MailNickname "sg-cloud-admins" `
      -SecurityEnabled:$true

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "displayName": "SG-Cloud-Admins",
      "description": "Security group for cloud admins",
      "mailEnabled": false,
      "mailNickname": "sg-cloud-admins",
      "securityEnabled": true
    }

## Microsoft-365-Gruppe erstellen Create Microsoft 365 group

Microsoft-365-Gruppen bringen Collaboration-Workloads wie SharePoint, Exchange und optional Teams mit. Deshalb sollten Namenskonventionen und Besitzerschaft früh geklärt werden.Microsoft 365 groups bring collaboration workloads such as SharePoint, Exchange, and optionally Teams. Therefore, naming conventions and ownership should be defined early.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All"
    New-MgGroup `
      -DisplayName "M365-Platform-Team" `
      -Description "Collaboration workspace for platform team" `
      -MailEnabled `
      -MailNickname "m365-platform-team" `
      -SecurityEnabled:$false `
      -GroupTypes @("Unified")

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "displayName": "M365-Platform-Team",
      "description": "Collaboration workspace for platform team",
      "mailEnabled": true,
      "mailNickname": "m365-platform-team",
      "securityEnabled": false,
      "groupTypes": ["Unified"]
    }

## Dynamische Mitgliedschaftsregeln Dynamic membership rules

Dynamische Gruppen basieren auf Benutzer- oder Geräteattributen. Sie eignen sich für Lizenzen, Conditional Access, App-Zuweisungen und Governance – solange die Quellattribute sauber gepflegt und vor Missbrauch geschützt sind.Dynamic groups are based on user or device attributes. They fit licensing, Conditional Access, app assignments, and governance—as long as source attributes are cleanly maintained and protected against misuse.

Operator Operator | Deutsch German | English English | Beispiel Example
--- | --- | --- | ---
-eq-eq | gleich gleich | equals equals | user.department -eq "Sales"user.department -eq "Sales"
-ne-ne | ungleich ungleich | not equals not equals | user.city -ne "Berlin"user.city -ne "Berlin"
-contains-contains | enthält enthält | contains contains | user.displayName -contains "Admin"user.displayName -contains "Admin"
-startsWith-startsWith | beginnt mit beginnt mit | starts with starts with | user.mail -startsWith "it-"user.mail -startsWith "it-"
-endsWith-endsWith | endet mit endet mit | ends with ends with | user.userPrincipalName -endsWith "@contoso.com"user.userPrincipalName -endsWith "@contoso.com"
-match-match | Regex-Treffer Regex-Treffer | regex match regex match | user.city -match "New.*"user.city -match "New.*"
-in-in | ist in Liste ist in Liste | is in list is in list | user.country -in ["DE","AT","CH"]user.country -in ["DE","AT","CH"]
-notIn-notIn | ist nicht in Liste ist nicht in Liste | is not in list is not in list | user.country -notIn ["US","CA"]user.country -notIn ["US","CA"]
-any-any | mindestens ein Wert mindestens ein Wert | any value any value | (user.proxyAddresses -any (_ -contains "contoso.com"))(user.proxyAddresses -any (_ -contains "contoso.com"))
-all-all | alle Werte alle Werte | all values all values | (user.otherMails -all (_ -endsWith "@contoso.com"))(user.otherMails -all (_ -endsWith "@contoso.com"))

Benutzerattribut User property | Einsatz Usage
--- | ---
accountEnabled accountEnabled | Für regelbasierte Benutzersegmente.For rule-based user segments.
city city | Für regelbasierte Benutzersegmente.For rule-based user segments.
companyName companyName | Für regelbasierte Benutzersegmente.For rule-based user segments.
country country | Für regelbasierte Benutzersegmente.For rule-based user segments.
department department | Für regelbasierte Benutzersegmente.For rule-based user segments.
displayName displayName | Für regelbasierte Benutzersegmente.For rule-based user segments.
employeeId employeeId | Für regelbasierte Benutzersegmente.For rule-based user segments.
employeeType employeeType | Für regelbasierte Benutzersegmente.For rule-based user segments.
givenName givenName | Für regelbasierte Benutzersegmente.For rule-based user segments.
jobTitle jobTitle | Für regelbasierte Benutzersegmente.For rule-based user segments.
mail mail | Für regelbasierte Benutzersegmente.For rule-based user segments.
mailNickname mailNickname | Für regelbasierte Benutzersegmente.For rule-based user segments.
mobile mobile | Für regelbasierte Benutzersegmente.For rule-based user segments.
officeLocation officeLocation | Für regelbasierte Benutzersegmente.For rule-based user segments.
onPremisesDistinguishedName onPremisesDistinguishedName | Für regelbasierte Benutzersegmente.For rule-based user segments.
passwordPolicies passwordPolicies | Für regelbasierte Benutzersegmente.For rule-based user segments.
physicalDeliveryOfficeName physicalDeliveryOfficeName | Für regelbasierte Benutzersegmente.For rule-based user segments.
postalCode postalCode | Für regelbasierte Benutzersegmente.For rule-based user segments.
preferredLanguage preferredLanguage | Für regelbasierte Benutzersegmente.For rule-based user segments.
state state | Für regelbasierte Benutzersegmente.For rule-based user segments.
streetAddress streetAddress | Für regelbasierte Benutzersegmente.For rule-based user segments.
surname surname | Für regelbasierte Benutzersegmente.For rule-based user segments.
telephoneNumber telephoneNumber | Für regelbasierte Benutzersegmente.For rule-based user segments.
usageLocation usageLocation | Für regelbasierte Benutzersegmente.For rule-based user segments.
userPrincipalName userPrincipalName | Für regelbasierte Benutzersegmente.For rule-based user segments.
userType userType | Für regelbasierte Benutzersegmente.For rule-based user segments.
otherMails otherMails | Für regelbasierte Benutzersegmente.For rule-based user segments.
proxyAddresses proxyAddresses | Für regelbasierte Benutzersegmente.For rule-based user segments.
memberOf memberOf | Für regelbasierte Benutzersegmente.For rule-based user segments.
employeeHireDate employeeHireDate | Für regelbasierte Benutzersegmente.For rule-based user segments.

Geräteattribut Device property | Einsatz Usage
--- | ---
device.deviceCategory device.deviceCategory | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceId device.deviceId | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceManufacturer device.deviceManufacturer | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceModel device.deviceModel | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceOSType device.deviceOSType | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceOSVersion device.deviceOSVersion | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceOwnership device.deviceOwnership | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.devicePhysicalIds device.devicePhysicalIds | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.deviceTrustType device.deviceTrustType | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.displayName device.displayName | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.enrollmentProfileName device.enrollmentProfileName | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.extensionAttribute1 device.extensionAttribute1 | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.isCompliant device.isCompliant | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.isManaged device.isManaged | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.managementType device.managementType | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.profileType device.profileType | Für regelbasierte Gerätesegmente.For rule-based device segments.
device.systemLabels device.systemLabels | Für regelbasierte Gerätesegmente.For rule-based device segments.

Szenario Scenario | Regel Rule
--- | ---
Alle IT-Mitarbeiter All IT employees | user.department -eq "IT"user.department -eq "IT"
Deutschland oder Österreich Germany or Austria | user.usageLocation -in ["DE","AT"]user.usageLocation -in ["DE","AT"]
Nicht deaktivierte Gastkonten Enabled guest accounts | (user.userType -eq "Guest") and (user.accountEnabled -eq true)(user.userType -eq "Guest") and (user.accountEnabled -eq true)
Manager in Berlin Managers in Berlin | (user.jobTitle -contains "Manager") and (user.city -eq "Berlin")(user.jobTitle -contains "Manager") and (user.city -eq "Berlin")
Ausschluss von Testkonten Exclude test accounts | (user.department -eq "IT") and not (user.displayName -startsWith "TEST-")(user.department -eq "IT") and not (user.displayName -startsWith "TEST-")
Mehrere Firmenmarken Multiple company brands | user.companyName -in ["Contoso","Fabrikam"]user.companyName -in ["Contoso","Fabrikam"]
Compliant Windows-Geräte Compliant Windows devices | (device.deviceOSType -eq "Windows") and (device.isCompliant -eq true)(device.deviceOSType -eq "Windows") and (device.isCompliant -eq true)
Hybrid-Join-Geräte Hybrid joined devices | device.deviceTrustType -eq "ServerAD"device.deviceTrustType -eq "ServerAD"

🚫 Wichtig Important

Verwenden Sie keine frei durch Benutzer änderbaren Attribute für sicherheitskritische Gruppen, wenn diese Gruppen Zugriff oder Richtlinien steuern. Sonst kann Attribut-Manipulation indirekt zu Berechtigungseskalation führen.Do not use user-writable attributes for security-critical groups when those groups drive access or policies. Otherwise, attribute manipulation can indirectly cause privilege escalation.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All"
    New-MgGroup `
      -DisplayName "DG-DE-Users" `
      -Description "Dynamic group for users in Germany" `
      -MailEnabled:$false `
      -MailNickname "dg-de-users" `
      -SecurityEnabled:$true `
      -GroupTypes @("DynamicMembership") `
      -MembershipRule 'user.usageLocation -eq "DE"' `
      -MembershipRuleProcessingState "On"

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "displayName": "DG-DE-Users",
      "description": "Dynamic group for users in Germany",
      "mailEnabled": false,
      "mailNickname": "dg-de-users",
      "securityEnabled": true,
      "groupTypes": ["DynamicMembership"],
      "membershipRule": "user.usageLocation -eq \"DE\"",
      "membershipRuleProcessingState": "On"
    }

## Mitglieder und Besitzer Members and owners

Mitglieder und Besitzer sollten getrennt betrachtet werden. Besitzer administrieren das Objekt, Mitglieder erhalten Zugriff oder Collaboration-Funktionen.Members and owners should be treated separately. Owners administer the object, while members receive access or collaboration capabilities.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All","User.Read.All"
    New-MgGroupMemberByRef -GroupId "<group-id>" -BodyParameter @{
      "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/<user-id>"
    }
    New-MgGroupOwnerByRef -GroupId "<group-id>" -BodyParameter @{
      "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/<owner-id>"
    }
    Remove-MgGroupMemberByRef -GroupId "<group-id>" -DirectoryObjectId "<user-id>"

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups/<group-id>/members/$ref
    POST https://graph.microsoft.com/v1.0/groups/<group-id>/owners/$ref
    DELETE https://graph.microsoft.com/v1.0/groups/<group-id>/members/<user-id>/$ref
    Authorization: Bearer <token>

## Verschachtelte Gruppen Nested groups

Verschachtelung ist für Sicherheitsgruppen in mehreren Szenarien möglich, aber nicht universell. Besonders bei Microsoft-365-Gruppen und app-spezifischen Assignments gelten Ausnahmen.Nesting is possible for security groups in several scenarios, but not universally. Exceptions especially apply to Microsoft 365 groups and app-specific assignments.

Szenario Scenario | Unterstützt Supported | Hinweis Note
--- | --- | ---
Sicherheitsgruppe in Sicherheitsgruppe Security group in security group | Ja Yes | Klassische Verschachtelung möglich.Classic nesting is possible.
M365-Gruppe als Mitglied M365 group as member | Nein No | Nicht für Mitgliedschaftsverschachtelung gedacht.Not designed for nested membership.
App role assignments App role assignments | Eingeschränkt Limited | Nicht alle Ziele berücksichtigen Nested Groups gleich.Not all targets evaluate nested groups equally.
Conditional Access Conditional Access | Ja Yes | Group scope unterstützt direkte und indirekte Mitgliedschaften.Group scope supports direct and indirect memberships.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All"
    New-MgGroupMemberByRef -GroupId "<parent-group-id>" -BodyParameter @{
      "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/<child-group-id>"
    }

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups/<parent-group-id>/members/$ref
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/<child-group-id>"
    }

## Gruppenbasierte Lizenzierung Group-based licensing

Gruppenbasierte Lizenzierung reduziert Sonderfälle und unterstützt JML-Prozesse. Best Practice ist eine klare Trennung nach Persona, Region oder Workload.Group-based licensing reduces exceptions and supports joiner/mover/leaver processes. Best practice is clear separation by persona, region, or workload.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.ReadWrite.All","Organization.Read.All"
    $sku = Get-MgSubscribedSku | Where-Object SkuPartNumber -eq "ENTERPRISEPACK"
    Set-MgGroupLicense -GroupId "<group-id>" -AddLicenses @{SkuId = $sku.SkuId} -RemoveLicenses @()

Graph API Graph API

    POST https://graph.microsoft.com/v1.0/groups/<group-id>/assignLicense
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "addLicenses": [{ "skuId": "6fd2c87f-b296-42f0-b197-1e91e994b900" }],
      "removeLicenses": []
    }

## Ablaufrichtlinie Expiration policy

Eine Ablaufrichtlinie hilft, verwaiste Microsoft-365-Gruppen zu reduzieren. Besitzer erhalten Verlängerungshinweise, bevor ein Objekt abläuft.An expiration policy helps reduce stale Microsoft 365 groups. Owners receive renewal notifications before an object expires.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.Read.All"
    Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')" -ConsistencyLevel eventual

Graph API Graph API

    GET https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(c:c eq 'Unified')
    ConsistencyLevel: eventual
    Authorization: Bearer <token>

## Benennungsrichtlinie Naming policy

Benennungsrichtlinien strukturieren den Tenant und verhindern Wildwuchs. Präfixe, Suffixe und gesperrte Wörter sind typische Governance-Mittel.Naming policies structure the tenant and prevent sprawl. Prefixes, suffixes, and blocked words are common governance tools.

Element Element | Empfehlung Recommendation
--- | ---
Präfix Prefix | z. B. SG-, DG-, M365-for example SG-, DG-, M365-
Suffix Suffix | z. B. Land, Workload oder Schutzklasse for example country, workload, or protection class
Blocked Words Blocked words | Verhindern Sie Begriffe wie CEO, GlobalAdmin oder Secret.Prevent words like CEO, GlobalAdmin, or Secret.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Policy.Read.All"
    Get-MgPolicyDirectorySetting

Graph API Graph API

    GET https://graph.microsoft.com/v1.0/policies/directorySettings
    Authorization: Bearer <token>

## Gruppen auflisten und filtern List and filter groups

Für Inventare und Audits sollten Filter nach groupTypes, securityEnabled, mailEnabled oder Namensmustern genutzt werden. Dadurch bleiben Reports performant und reproduzierbar.For inventories and audits, use filters on groupTypes, securityEnabled, mailEnabled, or naming patterns. That keeps reports performant and reproducible.

PowerShell PowerShell

    Connect-MgGraph -Scopes "Group.Read.All"
    Get-MgGroup -Filter "securityEnabled eq true" -ConsistencyLevel eventual -CountVariable count -All |
      Select-Object DisplayName, MailEnabled, SecurityEnabled, GroupTypes
    $count

Graph API Graph API

    GET https://graph.microsoft.com/v1.0/groups?$filter=securityEnabled eq true&$count=true
    ConsistencyLevel: eventual
    Authorization: Bearer <token>

## Dynamic Group Rules – Complete Reference Dynamic group rules – complete reference

Dynamische Gruppen sind nur so gut wie ihre Quellattribute. Für Level-500-Betrieb müssen HR-Felder, Device Tags, Extension Attributes und Änderungsrechte gemeinsam betrachtet werden – sonst wird eine Automatisierung zur Sicherheitslücke.Dynamic groups are only as good as their source attributes. In level-500 operations, HR fields, device tags, extension attributes, and write permissions must be evaluated together—otherwise automation becomes a security gap.

### Operatoren und Ausdrücke Operators and expressions

Operator Operator | Einsatz Use
--- | ---
-eq-eq | Gleichheit für Strings, Bool, Enum.Equality for strings, bools, enums.
-ne-ne | Ungleichheit.Inequality.
-startsWith-startsWith | Präfixsuche für Benennungsschemata.Prefix search for naming conventions.
-endsWith-endsWith | Suffix- oder Domänenvergleich.Suffix or domain matching.
-contains-contains | Teilzeichenfolge, sparsam einsetzen.Substring search, use sparingly.
-notContains-notContains | Ausschluss von Teilzeichenfolgen.Exclude substring matches.
-in-in | Vergleich gegen Werteliste.Match against a list of values.
-notIn-notIn | Ausschlussliste.Negative value list.
-any-any | Für Collections wie proxyAddresses oder devicePhysicalIds.For collections such as proxyAddresses or devicePhysicalIds.
-all-all | Seltener, wenn alle Werte ein Muster erfüllen müssen.Less common, when every value must satisfy a condition.

### Benutzerattribute für Regeln User properties for rules

Eigenschaft Property | Beispielsyntax Example syntax | Typ Type
--- | --- | ---
accountEnabled accountEnabled | user.accountEnabled user.accountEnabled | Benutzerregel User rule
assignedPlans assignedPlans | user.assignedPlans user.assignedPlans | Benutzerregel User rule
city city | user.city user.city | Benutzerregel User rule
companyName companyName | user.companyName user.companyName | Benutzerregel User rule
country country | user.country user.country | Benutzerregel User rule
department department | user.department user.department | Benutzerregel User rule
deviceManagementAppId deviceManagementAppId | user.deviceManagementAppId user.deviceManagementAppId | Benutzerregel User rule
deviceOSType deviceOSType | user.deviceOSType user.deviceOSType | Benutzerregel User rule
deviceOSVersion deviceOSVersion | user.deviceOSVersion user.deviceOSVersion | Benutzerregel User rule
deviceOwnership deviceOwnership | user.deviceOwnership user.deviceOwnership | Benutzerregel User rule
deviceTrustType deviceTrustType | user.deviceTrustType user.deviceTrustType | Benutzerregel User rule
displayName displayName | user.displayName user.displayName | Benutzerregel User rule
employeeId employeeId | user.employeeId user.employeeId | Benutzerregel User rule
employeeType employeeType | user.employeeType user.employeeType | Benutzerregel User rule
extensionAttribute1 extensionAttribute1 | user.extensionAttribute1 user.extensionAttribute1 | Benutzerregel User rule
extensionAttribute2 extensionAttribute2 | user.extensionAttribute2 user.extensionAttribute2 | Benutzerregel User rule
extensionAttribute3 extensionAttribute3 | user.extensionAttribute3 user.extensionAttribute3 | Benutzerregel User rule
extensionAttribute4 extensionAttribute4 | user.extensionAttribute4 user.extensionAttribute4 | Benutzerregel User rule
extensionAttribute5 extensionAttribute5 | user.extensionAttribute5 user.extensionAttribute5 | Benutzerregel User rule
extensionAttribute6 extensionAttribute6 | user.extensionAttribute6 user.extensionAttribute6 | Benutzerregel User rule
extensionAttribute7 extensionAttribute7 | user.extensionAttribute7 user.extensionAttribute7 | Benutzerregel User rule
extensionAttribute8 extensionAttribute8 | user.extensionAttribute8 user.extensionAttribute8 | Benutzerregel User rule
extensionAttribute9 extensionAttribute9 | user.extensionAttribute9 user.extensionAttribute9 | Benutzerregel User rule
extensionAttribute10 extensionAttribute10 | user.extensionAttribute10 user.extensionAttribute10 | Benutzerregel User rule
extensionAttribute11 extensionAttribute11 | user.extensionAttribute11 user.extensionAttribute11 | Benutzerregel User rule
extensionAttribute12 extensionAttribute12 | user.extensionAttribute12 user.extensionAttribute12 | Benutzerregel User rule
extensionAttribute13 extensionAttribute13 | user.extensionAttribute13 user.extensionAttribute13 | Benutzerregel User rule
extensionAttribute14 extensionAttribute14 | user.extensionAttribute14 user.extensionAttribute14 | Benutzerregel User rule
extensionAttribute15 extensionAttribute15 | user.extensionAttribute15 user.extensionAttribute15 | Benutzerregel User rule
facsimileTelephoneNumber facsimileTelephoneNumber | user.facsimileTelephoneNumber user.facsimileTelephoneNumber | Benutzerregel User rule
givenName givenName | user.givenName user.givenName | Benutzerregel User rule
jobTitle jobTitle | user.jobTitle user.jobTitle | Benutzerregel User rule
legalAgeGroupClassification legalAgeGroupClassification | user.legalAgeGroupClassification user.legalAgeGroupClassification | Benutzerregel User rule
mail mail | user.mail user.mail | Benutzerregel User rule
mailNickname mailNickname | user.mailNickname user.mailNickname | Benutzerregel User rule
memberOf memberOf | user.memberOf user.memberOf | Benutzerregel User rule
mobile mobile | user.mobile user.mobile | Benutzerregel User rule
mobilePhone mobilePhone | user.mobilePhone user.mobilePhone | Benutzerregel User rule
objectId objectId | user.objectId user.objectId | Benutzerregel User rule
onPremisesDistinguishedName onPremisesDistinguishedName | user.onPremisesDistinguishedName user.onPremisesDistinguishedName | Benutzerregel User rule
onPremisesSecurityIdentifier onPremisesSecurityIdentifier | user.onPremisesSecurityIdentifier user.onPremisesSecurityIdentifier | Benutzerregel User rule
onPremisesSyncEnabled onPremisesSyncEnabled | user.onPremisesSyncEnabled user.onPremisesSyncEnabled | Benutzerregel User rule
otherMails otherMails | user.otherMails user.otherMails | Benutzerregel User rule
passwordPolicies passwordPolicies | user.passwordPolicies user.passwordPolicies | Benutzerregel User rule
physicalDeliveryOfficeName physicalDeliveryOfficeName | user.physicalDeliveryOfficeName user.physicalDeliveryOfficeName | Benutzerregel User rule
postalCode postalCode | user.postalCode user.postalCode | Benutzerregel User rule
preferredLanguage preferredLanguage | user.preferredLanguage user.preferredLanguage | Benutzerregel User rule
proxyAddresses proxyAddresses | user.proxyAddresses user.proxyAddresses | Benutzerregel User rule
sipProxyAddress sipProxyAddress | user.sipProxyAddress user.sipProxyAddress | Benutzerregel User rule
state state | user.state user.state | Benutzerregel User rule
streetAddress streetAddress | user.streetAddress user.streetAddress | Benutzerregel User rule
surname surname | user.surname user.surname | Benutzerregel User rule
telephoneNumber telephoneNumber | user.telephoneNumber user.telephoneNumber | Benutzerregel User rule
usageLocation usageLocation | user.usageLocation user.usageLocation | Benutzerregel User rule
userPrincipalName userPrincipalName | user.userPrincipalName user.userPrincipalName | Benutzerregel User rule
userType userType | user.userType user.userType | Benutzerregel User rule
employeeHireDate employeeHireDate | user.employeeHireDate user.employeeHireDate | Benutzerregel User rule

### Geräteattribute für Regeln Device properties for rules

Eigenschaft Property | Beispielsyntax Example syntax | Hinweis Note
--- | --- | ---
accountEnabled accountEnabled | device.accountEnabled -eq true device.accountEnabled -eq true | Aktiver Gerätebestand.Active device inventory.
deviceCategory deviceCategory | device.deviceCategory -eq "BYOD"device.deviceCategory -eq "BYOD" | Intune-Kategorie.Intune category.
deviceId deviceId | device.deviceId -eq "<guid>"device.deviceId -eq "<guid>" | Konkretes Gerät.Specific device.
deviceManagementAppId deviceManagementAppId | device.deviceManagementAppId -eq "0000000a-0000-0000-c000-000000000000"device.deviceManagementAppId -eq "0000000a-0000-0000-c000-000000000000" | Intune-managed Geräte.Intune-managed devices.
deviceManufacturer deviceManufacturer | device.deviceManufacturer -eq "Surface"device.deviceManufacturer -eq "Surface" | Herstellerfilter.Manufacturer filter.
deviceModel deviceModel | device.deviceModel -eq "iPad Air"device.deviceModel -eq "iPad Air" | Modellfilter.Model filter.
displayName displayName | device.displayName -startsWith "LAP-"device.displayName -startsWith "LAP-" | Namensschema.Naming convention.
deviceOSType deviceOSType | device.deviceOSType -eq "Windows"device.deviceOSType -eq "Windows" | Betriebssystem.Operating system.
deviceOSVersion deviceOSVersion | device.deviceOSVersion -startsWith "10.0.22631"device.deviceOSVersion -startsWith "10.0.22631" | Release-Ring oder Compliance.Release ring or compliance.
deviceOwnership deviceOwnership | device.deviceOwnership -eq "Company"device.deviceOwnership -eq "Company" | Corporate vs. Personal.Corporate versus personal.
devicePhysicalIds devicePhysicalIds | device.devicePhysicalIds -any (_ -startsWith "[ZTDId]")device.devicePhysicalIds -any (_ -startsWith "[ZTDId]") | Autopilot und Beschaffung.Autopilot and procurement.
deviceTrustType deviceTrustType | device.deviceTrustType -eq "AzureAD"device.deviceTrustType -eq "AzureAD" | Joined, hybrid joined, registered.Joined, hybrid joined, registered.
enrollmentProfileName enrollmentProfileName | device.enrollmentProfileName -eq "Autopilot-Standard"device.enrollmentProfileName -eq "Autopilot-Standard" | Enrollment profile targeting.Enrollment profile targeting.
extensionAttribute1-15 extensionAttribute1-15 | device.extensionAttribute1 -eq "Finance"device.extensionAttribute1 -eq "Finance" | Gerätemetadaten aus CMDB/MDM.Device metadata from CMDB/MDM.
isRooted isRooted | device.isRooted -eq true device.isRooted -eq true | Sicherheits-/Compliance-Fokus.Security/compliance focus.
managementType managementType | device.managementType -eq "MDM"device.managementType -eq "MDM" | MDM/MAM-Differenzierung.MDM/MAM differentiation.
memberOf memberOf | device.memberOf -any (group.objectId -in ['<groupId>'])device.memberOf -any (group.objectId -in ['<groupId>']) | Abgeleitete Gerätesegmente.Derived device segments.
objectId objectId | device.objectId -eq "<guid>"device.objectId -eq "<guid>" | Direkte Selektion.Direct selection.
profileType profileType | device.profileType -eq "RegisteredDevice"device.profileType -eq "RegisteredDevice" | Geräteregistrierungsart.Device registration profile type.
systemLabels systemLabels | device.systemLabels -startsWith "M365Managed"device.systemLabels -startsWith "M365Managed" | Read-only Tags aus Microsoft-Services.Read-only labels originating from Microsoft services.

### Validierung und typische Fehler Validation and common errors

Fehlerklasse Error class | Problematisches Muster Problematic pattern | Korrektur Correction
--- | --- | ---
Nicht unterstütztes Attribut Unsupported attribute | user.invalidProperty -eq "x"user.invalidProperty -eq "x" | Nur dokumentierte Eigenschaften verwenden; Schreibrechte vor Einsatz prüfen.Use only documented properties and validate write permissions before adopting them.
Falscher Operator Wrong operator | user.accountEnabled -contains true user.accountEnabled -contains true | Booleans mit -eq/-ne, collections mit -any/-all.Use -eq/-ne for booleans and -any/-all for collections.
Fehlender logischer Operator Missing logical operator | (user.department -eq "IT") (user.city -eq "Berlin")(user.department -eq "IT") (user.city -eq "Berlin") | Ausdrücke mit -and/-or verbinden.Join expressions with -and/-or.
Case und Nullhandling Case and null handling | user.userType -eq "guest"user.userType -eq "guest" | Werte exakt nach Dokumentation und null explizit behandeln.Use documented values and handle null explicitly.
Unsaubere Autopilot-Regeln Poor Autopilot rules | device.devicePhysicalIds -contains "OrderID"device.devicePhysicalIds -contains "OrderID" | Mit -any und exaktem Präfix [OrderID]: arbeiten.Use -any and the exact [OrderID]: prefix.

### Praxisbeispiele Real-world examples

Szenario Scenario | Regel Rule
--- | ---
Alle internen IT-Benutzer Alle internen IT-Benutzer | (user.department -eq "IT") and (user.userType -eq "Member")(user.department -eq "IT") and (user.userType -eq "Member")
Alle Gäste Alle Gäste | (user.userType -eq "Guest")(user.userType -eq "Guest")
Vertrieb in Deutschland Vertrieb in Deutschland | (user.department -eq "Sales") and (user.country -eq "DE")(user.department -eq "Sales") and (user.country -eq "DE")
Mitarbeiter mit Kostenstellen-Extension Mitarbeiter mit Kostenstellen-Extension | (user.extensionAttribute3 -eq "CC-1000")(user.extensionAttribute3 -eq "CC-1000")
Synced Benutzer Synced Benutzer | (user.onPremisesSyncEnabled -eq true)(user.onPremisesSyncEnabled -eq true)
Cloud-only Benutzer Cloud-only Benutzer | (user.onPremisesSyncEnabled -ne true)(user.onPremisesSyncEnabled -ne true)
Manager mit Titel Manager mit Titel | (user.jobTitle -contains "Manager")(user.jobTitle -contains "Manager")
Contractor Contractor | (user.employeeType -eq "Contractor")(user.employeeType -eq "Contractor")
Benutzer mit Firmenmail Benutzer mit Firmenmail | (user.mail -endsWith "@contoso.com")(user.mail -endsWith "@contoso.com")
Alle mit Mobile Alle mit Mobile | (user.mobile -ne null)(user.mobile -ne null)
Passwort nie ablaufend Passwort nie ablaufend | (user.passwordPolicies -eq "DisablePasswordExpiration")(user.passwordPolicies -eq "DisablePasswordExpiration")
Mitglied einer Basisgruppe Mitglied einer Basisgruppe | (user.memberOf -any (group.objectId -in ["11111111-1111-1111-1111-111111111111"]))(user.memberOf -any (group.objectId -in ["11111111-1111-1111-1111-111111111111"]))
Berlin oder München Berlin oder München | (user.city -in ["Berlin","Muenchen"])(user.city -in ["Berlin","Muenchen"])
US Usage Location US Usage Location | (user.usageLocation -eq "US")(user.usageLocation -eq "US")
Fakultät/Lehre Fakultät/Lehre | (user.extensionAttribute10 -eq "Faculty")(user.extensionAttribute10 -eq "Faculty")
FIDO-Pilot FIDO-Pilot | (user.extensionAttribute12 -eq "PasskeyPilot")(user.extensionAttribute12 -eq "PasskeyPilot")
Workday-Hire-Date in Zukunft Workday-Hire-Date in Zukunft | (user.employeeHireDate -ge system.now)(user.employeeHireDate -ge system.now)
Autopilot Windows Autopilot Windows | (device.devicePhysicalIds -any (_ -startsWith "[ZTDId]")) and (device.deviceOSType -eq "Windows")(device.devicePhysicalIds -any (_ -startsWith "[ZTDId]")) and (device.deviceOSType -eq "Windows")
Corporate Android Corporate Android | (device.deviceOSType -startsWith "Android") and (device.deviceOwnership -eq "Company")(device.deviceOSType -startsWith "Android") and (device.deviceOwnership -eq "Company")
Hybrid Join Hybrid Join | (device.deviceTrustType -eq "ServerAD")(device.deviceTrustType -eq "ServerAD")
Shared iPads Shared iPads | (device.deviceModel -contains "iPad") and (device.deviceCategory -eq "Shared")(device.deviceModel -contains "iPad") and (device.deviceCategory -eq "Shared")
M365 Managed M365 Managed | (device.systemLabels -startsWith "M365Managed")(device.systemLabels -startsWith "M365Managed")

🚨 Sicherheitsrelevanter Punkt Security-critical point

Verwenden Sie niemals ein Attribut in einer dynamischen Gruppe, das ein normaler Benutzer selbst ändern darf, wenn die Gruppe Lizenzen, Rollen, CA-Ausnahmen oder privilegierte App-Zugriffe steuert.Never use an attribute in a dynamic group if regular users can edit that attribute and the group controls licenses, roles, CA exceptions, or privileged app access.

## Group Writeback Group writeback

Group Writeback verbindet Cloud-Gruppen mit lokalem Active Directory. Für Hybridorganisationen ist das vor allem relevant, wenn lokale Anwendungen weiterhin AD-Gruppen lesen, während die Quelle der Wahrheit bereits in Entra ID liegt.Group writeback links cloud groups with on-premises Active Directory. In hybrid organizations, this matters when on-premises applications still consume AD groups while Entra ID is already the source of truth.

Szenario Scenario | Beschreibung Description
--- | ---
Microsoft 365 Group Writeback Microsoft 365 group writeback | Schreibt Unified Groups in das lokale AD für Exchange-/Applikationskompatibilität zurück.Writes unified groups back to on-prem AD for Exchange or application compatibility.
Cloud Security Group Writeback Cloud security group writeback | Ermöglicht lokalen Workloads die Nutzung cloudverwalteter Sicherheitsgruppen.Enables on-prem workloads to consume cloud-managed security groups.
Voraussetzungen Prerequisites | Entra Connect/Cloud Sync Design, OU-Konzept, Attributmapping, Konfliktmanagement.Entra Connect/Cloud Sync design, OU concept, attribute mapping, and conflict handling.

1. Schreibziel-OU definieren und Berechtigungen des Sync-Dienstkontos prüfen.Define the target OU and validate permissions of the sync service account.
2. Objektnamensschema, Mailattribute und Kollisionen mit bestehenden AD-Gruppen bereinigen.Normalize naming, mail attributes, and collisions with existing AD groups.
3. Writeback aktivieren, Pilotgruppe definieren und Delta/Full Sync dokumentiert testen.Enable writeback, define a pilot set, and test documented delta/full synchronization.
4. Downstream-Apps auf Member- und SID-Auflösung prüfen.Validate downstream applications for member and SID resolution.

PowerShell

    Connect-MgGraph -Scopes "Group.Read.All"
    Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')" -All |
      Select-Object DisplayName, MailNickname, Id

💡 Writeback Design Writeback design

Definieren Sie vor dem Pilot, welche Quelle für Mitglieder, Beschreibung, Mailnickname und Besitzerschaft führend bleibt. Ohne diese Entscheidung erzeugt Writeback schnell Dauerkonflikte zwischen Cloud und lokalem AD.Before piloting, define which source stays authoritative for membership, description, mail nickname, and ownership. Without that decision, writeback quickly creates permanent conflicts between cloud and on-prem AD.

## Microsoft 365 Group Settings Microsoft 365 group settings

Die Group.Unified-Vorlage steuert Gastzugriff, Benennungsregeln, Klassifizierung und Self-Service. In großen Tenants sollten diese Werte wie eine Richtlinie behandelt und versioniert werden.The Group.Unified template controls guest access, naming, classification, and self-service. In large tenants, treat these values like policy and version them.

Setting Setting | Bedeutung Meaning
--- | ---
AllowGuestsToAccessGroups AllowGuestsToAccessGroups | Steuert Gastzugriff auf M365-Gruppeninhalte.Controls guest access to Microsoft 365 group content.
AllowToAddGuests AllowToAddGuests | Erlaubt Besitzern das Hinzufügen externer Gäste.Allows owners to add external guests.
UsageGuidelinesUrl UsageGuidelinesUrl | Link auf Governance-/Kollaborationsrichtlinien.Points to collaboration governance guidelines.
ClassificationList ClassificationList | Verfügbare Klassifizierungslabels wie Public, Internal, Confidential.Available classification labels such as Public, Internal, Confidential.
DefaultClassification DefaultClassification | Standardklassifizierung für neue Gruppen.Default classification for new groups.
PrefixSuffixNamingRequirement PrefixSuffixNamingRequirement | Benennungsvorgabe mit Attribut-Platzhaltern.Naming requirement with attribute placeholders.
CustomBlockedWordsList CustomBlockedWordsList | Liste gesperrter Begriffe.Blocked words list.
EnableGroupCreation EnableGroupCreation | Globale Freigabe für Gruppenerstellung.Global toggle for group creation.
GroupCreationAllowedGroupId GroupCreationAllowedGroupId | Scope-Gruppe, falls Gruppenerstellung eingeschränkt ist.Scope group when group creation is restricted.
EnableMIPLabels EnableMIPLabels | Integration mit Sensitivity Labels.Sensitivity label integration.

### Betriebspraktiken Operational practices

Praxis Practice | Warum relevant Why it matters
--- | ---
Klassifizierung standardisieren Standardize classification | Verknüpft Gruppen-Governance mit Purview, Sharing und Sensitivity Labels.Links group governance to Purview, sharing, and sensitivity labels.
UsageGuidelinesUrl pflegen Maintain UsageGuidelinesUrl | Hilft Besitzern, Self-Service verantwortungsvoll zu nutzen.Helps owners use self-service responsibly.
Blocked words kuratieren Curate blocked words | Verhindert riskante oder peinliche Gruppennamen.Prevents risky or embarrassing group names.
Group creation scopen Scope group creation | Erlaubt kontrollierte Self-Service-Modelle.Enables controlled self-service models.
Template-Änderungen versionieren Version template changes | Änderungen an Gastzugriff oder Naming wirken tenantweit.Changes to guest access or naming affect the entire tenant.

PowerShell

    Connect-MgGraph -Scopes "Directory.ReadWrite.All","Policy.ReadWrite.Authorization"

    $settings = Get-MgBetaDirectorySetting | Where-Object DisplayName -eq "Group.Unified"
    if (-not $settings) {
      $template = Get-MgBetaDirectorySettingTemplate | Where-Object DisplayName -eq "Group.Unified"
      $settings = New-MgBetaDirectorySetting -TemplateId $template.Id
    }

    $values = @(
      @{ Name = "AllowGuestsToAccessGroups"; Value = "true" },
      @{ Name = "AllowToAddGuests"; Value = "false" },
      @{ Name = "UsageGuidelinesUrl"; Value = "https://intra.contoso.com/m365-groups" },
      @{ Name = "ClassificationList"; Value = "Public,Internal,Confidential,HighlyConfidential" },
      @{ Name = "DefaultClassification"; Value = "Internal" },
      @{ Name = "PrefixSuffixNamingRequirement"; Value = "[Department]-[GroupName]" },
      @{ Name = "CustomBlockedWordsList"; Value = "CEO,Admin,Global,Secret,Payroll" }
    )

    Update-MgBetaDirectorySetting -DirectorySettingId $settings.Id -Values $values