Konfigurieren der mandantenübergreifenden Synchronisierung mithilfe von Microsoft Graph PowerShell oder der Microsoft Graph-API

In diesem Artikel werden die wichtigsten Schritte zum Konfigurieren der mandantenübergreifenden Synchronisierung mithilfe von Microsoft Graph PowerShell oder der Microsoft Graph-API beschrieben. Bei der Konfiguration stellt Microsoft Entra ID automatisch B2B-Benutzer*innen in Ihrem Zielmandanten bereit und hebt diese Bereitstellung auf. Ausführliche Schritte zur Verwendung des Microsoft Entra Admin Centers finden Sie unter Konfigurieren der mandantenübergreifenden Synchronisierung.

Diagramm: mandantenübergreifende Synchronisierung zwischen Quellmandanten und Zielmandanten.

Voraussetzungen

Symbol für den Quellmandanten.
Quellmandant

Symbol für den Zielmandanten.
Zielmandant

Schritt 1: Anmelden beim Zielmandanten

Symbol für den Zielmandanten.
Zielmandant

  1. Starten Sie PowerShell.

  2. Installieren Sie bei Bedarf das Microsoft Graph PowerShell SDK.

  3. Rufen Sie die Mandanten-ID der Quell- und Zielmandanten ab, und initialisieren Sie Variablen.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  4. Verwenden Sie den Befehl Connect-MgGraph, um sich beim Zielmandanten anzumelden und den folgenden erforderlichen Berechtigungen zuzustimmen.

    • Policy.Read.All
    • Policy.ReadWrite.CrossTenantAccess
    Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
    

Schritt 2: Aktivieren der Benutzersynchronisierung im Zielmandanten

