Groups Writeback
Wenn die Office 365 Groups und Teams in der Cloud anlegen, dann werden diese Objekte ein Exchange Empfänger in der Cloud mit einer Mailadresse aus Office 365. Sie erscheinen aber nicht im lokalen Exchange aber können per Mail natürlich blind adressiert werden. Die Funktion "Groups Writeback" von ADSync sorgt dafür, das auch On-Premises diese Information über die Empfänger vorhanden sind. Das ist insbesondere dann wichtig, wenn Sie für diese Gruppen auch die Mailadresse aus ihrer primären Domäne verwendet und sie so sicherstellen müssen, dass die Adresse nicht doppelt vergeben wird.
Wichtig: Seit ADSync 2.3.2 (12. Dez 2023) können Sie Group Write Back V2 nicht mehr konfigurieren und ab 30.6.2024 nicht mehr nutzen. Ein Wechsel zu AzureAD Cloud Sync ist erforderlich, um diese Funktion weiter nutzten zu können.
Hinweis: Ich habe die Informationen zum Schutz natürlich verändert. Nicht alle GUID enden zwangsläufig auf 1234567890ab und auch die Mailadressen sind leicht verändert.
Kurzfassung
ADSync Groups WriteBack liest aus dem AzureAD/Exchange Online die Office 365 Groups/Microsoft Teams aus und erstellt dazu passende "Universal Distribution Groups" im lokalen Active Directory samt Mailadressen (Exchange GAL) und pflegt sogar die Mitgliedschaften. Allerdings werden "Gäste" in der Cloud im lokalen Active Directory nicht abgebildet und auch die Exchange On-Premises PowerShell sieht diese Objekte nicht. Die Exchange Server hingegen kennen die Empfänger schon und verhindern so doppelte Mail-Adressen.
Objekte in der Cloud
Zuerst schauen wir mit der Exchange Online PowerShell die Einstellung in Exchange Online an. Sie sehen einige Gruppen und zuerst fällt auf, dass der Name sehr lang und kryptisch ist. Ich nehme an, dass dies von Microsoft beabsichtigt ist, damit das Objekt einen weltweit eindeutigen Namen hat, auch wenn es aktuell wohl noch nicht erforderlich wäre.
PS C:\> Get-UnifiedGroup Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ gruppe1_70b3c790-3d97-4e03-8d68-1234567890ab Gruppe1 Universal gruppe1@msxfaq2.onmicrosoft.com Vertrieb_a3801983-cd25-48dc-9099-1234567890ab Vertrieb Universal Vertrieb@msxfaq2.onmicrosoft.com Marketing_2b3c3554-d687-4444-b0ca-1234567890ab Marketing Universal Marketing@msxfaq2.onmicrosoft.com Marketing1_006f7c2e-6aa5-44bc-8ced-1234567890ab Marketing Universal Marketing1@msxfaq2.onmicrosoft.com TeamFCtest2020_b09b261c-d6fa-4621-9d83-1234567890ab Team FCtest2020 Universal TeamFCtest2020@msxfaq2.onmicrosoft.com
Exemplarisch habe ich die Team FCtest2020 ausgegeben.
PS C:\> Get-UnifiedGroup "uclabor.de" | fl * PSComputerName : outlook.office365.com RunspaceId : 8080ff17-d2f6-4e64-8043-1234567890ab PSShowComputerName : False AccessType : Public AuditLogAgeLimit : 90.00:00:00 AutoSubscribeNewMembers : False AlwaysSubscribeMembersToCalendarEvents : False CalendarMemberReadOnly : CalendarUrl : https://outlook.office365.com/owa/?path=/group/TeamFCtest2020@FCtest2020/calendar Database : NAMPR20DG216-db110 ExchangeGuid : 468c20f3-1cfc-4fa8-b931-1234567890ab FileNotificationsSettings : GroupSKU : Default InboxUrl : https://outlook.office365.com/owa/?path=/group/TeamFCtest2020@FCtest2020/mail IsExternalResourcesPublished : True IsMailboxConfigured : True Language : en-US MailboxProvisioningConstraint : ManagedByDetails : {FCtest2020} Notes : Team FCtest2020 PeopleUrl : https://outlook.office365.com/owa/?path=/group/TeamFCtest2020@FCtest2020/people PhotoUrl : https://outlook.office365.com/EWS/Exchange.asmx/s/GetUserPhoto?email=TeamFCtes t4@FCtest2020 ServerName : mwhpr2001mb1150 SharePointSiteUrl : https://msxfaq.sharepoint.com/sites/TeamFCtest2020 SharePointDocumentsUrl : https://msxfaq.sharepoint.com/sites/TeamFCtest2020/Shared Documents SharePointNotebookUrl : https://msxfaq.sharepoint.com/sites/TeamFCtest2020/SiteAssets/Team FCtest2020 Notebook SubscriptionEnabled : True WelcomeMessageEnabled : False ConnectorsEnabled : True IsMembershipDynamic : False Classification : GroupPersonification : YammerEmailAddress : GroupMemberCount : 6 MailboxRegion : GroupExternalMemberCount : 0 AllowAddGuests : True WhenSoftDeleted : HiddenFromExchangeClientsEnabled : True ExpirationTime : DataEncryptionPolicy : ResourceProvisioningOptions : {Team} ResourceBehaviorOptions : {WelcomeEmailDisabled, SubscribeMembersToCalendarEventsDisabled, HideGroupInOutlook} ServiceEndpointUris : {MicrosoftTeams.TeamHomeURL:https://teams.microsoft.com/l/team/19:0b167ecd657a 43e898a03e60179b40c0%40thread.skype/conversations?tenantId=3c6855ff-e39f-4d09- a473-33807598ce4b} SensitivityLabel : EmailAddresses : {SPO:SPO_46523052-2eb8-4b15-b034-5561615cb3de@SPO_<guid>, smtp:TeamFCtest2020@msxfaq2.onmicrosoft.com, SMTP:TeamFCtest2020@FCtest2020} PrimarySmtpAddress : TeamFCtest2020@msxfaq2.onmicrosoft.com Name : TeamFCtest2020_b09b261c-d6fa-4621-9d83-1234567890ab DisplayName : Team FCtest2020 RequireSenderAuthenticationEnabled : True ModerationEnabled : False SendModerationNotifications : Always SendOofMessageToOriginatorEnabled : False BypassModerationFromSendersOrMembers : {} ModeratedBy : {} GroupType : Universal IsDirSynced : False ManagedBy : {FCtest2020} MigrationToUnifiedGroupInProgress : False HiddenGroupMembershipEnabled : False ExpansionServer : ReportToManagerEnabled : False ReportToOriginatorEnabled : True Description : {} BccBlocked : False AcceptMessagesOnlyFrom : {} AcceptMessagesOnlyFromDLMembers : {} AcceptMessagesOnlyFromSendersOrMembers : {} AddressListMembership : {\All Recipients(VLV), \GroupMailboxes(VLV), \All Groups(VLV)} AdministrativeUnits : {} Alias : TeamFCtest2020 OrganizationalUnit : nampr20a001.prod.outlook.com/Microsoft Exchange Hosted Organizations/msxfaq2.onmicrosoft.com CustomAttribute1 : CustomAttribute10 : CustomAttribute11 : CustomAttribute12 : CustomAttribute13 : CustomAttribute14 : CustomAttribute15 : CustomAttribute2 : CustomAttribute3 : CustomAttribute4 : CustomAttribute5 : CustomAttribute6 : CustomAttribute7 : CustomAttribute8 : CustomAttribute9 : ExtensionCustomAttribute1 : {} ExtensionCustomAttribute2 : {} ExtensionCustomAttribute3 : {} ExtensionCustomAttribute4 : {} ExtensionCustomAttribute5 : {} GrantSendOnBehalfTo : {} ExternalDirectoryObjectId : b09b261c-d6fa-4621-9d83-1234567890ab HiddenFromAddressListsEnabled : True LastExchangeChangedTime : LegacyExchangeDN : /o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipien ts/cn=edbae44317854279a15a1867bfc35be8-TeamFCtest2020 MaxSendSize : 35 MB (36,700,160 bytes) MaxReceiveSize : 36 MB (37,748,736 bytes) PoliciesIncluded : {} PoliciesExcluded : {{26491cfc-9e50-4857-861b-0cb8df22b5d7}} EmailAddressPolicyEnabled : False RecipientType : MailUniversalDistributionGroup RecipientTypeDetails : GroupMailbox RejectMessagesFrom : {} RejectMessagesFromDLMembers : {} RejectMessagesFromSendersOrMembers : {} MailTip : MailTipTranslations : {} Identity : TeamFCtest2020_b09b261c-d6fa-4621-9d83-1234567890ab Id : TeamFCtest2020_b09b261c-d6fa-4621-9d83-1234567890ab IsValid : True ExchangeVersion : 0.10 (14.0.100.0) DistinguishedName : CN=TeamFCtest2020_b09b261c-d6fa-4621-9d83-1234567890ab,OU=msxfaq2.onmicrosoft.com ,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR20A001,DC=PROD,DC=OUTLOOK,DC=COM ObjectCategory : NAMPR20A001.PROD.OUTLOOK.COM/Configuration/Schema/Group ObjectClass : {top, group} WhenChanged : 11.06.2020 11:21:59 WhenCreated : 26.09.2018 15:46:00 WhenChangedUTC : 11.06.2020 09:21:59 WhenCreatedUTC : 26.09.2018 13:46:00 ExchangeObjectId : 6af396ce-bb46-42d3-80d9-371b85e2a2fa OrganizationId : NAMPR20A001.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/msxfaq2.onmicrosoft.com - NAMPR20A001.PROD.OUTLOOK.COM/Configura tionUnits/msxfaq2.onmicrosoft.com/Configuration Guid : 6af396ce-bb46-42d3-80d9-371b85e2a2fa OriginatingServer : BN7PR20A01DC003.NAMPR20A001.PROD.OUTLOOK.COM ObjectState : Changed
Soweit sind das ganz normale Exchange Empfänger und die Teams-Mitglieder sind in der Gruppe als Mitglieder zu sehen.
Interessant finde ich hier die folgenden Felder:
Feld | Inhalt | Beschreibung |
---|---|---|
PrimarySmtpAddress |
TeamFCtest2020@msxfaq2.onmicrosoft.com |
Das ist die normale "primäre" Adresse. Sie können Sie manuell oder per Empfängerrichtlinien ändern aber dazu später mehr |
EmailAddresses |
SMTP:TeamFCtest2020@msxfaq2.onmicrosoft.com, SPO:SPO_<guis>@SPO_<guid> |
Auch die bekannten "ProxyAddresses" sind mit der primären Adresse und einer SharePoint adresse gefüllt. |
RequireSenderAuthenticationEnabled |
True |
Es können per Default also nur Absender an diesen Empfänger senden, die authentifiziert sind. Ein Versand aus dem Internet an diese Adresse ist nicht möglich |
RecipientTypeDetails |
GroupMailbox |
Sieht nach einer Mailbox aus, aber ist keine richtige Mailbox |
RecipientType |
MailUniversalDistributionGroup |
Aus Sicht von Exchange ist es nämlich erst mal ein Mailverteiler und E-Mails an diesen Empfänger werden an alle Mitglieder versendet. |
HiddenFromAddressListsEnabled HiddenFromExchangeClientsEnabled |
False True |
Die Gruppe ist per Default in der Adressliste sichtbar aber nicht für Exchange Clients |
Sichtbarkeit mit Exchange PowerShell |
Nein |
Ja |
ADSync Einstellung
Nun habe ich natürlich in ADSync den "Groups Writeback" aktiviert
Bei der Konfiguration muss ich natürlich eine Ziel-OU angeben, in der diese Gruppenobjekte angelegt werden.
Der neuere ADSync-Assistent kann für sie gleich die Berechtigungen anpassen.
Das geht natürlich auch weiterhin manuell per PowerShell.
- Microsoft Entra Connect: Configure AD DS
Connector Account Permissions
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-configure-ad-ds-connector-account - Enable Microsoft Entra Connect group
writeback
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-group-writeback-enable
Lokales AD-Objekt
ADSync legte bei mir dann Objekte in der angegebenen Ziel-OU an.
Aus Sicht des Active Directory sind dies "Universal Distribution Groups", in denen auch die "Mitglieder" gepflegt sind. Allerdings fehlen "Gäste", da es für diese Objekte im lokalen AD keine Entsprechung gibt.
dn: CN=FCtest2022_<groupguid>,OU=O365Groups,DC=msxfaq,DC=de changetype: add objectClass: top objectClass: group cn: Group_<groupguid> description: Beschreibung des Team oder der Gruppe member:xxx3b3JrLERDPWRl member:xxxdvcmssREM9ZGU= member:F0d29yayxEQz1kZQ== distinguishedName: CN=FCtest2020_<groupguid>,OU=O365Groups,DC=msxfaq,DC=de instanceType: 4 displayName: Teams FCtest2020 proxyAddresses: SPO:SPO_<groupguid>@SPO_<tenantguid> proxyAddresses: SMTP:FCtest2020@msxfaq2.onmicrosoft.com adminDescription: Group_<groupguid> targetAddress: SMTP:FCtest2020@msxfaq2.onmicrosoft.com mailNickname: FCtest2020 name: Group_<groupguid> sAMAccountName: $TCD000-UQ8VTFK3NSG1 sAMAccountType: 268435457 legacyExchangeDN: /o=MSXFAQ/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=<guid>-TeamFCtest2020 groupType: 8 objectCategory: CN=Group,CN=Schema,CN=Configuration,DC=msxfaq,DC=de msExchRequireAuthToSendTo: TRUE mail: TeamFCtest2020@msxfaq2.onmicrosoft.com msExchPoliciesExcluded: {26491CFC-9E50-4857-861B-123456789ab} msExchMailboxAuditLogAgeLimit: 7776000 msExchVersion: 44220983382016 msExchLocalizationFlags: 0 msExchCoManagedByLink: CN=Teambesitzer,CN=Users,DC=msxfaq,DC=de msExchBypassAudit: FALSE msExchRecipientDisplayType: 17 msExchGroupExternalMemberCount: 0 msExchGroupMemberCount: 9 msExchGroupDepartRestriction: 0 msExchTransportRecipientSettingsFlags: 0 msExchRoleGroupType: 0 msExchRecipientSoftDeletedStatus: 0 msExchProvisioningFlags: 0 msExchMailboxAuditEnable: FALSE msExchGroupJoinRestriction: 0 msExchRecipientTypeDetails: 8796093022208 msExchUMDtmfMap: emailAddress:825226733 msExchUMDtmfMap: lastNameFirstName:825226733 msExchUMDtmfMap: firstNameLastName:825226733 msExchModerationFlags: 6 msExchAddressBookFlags: 1
Die Beschreibung, Mailadresse und ProxyAddresses wurde entsprechend angelegt und es ist eine "Gruppe".
Get-Recipient "CN=Group_<groupguid>,OU=O365Groups,DC=msxfaq,DC=de,OU=O365Groups,DC=msxfaq,DC=de" The operation couldn't be performed because object msxfaq.de/O365Groups/Group_<groupguid>,OU=O365Groups,DC=msxfaq,DC=de' couldn't be found on 'DC1.msxfaq.de'. + CategoryInfo : NotSpecified: (:) [Get-Recipient], ManagementObjectNotFoundException + FullyQualifiedErrorId : [Server=EX16,RequestId=3d1acfe2-60c6-40f9-ba8f-ed71431d5491,TimeStamp=11.11.2020 16:3 6:53] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 87B805F3,Microsoft.Exchange.Management.RecipientT asks.GetRecipient + PSComputerName : ex16.msxfaq.de
Lokale User als Member
Groups Writeback schreibt aber nicht nur die Gruppen mit der Mailadresse ins lokale Active Directory sondern auch die Mitgliedschaften. Wenn ich dann mein Konto anschaue, dann sehe ich auch alle Office Groups der Cloud, in denen ich Mitglied bin.
Nun möchte ich ja "verstehen", was passiert und welche Fehler das System selbst heilt. Ich habe mich daher als lokaler Administrator aus einer Gruppe entfernt. Würde ADSync diese Änderung dann in die Cloud übertragen oder die Änderung anhand der Daten aus der Cloud rückgängig machen oder es einfach übersehen?
ADSync hat meine Löschung rückgängig gemacht.
Exchange On-Premises
Allerdings gibt es einige Einschränkungen, von denen ich einige hier dokumentiere:
- Unsichtbar in der Exchange PowerShell
Die durch ADSync und Groups Writeback angelegten Objekte konnte ich mit keiner Exchange 2016 PowerShell sichtbar machen. Weder Get-Distributiongroup noch Get-Recipient hat diese besonderen "Gruppen" angezeigt. Ds macht die Verwaltung natürlich nicht gerade einfacher.
Zumindest wir aber verhindert, dass ich ein weiteres Objekt mit der gleichen Mailadresse anlege. - RequireSenderAuthenticationEnabled wird
nicht abgeglichen
Wenn Sie eine Office 365 Gruppe in der Cloud für anonymen Empfang freischalten, dann wird das Feld "NICHT" zum lokalen Active Directory repliziert.
Und dann gibt es noch weitere Dinge, die Microsoft selbst schon beschreibt.
Mail sent to a group's secondary SMTP
address fails to be delivered: When multiple email addresses
are added to a group, only the primary SMTP address is
written back to your On-Premises Active Directory. If an On-Premises
user tries to send a message to the secondary SMTP address
of a group, the message will fail to be delivered. To
prevent this issue, configure only one SMTP address on each
group.
Quelle: Configure Microsoft 365 Groups with On-Premises
Exchange hybrid
https://docs.microsoft.com/en-us/exchange/hybrid-deployment/set-up-microsoft-365-groups
Delivery of external mail to a group fails if you've enabled
centralized mail flow: If centralized mail flow is enabled, mail sent by an
external user to a group fails to be delivered, even though the group allows
email from external senders.
Quelle: Configure Microsoft 365 Groups with On-Premises Exchange hybrid
https://docs.microsoft.com/en-us/exchange/hybrid-deployment/set-up-microsoft-365-groups
Mailrouting an die Gruppe
Wenn Sie das "Standard-Setup" anschauen, dann ist die Gruppe über ihre erste und primäre Mailadresse erreichbar. Allerdings fällt dem erfahrenen Administrator auf, dass der "Send-Connector" von Exchange On-Premises zu Exchange Online einer Hybrid-Bereitstellung nicht die Domains "*@<tenantname>.onmicrosoft.com" im Adressraum enthält sondern nur "*@<tenantname>.onmicrosoft.com". Mail von der lokalen Umgebung werden als "außen herum" über den MX-Record für die Domäne "<tenantname>.onmicrosoft.com" geleitet. Sie müssen daher den Adressraum "<tenantname>.onmicrosoft.com" beim Connector addieren. Die Zustellung per MX-Record passt dann weiterhin.
Der Hybrid Connector muss aber korrekt konfiguriert sein, da ansonsten die On-Premises-Absender von Exchange Online nicht als "Authentifiziert" angesehen werden.
Weitere Details und insbesondere das Mailrouting mit Office 365 Groups/Teams habe ich auf Groups Mailrouting beschrieben.
Group Writeback v2 EOL
Anfang Jun 2022 hat Microsoft eine Version "Group Writeback v2" als Preview bereitgestellt, mit der AzureAD Connect auch die Microsoft 365 Groups aus Microsoft 365 im lokalen AD als Empfänger bereitstellen konnte. Diese Funktion wird nicht final gehen und Mitte 2024 abgeschaltet.
The public preview of Group Writeback v2
in Microsoft Entra Connect Sync will no longer be available
after June 30, 2024. This feature will be discontinued on
this date, and you will no longer be supported in Connect
Sync to provision cloud security groups to Active Directory.
Wer noch diese Funktion nutzt, muss bis dahin die Konfiguration angepasst haben. Mit "ADSync Version2.3.2" ist es auch nicht mehr möglich GroupsWriteback neu zu konfigurieren.
ADSync Release History 2.32
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/reference-connect-version-history#2320
Bestehende Konfiguration werden aber noch betrieben.
Ein Wechsel zu AzureAD Cloud Sync ist der von Microsoft vorgeschlagene Weg. Sie können AzureAD Cloud Sync auch parallel zu AzureAD Connect betreiben.
- Using the new Group Writeback
functionality in Azure AD
https://identity-man.eu/2022/07/05/using-the-new-group-writeback-functionality-in-azure-ad/ - Entra Connect Sync 2.3.2 - Group
Writeback V2 will be discontinued
https://blog.icewolf.ch/archive/2024/01/03/entra-connect-sync-2-3-2-group-writeback-v2-will-be-discontinued/
Einschätzung
Irgendwie werde ich den Verdacht nicht los, dass bei der Funktion "Groups Writeback" viele Möglichkeiten vergeben wurden und ich frage mich wirklich, warum jemand diese Funktion über AzureP1 lizenzieren sollte. Würde diese Funktion vielleicht auch die Mitglieder und Einstellungen von Sicherheitsgruppen abgleichen und so ein Management aus der Cloud erlauben, könnte ich mir das noch vorstellen.
Den einzigen Sinn der Anlage von Groups/Teams als Mailempfänger im lokalen AD sehe ich darin, dass die Mailadressen damit blockiert werden. Wenn Sie für ihre Teams nicht die Default Domains "<tenantname>.onmicrosoft.com" oder eine eigene Subdomains nutze, sondern ihre reguläre Domain verwenden, dann ist diese Funktion wichtig.
Allerdings können Sie auch sehr einfach selbst die Liste der Office 365 Gruppen regelmäßig per Get-UnifiedGroup odere Graph exportieren und die Objekte anlegen. Wer die Gruppen und Teams sowieso per Prozess anlegt, kann auch hier die Verwaltung mit integrieren.
Weitere Links
- Groups Mailrouting
-
How to connect group writeback
https://docs.microsoft.com/de-de/azure/active-directory/hybrid/how-to-connect-group-writeback - Configure Microsoft 365 Groups with On-Premises Exchange
hybrid
https://docs.microsoft.com/en-us/exchange/hybrid-deployment/set-up-microsoft-365-groups - Choose the domain to use when creating Microsoft 365 groups
https://docs.microsoft.com/en-us/microsoft-365/solutions/choose-domain-to-create-groups?view=o365-worldwide