PowerShell または Microsoft Graph API を使用してテナント間同期を構成する

この記事では、Microsoft Graph PowerShell または Microsoft Graph API を使用してテナント間同期を構成する主要な手順について説明します。 構成すると、Microsoft Entra ID では、ターゲット テナント内の B2B ユーザーが自動的にプロビジョニングおよびプロビジョニング解除されます。 Microsoft Entra 管理センターを使用する詳細な手順については、「テナント間同期を構成する」を参照してください。

ソース テナントとターゲット テナントの間のテナント間同期を示す図。

前提条件

ソース テナントのアイコン。
ソース テナント

ターゲット テナントのアイコン。
ターゲット テナント

手順 1: ターゲット テナントにサインインする

ターゲット テナントのアイコン。
ターゲット テナント

  1. PowerShell を開始します。

  2. 必要に応じて、Microsoft Graph PowerShell SDK をインストールします。

  3. ソースとターゲットのテナントのテナント ID を取得し、変数を初期化します。

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  4. Connect-MgGraph コマンドを使用してターゲット テナントにサインインし、次の必要なアクセス許可に同意します。

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

手順 2: ターゲット テナントでユーザーの同期を有効にする

ターゲット テナントのアイコン。
ターゲット テナント

  1. ターゲット テナントで、New-MgPolicyCrossTenantAccessPolicyPartner コマンドを使用して、ターゲット テナントとソース テナントの間のテナント間アクセス ポリシーに新しいパートナー構成を作成します。 要求でソース テナント ID を使用します。

    エラー New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists が発生した場合は、既存の構成が既に存在する可能性があります。 詳細については、「現象 - 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. Invoke-MgGraphRequest コマンドを使用して、ターゲット テナントでユーザー同期を有効にします。

    Request_MultipleObjectsWithSameKeyValue エラーが発生した場合は、既存のポリシーが既に存在する可能性があります。 詳細については、「現象 - 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. Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization コマンドを使用して、IsSyncAllowed が True に設定されていることを確認します。

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

手順 3: ターゲット テナントで招待を自動的に引き換える

ターゲット テナントのアイコン。
ターゲット テナント

  1. ターゲット テナントで、Update-MgPolicyCrossTenantAccessPolicyPartner コマンドを使用して、招待を自動的に引き換え、受信アクセスの同意プロンプトを抑制します。

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

手順 4: ソース テナントにサインインする

ソース テナントのアイコン。
ソース テナント

  1. PowerShell のインスタンスを開始します。

  2. ソースとターゲットのテナントのテナント ID を取得し、変数を初期化します。

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  3. Connect-MgGraph コマンドを使用してソース テナントにサインインし、次の必要なアクセス許可に同意します。

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

手順 5: ソース テナントで招待を自動的に引き換える

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、New-MgPolicyCrossTenantAccessPolicyPartner コマンドを使用して、ソース テナントとターゲット テナントの間のテナント間アクセス ポリシーに新しいパートナー構成を作成します。 要求でターゲット テナント ID を使用します。

    エラー New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists が発生した場合は、既存の構成が既に存在する可能性があります。 詳細については、「現象 - 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. Update-MgPolicyCrossTenantAccessPolicyPartner コマンドを使用して、招待を自動的に引き換え、送信アクセスの同意プロンプトを抑制します。

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

手順 6: ソース テナントで構成アプリケーションを作成する

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、Invoke-MgInstantiateApplicationTemplate コマンドを使って、Microsoft Entra アプリケーション ギャラリーからテナントに構成アプリケーションのインスタンスを追加します。

    Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
    
  2. Get-MgServicePrincipal コマンドを使用して、サービス プリンシパル ID とアプリ ロール ID を取得します。

    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. サービス プリンシパル ID の変数を初期化します。

    必ず、アプリケーション ID の代わりにサービス プリンシパル ID を使用してください。

    $ServicePrincipalId = "<ServicePrincipalId>"
    
  4. アプリ ロール ID の変数を初期化します。

    $AppRoleId= "<AppRoleId>"
    

手順 7: ターゲット テナントへの接続をテストする

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、Invoke-MgGraphRequest コマンドを使用して、ターゲット テナントへの接続をテストし、資格情報を検証します。

    $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
    

手順 8: ソース テナントでプロビジョニング ジョブを作成する

ソース テナントのアイコン。
ソース テナント