Symbol für den Zielmandanten.
Zielmandant

  1. Verwenden Sie im Zielmandanten den Befehl New-MgPolicyCrossTenantAccessPolicyPartner, um eine neue Partnerkonfiguration in einer mandantenübergreifenden Zugriffsrichtlinie zwischen dem Zielmandanten und dem Quellmandanten zu erstellen. Verwenden Sie die Quellmandanten-ID in der Anforderung.

    Wenn Sie den Fehler New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Konfiguration. Weitere Informationen finden Sie unter Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create.

    $Params = @{
        TenantId = $SourceTenantId
    }
    New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
    
    AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration
    B2BCollaborationInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BCollaborationOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    IdentitySynchronization      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner
    InboundTrust                 : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust
    IsServiceProvider            :
    TenantId                     : <SourceTenantId>
    TenantRestrictions           : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions
    AdditionalProperties         : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity],
                                   [crossCloudMeetingConfiguration,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
    
  2. Verwenden Sie den Befehl Invoke-MgGraphRequest, um die Benutzersynchronisierung im Zielmandanten zu aktivieren.

    Wenn Sie einen Fehler vom Typ Request_MultipleObjectsWithSameKeyValue erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Richtlinie. Weitere Informationen finden Sie unter Symptom: Fehler „Request_MultipleObjectsWithSameKeyValue“.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $Params
    
  3. Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, um zu überprüfen, ob IsSyncAllowed auf „true“ festgelegt ist.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
    IsSyncAllowed
    -------------
    True
    

Schritt 3: Automatisches Einlösen von Einladungen im Zielmandanten

Symbol für den Zielmandanten.
Zielmandant

  1. Verwenden Sie im Zielmandanten den Befehl Update-MgPolicyCrossTenantAccessPolicyPartner, um Einladungen automatisch einzulösen und Einwilligungsaufforderungen für eingehenden Zugriff zu unterdrücken.

    $AutomaticUserConsentSettings = @{
        "InboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

Schritt 4: Anmelden beim Quellmandanten

Symbol für den Quellmandanten.
Quellmandant

  1. Starten Sie eine Instanz von PowerShell.

  2. Rufen Sie die Mandanten-ID der Quell- und Zielmandanten ab, und initialisieren Sie Variablen.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  3. Verwenden Sie den Befehl Connect-MgGraph, um sich beim Quellmandanten anzumelden und den folgenden erforderlichen Berechtigungen zuzustimmen.

    • Policy.Read.All
    • Policy.ReadWrite.CrossTenantAccess
    • Application.ReadWrite.All
    • Directory.ReadWrite.All
    • AuditLog.Read.All
    Connect-MgGraph -TenantId $SourceTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess","Application.ReadWrite.All","Directory.ReadWrite.All","AuditLog.Read.All"
    

Schritt 5: Automatisches Einlösen von Einladungen im Quellmandanten

Symbol für den Quellmandanten.
Quellmandant

  1. Verwenden Sie im Quellmandanten den Befehl New-MgPolicyCrossTenantAccessPolicyPartner, um eine neue Partnerkonfiguration in einer mandantenübergreifenden Zugriffsrichtlinie zwischen dem Quellmandanten und dem Zielmandanten zu erstellen. Verwenden Sie die Zielmandanten-ID in der Anforderung.

    Wenn Sie den Fehler New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Konfiguration. Weitere Informationen finden Sie unter Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create.

    $Params = @{
        TenantId = $TargetTenantId
    }
    New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
    
    AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration
    B2BCollaborationInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BCollaborationOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    IdentitySynchronization      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner
    InboundTrust                 : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust
    IsServiceProvider            :
    TenantId                     : <TargetTenantId>
    TenantRestrictions           : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions
    AdditionalProperties         : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity],
                                   [crossCloudMeetingConfiguration,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
    
    
  2. Verwenden Sie den Befehl Update-MgPolicyCrossTenantAccessPolicyPartner, um Einladungen automatisch einzulösen und Einwilligungsaufforderungen für ausgehenden Zugriff zu unterdrücken.

    $AutomaticUserConsentSettings = @{
        "OutboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

Schritt 6: Erstellen einer Konfigurationsanwendung im Quellmandanten

Symbol für den Quellmandanten.
Quellmandant

  1. Verwenden Sie im Quellmandanten den Befehl Invoke-MgInstantiateApplicationTemplate, um Ihrem Mandanten eine Instanz einer Konfigurationsanwendung aus dem Microsoft Entra-Anwendungskatalog hinzuzufügen.

    Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
    
  2. Verwenden Sie den Befehl Get-MgServicePrincipal, um die Dienstprinzipal-ID und die App-Rollen-ID abzurufen.

    Get-MgServicePrincipal -Filter "DisplayName eq 'Fabrikam'" | Format-List
    
    AccountEnabled                      : True
    AddIns                              : {}
    AlternativeNames                    : {}
    AppDescription                      :
    AppDisplayName                      : Fabrikam
    AppId                               : <AppId>
    AppManagementPolicies               :
    AppOwnerOrganizationId              : <AppOwnerOrganizationId>
    AppRoleAssignedTo                   :
    AppRoleAssignmentRequired           : True
    AppRoleAssignments                  :
    AppRoles                            : {<AppRoleId>}
    ApplicationTemplateId               : 518e5f48-1fc8-4c48-9387-9fdf28b0dfe7
    ClaimsMappingPolicies               :
    CreatedObjects                      :
    CustomSecurityAttributes            : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCustomSecurityAttributeValue
    DelegatedPermissionClassifications  :
    DeletedDateTime                     :
    Description                         :
    DisabledByMicrosoftStatus           :
    DisplayName                         : Fabrikam
    Endpoints                           :
    ErrorUrl                            :
    FederatedIdentityCredentials        :
    HomeRealmDiscoveryPolicies          :
    Homepage                            : https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=aad2aadsync|ISV9.1|primary|z
    Id                                  : <ServicePrincipalId>
    Info                                : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInformationalUrl
    KeyCredentials                      : {}
    LicenseDetails                      :
    
    ...
    
  3. Initialisieren Sie eine Variable für die Dienstprinzipal-ID.

    Achten Sie darauf, die Dienstprinzipal-IDs anstelle der Anwendungs-ID zu verwenden.

    $ServicePrincipalId = "<ServicePrincipalId>"
    
  4. Initialisieren Sie eine Variable für die App-Rollen-ID.

    $AppRoleId= "<AppRoleId>"
    

Schritt 7: Testen der Verbindung mit dem Zielmandanten

Symbol für den Quellmandanten.
Quellmandant

  1. Verwenden Sie im Quellmandanten den Befehl Invoke-MgGraphRequest, um die Verbindung mit dem Zielmandanten zu testen und die Anmeldeinformationen zu überprüfen.

    $Params = @{
        "useSavedCredentials" = $false
        "templateId" = "Azure2Azure"
        "credentials" = @(
            @{
                "key" = "CompanyId"
                "value" = $TargetTenantId
            }
            @{
                "key" = "AuthenticationType"
                "value" = "SyncPolicy"
            }
        )
    }
    Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/jobs/validateCredentials" -Body $Params
    

Schritt 8: Erstellen eines Bereitstellungsauftrags im Quellmandanten

Symbol für den Quellmandanten
Quellmandant

Erstellen Sie im Quellmandanten einen Bereitstellungsauftrag, um die Bereitstellung zu aktivieren.

  1. Bestimmen Sie die zu verwendende Synchronisierungsvorlage, z. B. Azure2Azure.

    Eine Vorlage verfügt über vorkonfigurierte Synchronisierungseinstellungen.

  2. Verwenden Sie im Quellmandanten den Befehl New-MgServicePrincipalSynchronizationJob, um einen Bereitstellungsauftrag basierend auf einer Vorlage zu erstellen.

    New-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -TemplateId "Azure2Azure" | Format-List
    
    Id                         : <JobId>
    Schedule                   : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule
    Schema                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema
    Status                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus
    SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled}
    TemplateId                 : Azure2Azure
    AdditionalProperties       : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro
                                 nization/jobs/$entity]}
    
  3. Initialisieren Sie eine Variable für die Auftrags-ID.

    $JobId = "<JobId>"
    

