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.

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.

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.

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