ソース テナントで、プロビジョニングを有効にするには、プロビジョニング ジョブを作成します。

  1. 使用する同期テンプレート (Azure2Azure など) を決定します。

    テンプレートには、事前に構成された同期設定が含まれています。

  2. ソース テナントで、New-MgServicePrincipalSynchronizationJob コマンドを使用して、テンプレートに基づくプロビジョニング ジョブを作成します。

    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. ジョブ ID の変数を初期化します。

    $JobId = "<JobId>"
    

手順 9: 資格情報を保存する

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、Invoke-MgGraphRequest コマンドを使用して、資格情報を保存します。

    $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
    

手順 10: 構成にユーザーを割り当てる

ソース テナントのアイコン。
ソース テナント

テナント間同期が機能するには、少なくとも 1 人の内部ユーザーを構成に割り当てる必要があります。

  1. ソース テナントで、New-MgServicePrincipalAppRoleAssignedTo コマンドを使用して、構成に内部ユーザーを割り当てます。

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

手順 11: オンデマンドのプロビジョニングをテストする

ソース テナントのアイコン。
ソース テナント

構成が完了したので、いずれかのユーザーでオンデマンド プロビジョニングをテストできます。

  1. ソース テナントで、Get-MgServicePrincipalSynchronizationJobSchema コマンドを使用してスキーマ ルール ID を取得します。

    $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. ルール ID の変数を初期化します。

    $RuleId = "<RuleId>"
    
  3. New-MgServicePrincipalSynchronizationJobOnDemand コマンドを使用して、オンデマンドでテスト ユーザーをプロビジョニングします。

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

手順 12: プロビジョニング ジョブを開始する

ソース テナントのアイコン。
ソース テナント

  1. これで、プロビジョニング ジョブが構成されたので、ソース テナントで、Start-MgServicePrincipalSynchronizationJob コマンドを使用してプロビジョニング ジョブを開始します。

    Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    

手順 13: プロビジョニングを監視する

ソース テナントのアイコン。
ソース テナント

  1. これで、プロビジョニング ジョブが実行中になったので、Get-MgServicePrincipalSynchronizationJob コマンドを使用して、現在のプロビジョニング サイクルの進行状況と、現在までの統計情報 (ターゲット システムで作成されたユーザーとグループの数など) を監視します。

    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. プロビジョニング ジョブの状態の監視に加えて、Get-MgAuditLogProvisioning コマンドを使用して、プロビジョニング ログを取得し、発生するすべてのプロビジョニング イベントを取得します。 たとえば、特定のユーザーについてクエリを実行し、正常にプロビジョニングされたかどうかを判断します。

    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 : {}
    

トラブルシューティングのヒント

現象 - 不十分な特権エラー

アクションを実行しようとすると、次のようなメッセージが表示されます。

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

原因

サインインしているユーザーに十分な特権がないか、または必要なアクセス許可のいずれかに同意する必要があります。

解決方法

  1. 必要なロールが割り当てられていることを確認します。 この記事に出てきた「前提条件」を参照してください。

  2. Connect-MgGraph でサインインするときは、必要なスコープを指定するようにしてください。 この記事の「手順 1: ターゲット テナントにサインインする」と「手順 4: ソース テナントにサインインする」を参照してください。

現象 - New-MgPolicyCrossTenantAccessPolicyPartner_Create エラー

新しいパートナー構成を作成しようとすると、次のようなエラー メッセージが表示されます。

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

原因

以前の構成からのものと思われる、既に存在する構成またはオブジェクトを作成しようとしている可能性があります。

解決方法

  1. 構文と、正しいテナント ID を使用していることを確認します。

  2. Get-MgPolicyCrossTenantAccessPolicyPartner コマンドを使用して、既存のオブジェクトを一覧表示します。

  3. 既存のオブジェクトがある場合は、Update-MgPolicyCrossTenantAccessPolicyPartner を使用して更新することが必要な場合があります

現象 - Request_MultipleObjectsWithSameKeyValue エラー

ユーザー同期を有効にしようとすると、次のようなメッセージが表示されます。

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

原因

前の構成由来の可能性がある、既に存在するポリシーを作成しようとしている可能性があります。

ソリューション

  1. 構文と、正しいテナント ID を使用していることを確認します。

  2. Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization コマンドを使用して、IsSyncAllowed 設定を一覧表示します。

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
  3. 既存のポリシーがある場合は、Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization コマンドを使用して更新を行って、ユーザー同期を有効にすることが必要なことがあります。

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

次のステップ