Konfigurowanie synchronizacji między dzierżawami przy użyciu programu PowerShell lub interfejsu API programu Microsoft Graph

W tym artykule opisano kluczowe kroki konfigurowania synchronizacji między dzierżawami przy użyciu programu Microsoft Graph PowerShell lub interfejsu API programu Microsoft Graph. Po skonfigurowaniu identyfikator Entra firmy Microsoft automatycznie aprowizuje i anuluje aprowizowanie użytkowników B2B w dzierżawie docelowej. Aby uzyskać szczegółowe instrukcje dotyczące korzystania z centrum administracyjnego firmy Microsoft Entra, zobacz Konfigurowanie synchronizacji między dzierżawami.

Diagram przedstawiający synchronizację między dzierżawami między dzierżawami źródłowymi i dzierżawą docelową.

Wymagania wstępne

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

Ikona dzierżawy docelowej.
Dzierżawa docelowa

Krok 1. Logowanie do dzierżawy docelowej

Ikona dzierżawy docelowej.
Dzierżawa docelowa

  1. Uruchom program PowerShell.

  2. W razie potrzeby zainstaluj zestaw MICROSOFT Graph PowerShell SDK.

  3. Pobierz identyfikator dzierżawy źródłowych i docelowych dzierżaw oraz zainicjuj zmienne.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  4. Użyj polecenia Połączenie-MgGraph, aby zalogować się do dzierżawy docelowej i wyrazić zgodę na następujące wymagane uprawnienia.

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

Krok 2. Włączanie synchronizacji użytkowników w dzierżawie docelowej

Ikona dzierżawy docelowej.
Dzierżawa docelowa

  1. W dzierżawie docelowej użyj polecenia New-MgPolicyCrossTenantAccessPolicyPartner , aby utworzyć nową konfigurację partnera w zasadach dostępu między dzierżawą docelową a dzierżawą źródłową. Użyj identyfikatora dzierżawy źródłowej w żądaniu.

    Jeśli wystąpi błąd New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists, być może masz już istniejącą konfigurację. Aby uzyskać więcej informacji, zobacz Objaw — błąd 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. Użyj polecenia Invoke-MgGraphRequest, aby włączyć synchronizację użytkowników w dzierżawie docelowej.

    Jeśli wystąpi Request_MultipleObjectsWithSameKeyValue błąd, być może masz już istniejące zasady. Aby uzyskać więcej informacji, zobacz Objaw — błąd 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. Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, aby sprawdzić, czy IsSyncAllowed ustawiono wartość True.

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

Krok 3. Automatyczne realizowanie zaproszeń w dzierżawie docelowej

Ikona dzierżawy docelowej.
Dzierżawa docelowa

  1. W dzierżawie docelowej użyj polecenia Update-MgPolicyCrossTenantAccessPolicyPartner , aby automatycznie zrealizować zaproszenia i pominąć monity o wyrażenie zgody dla dostępu przychodzącego.

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

Krok 4. Logowanie się do dzierżawy źródłowej

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. Uruchom wystąpienie programu PowerShell.

  2. Pobierz identyfikator dzierżawy źródłowych i docelowych dzierżaw oraz zainicjuj zmienne.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  3. Użyj polecenia Połączenie-MgGraph, aby zalogować się do dzierżawy źródłowej i wyrazić zgodę na następujące wymagane uprawnienia.

    • 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"
    

Krok 5. Automatyczne realizowanie zaproszeń w dzierżawie źródłowej

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. W dzierżawie źródłowej użyj polecenia New-MgPolicyCrossTenantAccessPolicyPartner , aby utworzyć nową konfigurację partnera w zasadach dostępu między dzierżawą źródłową a dzierżawą docelową. Użyj identyfikatora dzierżawy docelowej w żądaniu.

    Jeśli wystąpi błąd New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists, być może masz już istniejącą konfigurację. Aby uzyskać więcej informacji, zobacz Objaw — błąd 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. Użyj polecenia Update-MgPolicyCrossTenantAccessPolicyPartner, aby automatycznie zrealizować zaproszenia i pominąć monity o wyrażenie zgody dla dostępu wychodzącego.

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

Krok 6. Tworzenie aplikacji konfiguracji w dzierżawie źródłowej

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. W dzierżawie źródłowej użyj polecenia Invoke-MgInstantiateApplicationTemplate , aby dodać wystąpienie aplikacji konfiguracji z galerii aplikacji Entra firmy Microsoft do dzierżawy.

    Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
    
  2. Użyj polecenia Get-MgServicePrincipal, aby uzyskać identyfikator jednostki usługi i identyfikator roli aplikacji.

    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. Zainicjuj zmienną dla identyfikatora jednostki usługi.

    Pamiętaj, aby użyć identyfikatora jednostki usługi zamiast identyfikatora aplikacji.

    $ServicePrincipalId = "<ServicePrincipalId>"
    
  4. Zainicjuj zmienną dla identyfikatora roli aplikacji.

    $AppRoleId= "<AppRoleId>"
    

Krok 7. Testowanie połączenia z dzierżawą docelową

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. W dzierżawie źródłowej użyj polecenia Invoke-MgGraphRequest , aby przetestować połączenie z dzierżawą docelową i zweryfikować poświadczenia.

    $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
    

Krok 8. Tworzenie zadania aprowizacji w dzierżawie źródłowej

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