Schritt 9: Speichern Ihrer Anmeldeinformationen

Symbol für den Quellmandanten
Quellmandant

  1. Verwenden Sie im Quellmandanten den Befehl Invoke-MgGraphRequest, um Ihre Anmeldeinformationen zu speichern.

    $Params = @{
        "value" = @(
            @{
                "key" = "AuthenticationType"
                "value" = "SyncPolicy"
            }
            @{
                "key" = "CompanyId"
                "value" = $TargetTenantId
            }
        )
    }
    Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/secrets" -Body $Params
    

Schritt 10: Zuweisen eines Benutzenden zur Konfiguration

Symbol für den Quellmandanten.
Quellmandant

Damit die mandantenübergreifende Synchronisierung funktioniert, muss der Konfiguration mindestens ein interner Benutzer zugewiesen sein.

  1. Verwenden Sie im Quellmandanten den Befehl New-MgServicePrincipalAppRoleAssignedTo, um der Konfiguration einen internen Benutzenden zuzuweisen.

    $Params = @{
        PrincipalId = "<PrincipalId>"
        ResourceId = $ServicePrincipalId
        AppRoleId = $AppRoleId
    }
    New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $ServicePrincipalId -BodyParameter $Params | Format-List
    
    AppRoleId            : <AppRoleId>
    CreatedDateTime      : 7/31/2023 10:27:12 PM
    DeletedDateTime      :
    Id                   : <Id>
    PrincipalDisplayName : User1
    PrincipalId          : <PrincipalId>
    PrincipalType        : User
    ResourceDisplayName  : Fabrikam
    ResourceId           : <ServicePrincipalId>
    AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#appRoleAssignments/$entity]}
    

Schritt 11: Testen der bedarfsorientierten Bereitstellung

Symbol für den Quellmandanten.
Quellmandant

