Skip to content

Commit 008d6ef

Browse files
authored
Merge pull request #226346 from rolyon/rolyon-mto-graph-explorer-test-steps
[Azure AD MTO] Update configure steps, roles, and permissions
2 parents 737db14 + 841f533 commit 008d6ef

File tree

3 files changed

+107
-71
lines changed

3 files changed

+107
-71
lines changed

articles/active-directory/multi-tenant-organizations/cross-tenant-synchronization-configure-graph.md

Lines changed: 95 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.service: active-directory
88
ms.workload: identity
99
ms.subservice: multi-tenant-organizations
1010
ms.topic: how-to
11-
ms.date: 02/01/2023
11+
ms.date: 02/06/2023
1212
ms.author: rolyon
1313
ms.custom: it-pro
1414

@@ -27,33 +27,62 @@ This article describes the key steps to configure cross-tenant synchronization u
2727

2828
## Prerequisites
2929

30-
- A source [Azure AD tenant](../develop/quickstart-create-new-tenant.md) with a Premium P1 or P2 license
31-
- A target [Azure AD tenant](../develop/quickstart-create-new-tenant.md) with a Premium P1 or P2 license
32-
- An account in the source tenant with the [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure cross-tenant provisioning
33-
- An account in the target tenant with the [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure the cross-tenant synchronization policy
30+
### Source tenant
3431

35-
## Step 1: Sign in to the target tenant and consent to permissions
32+
- Azure AD Premium P1 or P2 license
33+
- [Security Administrator](../roles/permissions-reference.md#security-administrator) role to configure cross-tenant access settings
34+
- [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure cross-tenant synchronization
35+
- [Cloud Application Administrator](../roles/permissions-reference.md#cloud-application-administrator) or [Application Administrator](../roles/permissions-reference.md#application-administrator) role to assign users to a configuration and to delete a configuration
36+
- [Global Administrator](../roles/permissions-reference.md#global-administrator) role to consent to required permissions
3637

37-
![Icon for the target tenant.](./media/common/icon-tenant-target.png)<br/>**Target tenant**
38+
### Target tenant
39+
40+
- Azure AD Premium P1 or P2 license
41+
- [Security Administrator](../roles/permissions-reference.md#security-administrator) role to configure cross-tenant access settings
42+
- [Global Administrator](../roles/permissions-reference.md#global-administrator) role to consent to required permissions
43+
44+
## Step 1: Sign in to tenants and consent to permissions
45+
46+
![Icon for the source tenant.](./media/common/icon-tenant-source.png) ![Icon for the target tenant.](./media/common/icon-tenant-target.png)<br/>**Source and target tenants**
3847

3948
These steps describe how to use Microsoft Graph Explorer (recommended), but you can also use Postman, or another REST API client.
4049

4150
1. Start [Microsoft Graph Explorer tool](https://aka.ms/ge).
4251

43-
1. Sign in to the target tenant.
52+
1. Sign in to the source tenant.
53+
54+
1. Select your profile and then select **Consent to permissions**.
4455

45-
1. Select **Modify permissions**.
56+
:::image type="content" source="./media/cross-tenant-synchronization-configure-graph/graph-explorer-profile.png" alt-text="Screenshot of Graph Explorer profile with Consent to permissions link." lightbox="./media/cross-tenant-synchronization-configure-graph/graph-explorer-profile.png":::
4657

4758
1. Consent to the following required permissions:
4859

4960
- `Policy.Read.All`
5061
- `Policy.ReadWrite.CrossTenantAccess`
62+
- `Application.ReadWrite.All`
63+
- `Directory.ReadWrite.All`
64+
65+
If you see a **Need admin approval** page, you'll need to sign in with a user that has been assigned the Global Administrator role to consent.
66+
67+
1. Start another instance of [Microsoft Graph Explorer tool](https://aka.ms/ge).
68+
69+
1. Sign in to the source tenant.
70+
71+
1. Consent to the following required permissions:
72+
73+
- `Policy.Read.All`
74+
- `Policy.ReadWrite.CrossTenantAccess`
75+
76+
1. Get the tenant ID of the source and target tenants. The example configuration described in this article uses the following tenant IDs:
77+
78+
- Source tenant ID: 3d0f5dec-5d3d-455c-8016-e2af1ae4d31a
79+
- Target tenant ID: 376a1f89-b02f-4a85-8252-2974d1984d14
5180

5281
## Step 2: Enable user synchronization in the target tenant
5382

5483
![Icon for the target tenant.](./media/common/icon-tenant-target.png)<br/>**Target tenant**
5584

56-
1. Use the [Create crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicy-post-partners?view=graph-rest-beta&preserve-view=true) API to create a new partner configuration in a cross-tenant access policy between the target tenant and the source tenant.
85+
1. In the target tenant, use the [Create crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicy-post-partners?view=graph-rest-beta&preserve-view=true) API to create a new partner configuration in a cross-tenant access policy between the target tenant and the source tenant. Use the source tenant ID in the request.
5786

5887
**Request**
5988

@@ -73,6 +102,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
73102
Content-Type: application/json
74103
75104
{
105+
"@odata.context": "https://graph.microsoft.com/beta/$metadata#policies/crossTenantAccessPolicy/partners/$entity",
76106
"tenantId": "3d0f5dec-5d3d-455c-8016-e2af1ae4d31a",
77107
"isServiceProvider": null,
78108
"inboundTrust": null,
@@ -103,6 +133,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
103133
Content-type: application/json
104134
105135
{
136+
"displayName": "Fabrikam",
106137
"userSyncInbound":
107138
{
108139
"isSyncAllowed": true
@@ -120,7 +151,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
120151
121152
![Icon for the target tenant.](./media/common/icon-tenant-target.png)<br/>**Target tenant**
122153
123-
1. Use the [Update crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicyconfigurationpartner-update?view=graph-rest-beta&preserve-view=true) API to automatically redeem invitations and suppress consent prompts for inbound access.
154+
1. In the target tenant, use the [Update crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicyconfigurationpartner-update?view=graph-rest-beta&preserve-view=true) API to automatically redeem invitations and suppress consent prompts for inbound access.
124155
125156
**Request**
126157
@@ -147,9 +178,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
147178
148179
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
149180
150-
1. Sign in to the source tenant.
151-
152-
2. Use the [Create crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicy-post-partners?view=graph-rest-beta&preserve-view=true) API to create a new partner configuration in a cross-tenant access policy between the source tenant and the target tenant.
181+
1. In the source tenant, use the [Create crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicy-post-partners?view=graph-rest-beta&preserve-view=true) API to create a new partner configuration in a cross-tenant access policy between the source tenant and the target tenant. Use the target tenant ID in the request.
153182
154183
**Request**
155184
@@ -169,6 +198,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
169198
Content-Type: application/json
170199
171200
{
201+
"@odata.context": "https://graph.microsoft.com/beta/$metadata#policies/crossTenantAccessPolicy/partners/$entity",
172202
"tenantId": "376a1f89-b02f-4a85-8252-2974d1984d14",
173203
"isServiceProvider": null,
174204
"inboundTrust": null,
@@ -190,7 +220,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
190220
}
191221
```
192222
193-
3. Use the [Update crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicyconfigurationpartner-update?view=graph-rest-beta&preserve-view=true) API to automatically redeem invitations and suppress consent prompts for outbound access.
223+
1. Use the [Update crossTenantAccessPolicyConfigurationPartner](/graph/api/crosstenantaccesspolicyconfigurationpartner-update?view=graph-rest-beta&preserve-view=true) API to automatically redeem invitations and suppress consent prompts for outbound access.
194224
195225
**Request**
196226
@@ -236,6 +266,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
236266
Content-type: application/json
237267
238268
{
269+
"@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.applicationServicePrincipal",
239270
"application": {
240271
"objectId": "{objectId}",
241272
"appId": "{appId}",
@@ -327,47 +358,7 @@ These steps describe how to use Microsoft Graph Explorer (recommended), but you
327358
HTTP/1.1 204 No Content
328359
```
329360
330-
## Step 7: Assign a user to the configuration
331-
332-
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
333-
334-
For cross-tenant synchronization to work, at least one internal user must be assigned to the configuration.
335-
336-
1. In the source tenant, use the [Grant an appRoleAssignment for a service principal](/graph/api/serviceprincipal-post-approleassignedto) API to assign an internal user to the configuration.
337-
338-
**Request**
339-
340-
```http
341-
POST https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/appRoleAssignedTo
342-
Content-type: application/json
343-
344-
{
345-
"appRoleId": "{appRoleId}",
346-
"resourceId": "{servicePrincipalId}",
347-
"principalId": "{principalId}"
348-
}
349-
```
350-
351-
**Response**
352-
353-
```http
354-
HTTP/1.1 201 Created
355-
Content-Type: application/json
356-
{
357-
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('{servicePrincipalId}')/appRoleAssignedTo/$entity",
358-
"id": "{keyId}",
359-
"deletedDateTime": null,
360-
"appRoleId": "{appRoleId}",
361-
"createdDateTime": "2022-11-27T22:23:48.6541804Z",
362-
"principalDisplayName": "User1",
363-
"principalId": "{principalId}",
364-
"principalType": "User",
365-
"resourceDisplayName": "Fabrikam",
366-
"resourceId": "{servicePrincipalId}"
367-
}
368-
```
369-
370-
## Step 8: Create a provisioning job in the source tenant
361+
## Step 7: Create a provisioning job in the source tenant
371362
372363
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
373364
@@ -397,6 +388,7 @@ In the source tenant, to enable provisioning, create a provisioning job.
397388
Content-type: application/json
398389
399390
{
391+
"@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals('{servicePrincipalId}')/synchronization/jobs/$entity",
400392
"id": "{jobId}",
401393
"templateId": "Azure2Azure",
402394
"schedule": {
@@ -431,11 +423,11 @@ In the source tenant, to enable provisioning, create a provisioning job.
431423
}
432424
```
433425
434-
## Step 9: Save your credentials
426+
## Step 8: Save your credentials
435427
436428
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
437429
438-
1. Use the [synchronization: secrets](/graph/api/synchronization-synchronization-secrets?view=graph-rest-beta&preserve-view=true) API to save your credentials.
430+
1. In the source tenant, use the [synchronization: secrets](/graph/api/synchronization-synchronization-secrets?view=graph-rest-beta&preserve-view=true) API to save your credentials.
439431
440432
**Request**
441433
@@ -471,13 +463,53 @@ In the source tenant, to enable provisioning, create a provisioning job.
471463
HTTP/1.1 204 No Content
472464
```
473465
466+
## Step 9: Assign a user to the configuration
467+
468+
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
469+
470+
For cross-tenant synchronization to work, at least one internal user must be assigned to the configuration.
471+
472+
1. In the source tenant, use the [Grant an appRoleAssignment for a service principal](/graph/api/serviceprincipal-post-approleassignedto) API to assign an internal user to the configuration.
473+
474+
**Request**
475+
476+
```http
477+
POST https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/appRoleAssignedTo
478+
Content-type: application/json
479+
480+
{
481+
"appRoleId": "{appRoleId}",
482+
"resourceId": "{servicePrincipalId}",
483+
"principalId": "{principalId}"
484+
}
485+
```
486+
487+
**Response**
488+
489+
```http
490+
HTTP/1.1 201 Created
491+
Content-Type: application/json
492+
{
493+
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('{servicePrincipalId}')/appRoleAssignedTo/$entity",
494+
"id": "{keyId}",
495+
"deletedDateTime": null,
496+
"appRoleId": "{appRoleId}",
497+
"createdDateTime": "2022-11-27T22:23:48.6541804Z",
498+
"principalDisplayName": "User1",
499+
"principalId": "{principalId}",
500+
"principalType": "User",
501+
"resourceDisplayName": "Fabrikam",
502+
"resourceId": "{servicePrincipalId}"
503+
}
504+
```
505+
474506
## Step 10: Test provision on demand
475507
476508
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
477509
478510
Now that you have a configuration, you can test on-demand provisioning with one of your users.
479511
480-
1. Use the [synchronizationJob: provisionOnDemand](/graph/api/synchronization-synchronizationjob-provision-on-demand?view=graph-rest-beta&preserve-view=true) API to provision a test user on demand.
512+
1. In the source tenant, use the [synchronizationJob: provisionOnDemand](/graph/api/synchronization-synchronizationjob-provision-on-demand?view=graph-rest-beta&preserve-view=true) API to provision a test user on demand.
481513
482514
**Request**
483515
@@ -504,7 +536,7 @@ Now that you have a configuration, you can test on-demand provisioning with one
504536
505537
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
506538
507-
1. Now that the provisioning job is configured, use the [Start synchronizationJob](/graph/api/synchronization-synchronizationjob-start?view=graph-rest-beta&preserve-view=true) API to start the provisioning job.
539+
1. Now that the provisioning job is configured, in the source tenant, use the [Start synchronizationJob](/graph/api/synchronization-synchronizationjob-start?view=graph-rest-beta&preserve-view=true) API to start the provisioning job.
508540
509541
**Request**
510542
@@ -523,7 +555,7 @@ Now that you have a configuration, you can test on-demand provisioning with one
523555
524556
![Icon for the source tenant.](./media/common/icon-tenant-source.png)<br/>**Source tenant**
525557
526-
1. Now that the provisioning job is running, use the [Get synchronizationJob](/graph/api/synchronization-synchronizationjob-get?view=graph-rest-beta&preserve-view=true) API to monitor the progress of the current provisioning cycle as well as statistics to date such as the number of users and groups that have been created in the target system.
558+
1. Now that the provisioning job is running, in the source tenant, use the [Get synchronizationJob](/graph/api/synchronization-synchronizationjob-get?view=graph-rest-beta&preserve-view=true) API to monitor the progress of the current provisioning cycle as well as statistics to date such as the number of users and groups that have been created in the target system.
527559
528560
**Request**
529561
@@ -721,12 +753,9 @@ Either the signed-in user doesn't have sufficient privileges, or you need to con
721753
722754
**Solution**
723755
724-
1. Make sure you're assigned the [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role or another Azure AD role with privileges.
756+
1. Make sure you're assigned the required roles. See [Prerequisites](#prerequisites) earlier in this article.
725757
726-
2. In [Microsoft Graph Explorer tool](https://aka.ms/ge), make sure you consent to the required permissions:
727-
728-
- `Policy.Read.All`
729-
- `Policy.ReadWrite.CrossTenantAccess`
758+
2. In [Microsoft Graph Explorer tool](https://aka.ms/ge), make sure you consent to the required permissions. See [Step 1: Sign in to tenants and consent to permissions](#step-1-sign-in-to-tenants-and-consent-to-permissions) earlier in this article.
730759
731760
## Next steps
732761

articles/active-directory/multi-tenant-organizations/cross-tenant-synchronization-configure.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.service: active-directory
88
ms.workload: identity
99
ms.subservice: multi-tenant-organizations
1010
ms.topic: how-to
11-
ms.date: 02/03/2023
11+
ms.date: 02/06/2023
1212
ms.author: rolyon
1313
ms.custom: it-pro
1414

@@ -35,10 +35,17 @@ By the end of this article, you'll be able to:
3535

3636
## Prerequisites
3737

38-
- A source [Azure AD tenant](../develop/quickstart-create-new-tenant.md) with a Premium P1 or P2 license
39-
- A target [Azure AD tenant](../develop/quickstart-create-new-tenant.md) with a Premium P1 or P2 license
40-
- An account in the source tenant with the [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure cross-tenant provisioning
41-
- An account in the target tenant with the [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure the cross-tenant synchronization policy
38+
### Source tenant
39+
40+
- Azure AD Premium P1 or P2 license
41+
- [Security Administrator](../roles/permissions-reference.md#security-administrator) role to configure cross-tenant access settings
42+
- [Hybrid Identity Administrator](../roles/permissions-reference.md#hybrid-identity-administrator) role to configure cross-tenant synchronization
43+
- [Cloud Application Administrator](../roles/permissions-reference.md#cloud-application-administrator) or [Application Administrator](../roles/permissions-reference.md#application-administrator) role to assign users to a configuration and to delete a configuration
44+
45+
### Target tenant
46+
47+
- Azure AD Premium P1 or P2 license
48+
- [Security Administrator](../roles/permissions-reference.md#security-administrator) role to configure cross-tenant access settings
4249

4350
## Step 1: Plan your provisioning deployment
4451

Loading

0 commit comments

Comments
 (0)