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żawcami.
Wymagania wstępne
Dzierżawa źródłowa
- Licencja microsoft Entra ID P1 lub P2. Aby uzyskać więcej informacji, zobacz Wymagania licencyjne.
- Rola administratora bezpieczeństwa do konfigurowania ustawień dostępu międzysesyjnego.
- Rola administratora tożsamości hybrydowej do konfigurowania synchronizacji między dzierżawcami.
- Administrator aplikacji w chmurze lub administrator aplikacji, aby przypisać użytkowników do konfiguracji i usunąć konfigurację.
- rola Administratora Ról Uprzywilejowanych do wyrażenia zgody na wymagane uprawnienia.
Dzierżawa docelowa
- Licencja microsoft Entra ID P1 lub P2. Aby uzyskać więcej informacji, zobacz Wymagania licencyjne.
- Rola administratora zabezpieczeń do konfigurowania ustawień dostępu między dzierżawami.
- Administrator uprzywilejowanych ról, aby wyrazić zgodę na wymagane uprawnienia.
Krok 1. Logowanie do dzierżawy docelowej
Dzierżawa docelowa
Uruchom program PowerShell.
W razie potrzeby zainstaluj zestaw MICROSOFT Graph PowerShell SDK.
Pobierz identyfikator dzierżawcy dzierżawcy źródłowego i docelowego oraz zainicjuj zmienne.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Użyj polecenia Connect-MgGraph, aby zalogować się do docelowego dzierżawcy 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łącz synchronizację użytkowników w dzierżawie docelowej
Dzierżawa docelowa
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 Symptom - 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]]}
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 Symptom - 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
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
Dzierżawa docelowa
W dzierżawie docelowej użyj polecenia Update-MgPolicyCrossTenantAccessPolicyPartner, aby automatycznie przyjąć zaproszenia i pominąć prośby o wyrażenie zgody dla dostępu przychodzącego.
$AutomaticUserConsentSettings = @{ "InboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
Krok 4: Zaloguj się do źródłowej dzierżawy
Dzierżawa źródłowa
Uruchom instancję programu PowerShell.
Pobierz identyfikator dzierżawców źródłowych i celowych oraz zainicjuj zmienne.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Użyj polecenia Connect-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
Dzierżawa źródłowa
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 najemcy docelowego 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 Symptom - 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]]}
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
Najemca źródłowy
W źródłowej dzierżawie użyj polecenia Invoke-MgInstantiateApplicationTemplate, aby dodać konkretny przykład aplikacji konfiguracyjnej z galerii aplikacji Entra firmy Microsoft do swojej dzierżawy.
Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
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 : ...
Zainicjuj zmienną dla identyfikatora jednostki usługi.
Pamiętaj, aby użyć identyfikatora jednostki usługi zamiast identyfikatora aplikacji.
$ServicePrincipalId = "<ServicePrincipalId>"
Zainicjuj zmienną dla identyfikatora roli aplikacji.
$AppRoleId= "<AppRoleId>"
Krok 7. Testowanie połączenia z dzierżawą docelową
Dzierżawa źródłowa
W dzierżawie źródłowej użyj polecenia Invoke-MgGraphRequest do przetestowania połączenia z dzierżawą docelową i zweryfikowania poświadczeń.
$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: Utwórz zadanie aprowizacji w dzierżawie źródłowej
Najemca źródłowy
Aby włączyć udostępnianie w dzierżawie źródłowej, utwórz zadanie udostępniania.
Określ szablon synchronizacji do użycia, taki jak
Azure2Azure
.Szablon ma wstępnie skonfigurowane ustawienia synchronizacji.
W dzierżawie źródłowej użyj polecenia New-MgServicePrincipalSynchronizationJob, aby utworzyć zadanie udostępniania 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]}
Zainicjuj zmienną dla identyfikatora zadania.
$JobId = "<JobId>"
Krok 9. Zapisz swoje poświadczenia
Jednostka źródłowa
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
Źródłowy najemca
Aby synchronizacja między dzierżawami mogła działać, co najmniej jeden użytkownik wewnętrzny musi być przypisany do konfiguracji.
W dzierżawie źródłowej, skorzystaj z 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 konfiguracji na żądanie
Dzierżawa źródłowa
Teraz, gdy masz konfigurację, możesz przetestować aprowizację na żądanie przy użyciu jednego z użytkowników.
W dzierżawie źródłowej użyj polecenia Get-MgServicePrincipalSynchronizationJobSchema, aby pobrać 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 : {}
Zainicjuj zmienną dla identyfikatora reguły.
$RuleId = "<RuleId>"
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: Uruchom zadanie aprowizacji
Klient źródłowy
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 procesu aprowizacji
Najemca źródłowy
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 oraz statystyki, takie jak liczba użytkowników i grup utworzonych 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]}
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ł on pomyślnie przydzielony.
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
Upewnij się, że masz przypisane wymagane role. Zobacz Wymagania wstępne we wcześniejszej sekcji tego artykułu.
Po zalogowaniu się za pomocą Connect-MgGraph, upewnij się, że określono wymagane zakresy. Zobacz Krok 1: Zaloguj się do dzierżawy docelowej i Krok 4: Zaloguj się do dzierżawy źródłowej we wcześniejszej sekcji tego artykułu.
Objaw — błąd w 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
Sprawdź składnię oraz upewnij się, że używasz poprawnego identyfikatora dzierżawy.
Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartner, aby wyświetlić istniejący obiekt.
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
Sprawdź składnię i czy używasz poprawnego identyfikatora dzierżawy.
Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, aby wyświetlić ustawienie
IsSyncAllowed
.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
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