Nachdem Sie nun über eine Konfiguration verfügen, können Sie die bedarfsorientierte Bereitstellung mit einem Ihrer Benutzer testen.

  1. Verwenden Sie im Quellmandanten den Befehl Get-MgServicePrincipalSynchronizationJobSchema, um die Schemaregel-ID abzurufen.

    $SynchronizationSchema = Get-MgServicePrincipalSynchronizationJobSchema -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    $SynchronizationSchema.SynchronizationRules | Format-List
    
    ContainerFilter      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphContainerFilter
    Editable             : True
    GroupFilter          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroupFilter
    Id                   : <RuleId>
    Metadata             : {defaultSourceObjectMappings, supportsProvisionOnDemand}
    Name                 : USER_INBOUND_USER
    ObjectMappings       : {Provision Azure Active Directory Users, , , …}
    Priority             : 1
    SourceDirectoryName  : Azure Active Directory
    TargetDirectoryName  : Azure Active Directory (target tenant)
    AdditionalProperties : {}
    
  2. Initialisieren Sie eine Variable für die Regel-ID.

    $RuleId = "<RuleId>"
    
  3. Verwenden Sie den Befehl New-MgServicePrincipalSynchronizationJobOnDemand, um bei Bedarf einen Testbenutzer bereitzustellen.

    $Params = @{
        Parameters = @(
            @{
                Subjects = @(
                    @{
                        ObjectId = "<UserObjectId>"
                        ObjectTypeName = "User"
                    }
                )
                RuleId = $RuleId
            }
        )
    }
    New-MgServicePrincipalSynchronizationJobOnDemand -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId -BodyParameter $Params | Format-List
    
    Key                  : Microsoft.Identity.Health.CPP.Common.DataContracts.SyncFabric.StatusInfo
    Value                : [{"provisioningSteps":[{"name":"EntryImport","type":"Import","status":"Success","description":"Retrieved User
                           'user1@fabrikam.com' from Azure Active Directory","timestamp":"2023-07-31T22:31:15.9116590Z","details":{"objectId":
                           "<UserObjectId>","accountEnabled":"True","displayName":"User1","mailNickname":"user1","userPrincipalName":"use
                           ...
    AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.stringKeyStringValuePair]}
    

Schritt 12: Starten des Bereitstellungsauftrags

Symbol für den Quellmandanten.
Quellmandant

  1. Verwenden Sie nach der Konfiguration des Bereitstellungsauftrags jetzt im Quellmandanten den Befehl Start-MgServicePrincipalSynchronizationJob, um den Bereitstellungsauftrag zu starten.

    Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    

Schritt 13: Überwachen der Bereitstellung

Symbol für den Quellmandanten.
Quellmandant

  1. Nun, da der Bereitstellungsauftrag ausgeführt wird, verwenden Sie im Quellmandanten den Befehl Get-MgServicePrincipalSynchronizationJob, um den Fortschritt des aktuellen Bereitstellungszyklus sowie die bisherigen Statistiken zu überwachen, z. B. die Anzahl der Benutzenden und Gruppen, die im Zielsystem erstellt wurden.

    Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId | Format-List
    
    Id                         : <JobId>
    Schedule                   : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule
    Schema                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema
    Status                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus
    SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled}
    TemplateId                 : Azure2Azure
    AdditionalProperties       : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro
                                 nization/jobs/$entity]}
    
  2. Verwenden Sie zusätzlich zur Überwachung des Status des Bereitstellungsauftrags den Befehl Get-MgAuditLogProvisioning, um die Bereitstellungsprotokolle abzurufen und alle aufgetretenen Bereitstellungsereignisse zu erhalten. Sie können beispielsweise einen bestimmten Benutzer abfragen, um zu ermitteln, ob dieser erfolgreich bereitgestellt wurde.

    Get-MgAuditLogDirectoryAudit | Select -First 10 | Format-List
    
    ActivityDateTime     : 7/31/2023 12:08:17 AM
    ActivityDisplayName  : Export
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec
    Id                   : Sync_cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec_L5BFV_161778479
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' was created in Azure Active Directory (target tenant)
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    
    ActivityDateTime     : 7/31/2023 12:08:17 AM
    ActivityDisplayName  : Export
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec
    Id                   : Sync_cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec_L5BFV_161778264
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' was updated in Azure Active Directory (target tenant)
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    
    ActivityDateTime     : 7/31/2023 12:08:14 AM
    ActivityDisplayName  : Synchronization rule action
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec
    Id                   : Sync_cc519f3b-fb72-4ea2-9b7b-8f9dc271c5ec_L5BFV_161778395
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' will be created in Azure Active Directory (target tenant) (User is active and assigned
                           in Azure Active Directory, but no matching User was found in Azure Active Directory (target tenant))
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    