W dzierżawie źródłowej, aby włączyć aprowizowanie, utwórz zadanie aprowizacji.

  1. Określ szablon synchronizacji do użycia, taki jak Azure2Azure.

    Szablon ma wstępnie skonfigurowane ustawienia synchronizacji.

  2. W dzierżawie źródłowej użyj polecenia New-MgServicePrincipalSynchronizationJob , aby utworzyć zadanie aprowizacji na podstawie szablonu.

    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. Zainicjuj zmienną dla identyfikatora zadania.

    $JobId = "<JobId>"
    

Krok 9. Zapisywanie poświadczeń

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. W dzierżawie źródłowej użyj polecenia Invoke-MgGraphRequest , aby zapisać poświadczenia.

    $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
    

Krok 10. Przypisywanie użytkownika do konfiguracji

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

Aby synchronizacja między dzierżawami działała, co najmniej jeden użytkownik wewnętrzny musi być przypisany do konfiguracji.

  1. W dzierżawie źródłowej użyj polecenia New-MgServicePrincipalAppRoleAssignedTo , aby przypisać użytkownika wewnętrznego do konfiguracji.

    $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]}
    

Krok 11. Testowanie aprowizacji na żądanie

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

Teraz, gdy masz konfigurację, możesz przetestować aprowizację na żądanie przy użyciu jednego z użytkowników.

  1. W dzierżawie źródłowej użyj polecenia Get-MgServicePrincipalSynchronizationJobSchema , aby uzyskać identyfikator reguły schematu.

    $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. Zainicjuj zmienną dla identyfikatora reguły.

    $RuleId = "<RuleId>"
    
  3. Użyj polecenia New-MgServicePrincipalSynchronizationJobOnDemand, aby aprowizować użytkownika testowego na żądanie.

    $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]}
    

Krok 12. Uruchamianie zadania aprowizacji

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. Po skonfigurowaniu zadania aprowizacji w dzierżawie źródłowej użyj polecenia Start-MgServicePrincipalSynchronizationJob , aby uruchomić zadanie aprowizacji.

    Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    

Krok 13. Monitorowanie aprowizacji

Ikona dzierżawy źródłowej.
Dzierżawa źródłowa

  1. Teraz, gdy zadanie aprowizacji jest uruchomione, w dzierżawie źródłowej użyj polecenia Get-MgServicePrincipalSynchronizationJob , aby monitorować postęp bieżącego cyklu aprowizacji, a także statystyki do tej pory, takie jak liczba użytkowników i grup, które zostały utworzone w systemie docelowym.

    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. Oprócz monitorowania stanu zadania aprowizacji użyj polecenia Get-MgAuditLogProvisioning , aby pobrać dzienniki aprowizacji i pobrać wszystkie zdarzenia aprowizacji, które występują. Na przykład wykonaj zapytanie dotyczące określonego użytkownika i ustal, czy zostały one pomyślnie aprowidowane.

    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        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_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        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_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        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_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 : {}
    

Wskazówki dotyczące rozwiązywania problemów

Objaw — błąd niewystarczające uprawnienia

Podczas próby wykonania akcji zostanie wyświetlony komunikat o błędzie podobny do następującego:

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

Przyczyna

Zalogowany użytkownik nie ma wystarczających uprawnień lub musisz wyrazić zgodę na jedno z wymaganych uprawnień.

Rozwiązanie

  1. Upewnij się, że masz przypisane wymagane role. Zobacz Wymagania wstępne we wcześniejszej sekcji tego artykułu.

  2. Po zalogowaniu się przy użyciu Połączenie-MgGraph upewnij się, że określono wymagane zakresy. Zobacz Krok 1. Logowanie się do dzierżawy docelowej i Krok 4. Logowanie się do dzierżawy źródłowej we wcześniejszej sekcji tego artykułu.

Objaw — błąd new-MgPolicyCrossTenantAccessPolicyPartner_Create

Podczas próby utworzenia nowej konfiguracji partnera zostanie wyświetlony komunikat o błędzie podobny do następującego:

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

Przyczyna

Prawdopodobnie próbujesz utworzyć konfigurację lub obiekt, który już istnieje, prawdopodobnie z poprzedniej konfiguracji.

Rozwiązanie

  1. Sprawdź składnię i czy używasz poprawnego identyfikatora dzierżawy.

  2. Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartner, aby wyświetlić istniejący obiekt.

  3. Jeśli masz istniejący obiekt, może być konieczne wprowadzenie aktualizacji przy użyciu polecenia Update-MgPolicyCrossTenantAccessPolicyPartner

Objaw — błąd Request_MultipleObjectsWithSameKeyValue

Podczas próby włączenia synchronizacji użytkowników zostanie wyświetlony komunikat o błędzie podobny do następującego:

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.", ... }}}

Przyczyna

Prawdopodobnie próbujesz utworzyć zasady, które już istnieją, prawdopodobnie z poprzedniej konfiguracji.

Rozwiązanie

  1. Sprawdź składnię i czy używasz poprawnego identyfikatora dzierżawy.

  2. Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, aby wyświetlić ustawienieIsSyncAllowed.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
  3. Jeśli masz istniejące zasady, może być konieczne wprowadzenie aktualizacji przy użyciu polecenia Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization , aby włączyć synchronizację użytkowników.

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

Następne kroki