Tipps zur Problembehandlung

Symptom: Fehler aufgrund von unzureichenden Berechtigungen

Wenn Sie versuchen, eine Aktion auszuführen, erhalten Sie eine Fehlermeldung ähnlich der folgenden:

code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.

Ursache

Entweder verfügt der angemeldete Benutzer nicht über ausreichende Berechtigungen, oder Sie müssen einer der erforderlichen Berechtigungen zustimmen.

Lösung

  1. Stellen Sie sicher, dass Ihnen die erforderlichen Rollen zugewiesen sind. Siehe Abschnitt Voraussetzungen weiter oben in diesem Artikel.

  2. Wenn Sie sich mit Connect-MgGraph anmelden, stellen Sie sicher, dass Sie die erforderlichen Bereiche angeben. Weitere Informationen finden Sie unter Schritt 1: Anmelden beim Zielmandanten und Schritt 4: Anmelden beim Quellmandanten weiter oben in diesem Artikel.

Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create

Wenn Sie versuchen, eine neue Partnerkonfiguration zu erstellen, erhalten Sie eine Fehlermeldung ähnlich der folgenden:

New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.

Ursache

Sie versuchen wahrscheinlich, eine bereits vorhandene Konfiguration oder ein bereits vorhandenes Objekt zu erstellen, das möglicherweise aus einer vorherigen Konfiguration stammt.

Lösung

  1. Überprüfen Sie Ihre Syntax, und stellen Sie sicher, dass Sie die richtige Mandanten-ID verwenden.

  2. Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartner, um das vorhandene Objekt auflisten.

  3. Wenn Sie ein bestehendes Objekt haben, müssen Sie möglicherweise mit Update-MgPolicyCrossTenantAccessPolicyPartner eine Aktualisierung vornehmen.

Symptom: Fehler „Request_MultipleObjectsWithSameKeyValue“

Wenn Sie versuchen, die Benutzersynchronisierung zu aktivieren, erhalten Sie eine Fehlermeldung ähnlich der folgenden:

Invoke-MgGraphRequest: PUT https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/<SourceTenantId>/identitySynchronization
HTTP/1.1 409 Conflict
...
{"error":{"code":"Request_MultipleObjectsWithSameKeyValue","message":"A conflicting object with one or more of the specified property values is present in the directory.","details":[{"code":"ConflictingObjects","message":"A conflicting object with one or more of the specified property values is present in the directory.", ... }}}

Ursache

Sie versuchen wahrscheinlich, eine Richtlinie zu erstellen, die bereits existiert, möglicherweise aus einer früheren Konfiguration.

Lösung

  1. Überprüfen Sie Ihre Syntax, und stellen Sie sicher, dass Sie die richtige Mandanten-ID verwenden.

  2. Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, um die Einstellung IsSyncAllowed aufzuführen.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
  3. Wenn Sie über eine vorhandene Richtlinie verfügen, müssen Sie möglicherweise mit dem Befehl Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization eine Aktualisierung vornehmen, um die Benutzersynchronisierung zu aktivieren.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params
    

Nächste Schritte