Skip to content

Commit 660a6c7

Browse files
committed
Merge branch 'main' into Office-docs-powershell-Release-Branch
2 parents 6036216 + aad8497 commit 660a6c7

File tree

79 files changed

+1534
-338
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1534
-338
lines changed

.openpublishing.redirection.json

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6920,16 +6920,6 @@
69206920
"redirect_url": "/powershell/module/exchange/update-distributiongroupmember",
69216921
"redirect_document_id": false
69226922
},
6923-
{
6924-
"source_path": "exchange/virtual-folder/exchange/Get-DefaultTenantBriefingConfig.md",
6925-
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6926-
"redirect_document_id": false
6927-
},
6928-
{
6929-
"source_path": "exchange/virtual-folder/exchange/Set-DefaultTenantBriefingConfig.md",
6930-
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6931-
"redirect_document_id": false
6932-
},
69336923
{
69346924
"source_path": "teams/teams-ps/teams/New-CsTeamsShiftsConnectionTeamMap.yml",
69356925
"redirect_url": "https://review.learn.microsoft.com/en-us/powershell/module/teams/",

exchange/docs-conceptual/app-only-auth-powershell-v2.md

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: App-only authentication in Exchange Online PowerShell and Security & Comp
33
ms.author: chrisda
44
author: chrisda
55
manager: dansimp
6-
ms.date: 5/3/2023
6+
ms.date: 6/21/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -14,12 +14,12 @@ ms.collection: Strat_EX_Admin
1414
ms.custom:
1515
ms.assetid:
1616
search.appverid: MET150
17-
description: "Learn about using the Exchange Online PowerShell V2 module and V3 module in scripts and other long-running tasks with modern authentication and app-only authentication (also known a certificate based authentication or CBA)."
17+
description: "Learn how to configure app-only authentication (also known as certificate based authentication or CBA) using the Exchange Online PowerShell V3 module in scripts and other long-running tasks."
1818
---
1919

2020
# App-only authentication for unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell
2121

22-
Auditing and reporting scenarios in Microsoft 365 often involve unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell. In the past, unattended sign in required you to store the username and password in a local file or in a secret vault that's accessed at run-time. But, as we all know, storing user credentials locally is not a good security practice.
22+
Auditing and reporting scenarios in Microsoft 365 often involve unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell. In the past, unattended sign in required you to store the username and password in a local file or in a secret vault that's accessed at run-time. But, as we all know, storing user credentials locally isn't a good security practice.
2323

2424
Certificate based authentication (CBA) or app-only authentication as described in this article supports unattended script and automation scenarios by using Azure AD apps and self-signed certificates.
2525

@@ -49,7 +49,7 @@ Certificate based authentication (CBA) or app-only authentication as described i
4949
5050
## How does it work?
5151

52-
The Exchange Online PowerShell module uses the Active Directory Authentication Library to fetch an app-only token using the application Id, tenant Id (organization), and certificate thumbprint. The application object provisioned inside Azure AD has a Directory Role assigned to it, which is returned in the access token. The session's role based access control (RBAC) is configured using the directory role information that's available in the token.
52+
The Exchange Online PowerShell module uses the Active Directory Authentication Library to fetch an app-only token using the application ID, tenant ID (organization), and certificate thumbprint. The application object provisioned inside Azure AD has a Directory Role assigned to it, which is returned in the access token. The session's role based access control (RBAC) is configured using the directory role information that's available in the token.
5353

5454
## Connection examples
5555

@@ -60,9 +60,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
6060
>
6161
> The following connection commands have many of the same options available as described in [Connect to Exchange Online PowerShell](connect-to-exchange-online-powershell.md) and [Connect to Security & Compliance PowerShell](connect-to-scc-powershell.md). For example:
6262
>
63-
> - You can use REST API cmdlets or original remote PowerShell cmdlets. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
64-
>
65-
> Remote PowerShell support in Exchange Online PowerShell will be deprecated. For more information, see [Announcing Deprecation of Remote PowerShell (RPS) Protocol in Exchange Online PowerShell](https://aka.ms/RPSDeprecation).
63+
> Remote PowerShell support in Exchange Online PowerShell will be deprecated. For more information, see [Announcing Deprecation of Remote PowerShell (RPS) Protocol in Exchange Online PowerShell](https://aka.ms/RPSDeprecation).
6664
>
6765
> - Microsoft 365 GCC High or Microsoft 365 DoD environments require the following additional parameters and values:
6866
> - **Connect-ExchangeOnline in GCC High**: `-ExchangeEnvironmentName O365USGovGCCHigh`.
@@ -93,7 +91,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
9391
9492
- **Connect using a certificate object**:
9593
96-
The certificate does not need to be installed on the computer where you're running the command. You can store the certificate object remotely. The certificate is fetched when the script is run.
94+
The certificate doesn't need to be installed on the computer where you're running the command. You can store the certificate object remotely. The certificate is fetched when the script is run.
9795
9896
- <u>Exchange Online PowerShell</u>:
9997
@@ -126,7 +124,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
126124
127125
## Set up app-only authentication
128126
129-
An initial onboarding is required for authentication using application objects. Application and service principal are used interchangeably, but an application is like a class object while a service principal is like an instance of the class. You can learn more about this at [Application and service principal objects in Azure Active Directory](/azure/active-directory/develop/app-objects-and-service-principals).
127+
An initial onboarding is required for authentication using application objects. Application and service principal are used interchangeably, but an application is like a class object while a service principal is like an instance of the class. For more information, see [Application and service principal objects in Azure Active Directory](/azure/active-directory/develop/app-objects-and-service-principals).
130128
131129
For a detailed visual flow about creating applications in Azure AD, see <https://aka.ms/azuread-app>.
132130
@@ -140,9 +138,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
140138
141139
- For app-only authentication in Azure AD, you typically use a certificate to request access. Anyone who has the certificate and its private key can use the app, and the permissions granted to the app.
142140
143-
- Create and configure a self-signed X.509 certificate, which will be used to authenticate your Application against Azure AD, while requesting the app-only access token.
141+
- Create and configure a self-signed X.509 certificate, which is used to authenticate your Application against Azure AD, while requesting the app-only access token.
144142
145-
- This is similar to generating a password for user accounts. The certificate can be self-signed as well. See the [Appendix](#step-3-generate-a-self-signed-certificate) section later in this article for instructions for generating certificates in PowerShell.
143+
- This procedure is similar to generating a password for user accounts. The certificate can be self-signed as well. See the [Appendix](#step-3-generate-a-self-signed-certificate) section later in this article for instructions for generating certificates in PowerShell.
146144
147145
> [!NOTE]
148146
> Cryptography: Next Generation (CNG) certificates are not supported for app-only authentication with Exchange. CNG certificates are created by default in modern Windows versions. You must use a certificate from a CSP key provider. The [Appendix](#step-3-generate-a-self-signed-certificate) section covers two supported methods to create a CSP certificate.
@@ -166,7 +164,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
166164
167165
Or, to go directly to the **App registrations** page, use <https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade>.
168166
169-
3. On the **App registrations** page, click **New registration**.
167+
3. On the **App registrations** page, select **New registration**.
170168
171169
![Select New registration on the App registrations page.](media/exo-app-only-auth-new-app-registration.png)
172170
@@ -186,7 +184,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
186184
187185
![Register an application.](media/exo-app-only-auth-register-app.png)
188186
189-
When you're finished, click **Register**.
187+
When you're finished on the **App registrations** page, select **Register**.
190188
191189
4. Leave the app page that you return to open. You'll use it in the next step.
192190
@@ -234,9 +232,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
234232
> ],
235233
> ```
236234
237-
When you're finished, click **Save**.
235+
When you're finished on the **Manifest** page, select **Save**.
238236
239-
3. Still on the **Manifest** page, under **Management**, select **API permissions**.
237+
3. Still on the **Manifest** page, select **API permissions** under **Management**.
240238
241239
![Select API permissions on the application properties page.](media/exo-app-only-auth-select-api-permissions.png)
242240
@@ -251,13 +249,13 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
251249
252250
![Original incorrect API permissions.](media/exo-app-only-auth-original-permissions.png)
253251
254-
Select **Grant admin consent for \<Organization\>**, read the confirmation dialog that opens, and then click **Yes**.
252+
Select **Grant admin consent for \<Organization\>**, read the confirmation dialog that opens, and then select **Yes**.
255253
256254
The **Status** value should now be **Granted for \<Organization\>**.
257255
258256
![Admin consent granted.](media/exo-app-only-auth-admin-consent-granted.png)
259257
260-
4. Close the current **API permissions** page (not the browser tab) to return to the **App registrations** page. You'll use it in an upcoming step.
258+
4. Close the current **API permissions** page (not the browser tab) to return to the **App registrations** page. You use the **App registrations** page in an upcoming step.
261259
262260
### Step 3: Generate a self-signed certificate
263261
@@ -296,15 +294,15 @@ After you register the certificate with your application, you can use the privat
296294

297295
![Select Certificates & Secrets on the application properties page.](media/exo-app-only-auth-select-certificates-and-secrets.png)
298296

299-
3. On the **Certificates & secrets** page that opens, click **Upload certificate**.
297+
3. On the **Certificates & secrets** page that opens, select **Upload certificate**.
300298

301299
![Select Upload certificate on the Certificates & secrets page.](media/exo-app-only-auth-select-upload-certificate.png)
302300

303301
In the dialog that opens, browse to the self-signed certificate (`.cer` file) that you created in [Step 3](#step-3-generate-a-self-signed-certificate).
304302

305-
![Browse to the certificate and then click Add.](media/exo-app-only-auth-upload-certificate-dialog.png)
303+
![Browse to the certificate and then select Add.](media/exo-app-only-auth-upload-certificate-dialog.png)
306304

307-
When you're finished, click **Add**.
305+
When you're finished, select **Add**.
308306

309307
The certificate is now shown in the **Certificates** section.
310308

@@ -328,8 +326,8 @@ For more information about the URL syntax, see [Request the permissions from a d
328326

329327
You have two options:
330328

331-
- **Assign Azure AD roles to the application**: This method is supported in Exchange Online PowerShell and Security & Compliance PowerShell.
332-
- **Assign custom Exchange Online role groups to the application using service principals**: This method is supported only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
329+
- **Assign Azure AD roles to the application**
330+
- **Assign custom role groups to the application using service principals**: This method is supported only when you connect to Exchange Online PowerShell or Security & Compliance PowerShell in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module). Security & Compliance PowerShell supports REST API mode in v3.2.0 or later.
333331

334332
> [!NOTE]
335333
> You can also combine both methods to assign permissions. For example, you can use Azure AD roles for the "Exchange Recipient Administrator" role and also assign your custom RBAC role to extend the permissions.
@@ -379,7 +377,7 @@ For general instructions about assigning roles in Azure AD, see [View and assign
379377

380378
![Find and select a supported Security & Compliance PowerShell role by clicking on the role name.](media/exo-app-only-auth-find-and-select-supported-role-scc.png)
381379

382-
3. On the **Assignments** page that opens, click **Add assignments**.
380+
3. On the **Assignments** page that opens, select **Add assignments**.
383381

384382
- **Exchange Online PowerShell**:
385383

@@ -393,7 +391,7 @@ For general instructions about assigning roles in Azure AD, see [View and assign
393391

394392
![Find and select your app on the Add assignments flyout.](media/exo-app-only-auth-find-add-select-app-for-assignment.png)
395393

396-
When you're finished, click **Add**.
394+
When you're finished in the **Add assignments** flyout, select **Add**.
397395

398396
5. Back on the **Assignments** page, verify that the role has been assigned to the app.
399397

@@ -405,14 +403,14 @@ For general instructions about assigning roles in Azure AD, see [View and assign
405403

406404
![The role assignments page after to added the app to the role for Security & Compliance PowerShell.](media/exo-app-only-auth-app-assigned-to-role-scc.png)
407405

408-
#### Assign custom Exchange Online role groups to the application using service principals
406+
#### Assign custom role groups to the application using service principals
409407

410408
> [!NOTE]
411-
> You need to connect to Exchange Online PowerShell or Security & Compliance PowerShell _before_ completing steps to create a new service principal. Creating a new service principal without connecting to PowerShell won't work (your Azure App ID and Object ID is needed to create the new service principal).
409+
> You need to connect to Exchange Online PowerShell or Security & Compliance PowerShell _before_ completing steps to create a new service principal. Creating a new service principal without connecting to PowerShell won't work (your Azure App ID and Object ID are needed to create the new service principal).
412410
>
413-
> This method is supported only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
411+
> This method is supported only when you connect to Exchange Online PowerShell or Security & Compliance PowerShell in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module). Security & Compliance PowerShell supports REST API mode in v3.2.0 or later.
414412
415-
For information about creating custom role groups, see [Create role groups](/exchange/permissions-exo/role-groups#create-role-groups). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
413+
For information about creating custom role groups, see [Create role groups in Exchange Online](/exchange/permissions-exo/role-groups#create-role-groups) and [Create Email & collaboration role groups in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions#create-email--collaboration-role-groups-in-the-microsoft-365-defender-portal). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
416414

417415
To assign custom role groups to the application using service principals, do the following steps:
418416

exchange/docs-conceptual/connect-exo-powershell-managed-identity.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Use Azure managed identities to connect to Exchange Online PowerShell
33
ms.author: chrisda
44
author: chrisda
55
manager: dansimp
6-
ms.date: 5/10/2023
6+
ms.date: 6/21/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -268,7 +268,7 @@ New-AzAutomationModule -ResourceGroupName "<ResourceGroupName>" -AutomationAccou
268268

269269
- \<ResourceGroupName\> is the name of the resource group that's already assigned to the Automation account.
270270
- \<AutomationAccountName\> is the name of the Automation account.
271-
- \<LatestModuleVersion\> is the current version of the ExchangeOnlineManagement module. To see the latest GA (non-Preview) version of the module, run the following command in Windows PowerShell: `Find-Module ExchangeOnlineManagement`. To see the latest Preview release, run the following command: `Find-Module ExchangeOnlineManagement -AllowPrerelease`.
271+
- \<LatestModuleVersion\> is the current version of the ExchangeOnlineManagement module. To see the latest General Availability (GA; non-Preview) version of the module, run the following command in Windows PowerShell: `Find-Module ExchangeOnlineManagement`. To see the latest Preview release, run the following command: `Find-Module ExchangeOnlineManagement -AllowPrerelease`.
272272
- Currently, the PowerShell procedures don't give you a choice for the runtime version (it's 5.1).
273273

274274
For example:

exchange/docs-conceptual/connect-to-scc-powershell.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Connect to Security & Compliance PowerShell
33
author: chrisda
44
manager: dansimp
5-
ms.date:
5+
ms.date: 6/21/2023
66
ms.audience: Admin
77
audience: Admin
88
ms.topic: article
@@ -35,7 +35,7 @@ To use the older Exchange Online Remote PowerShell Module (the V1 module) to con
3535

3636
> [!NOTE]
3737
>
38-
> If you're using version 3.2.0-Preview4 or later of the module, and you don't use the _UseRPSSession_ switch in the **Connect-IPPSSession** command, you have access to REST API cmdlets _only_. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
38+
> If you're using version 3.2.0 or later of the module, and you don't use the _UseRPSSession_ switch in the **Connect-IPPSSession** command, you have access to REST API cmdlets _only_. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
3939
4040
- After you connect, the cmdlets and parameters that you have or don't have access to is controlled by role-based access control (RBAC). For more information, see [Permissions in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions) and [Permissions in the Microsoft Purview compliance portal](/microsoft-365/compliance/microsoft-365-compliance-center-permissions).
4141

@@ -65,7 +65,7 @@ For detailed syntax and parameter information, see [Connect-IPPSSession](/powers
6565

6666
- _\<UPN\>_ is your account in user principal name format (for example, `[email protected]`).
6767

68-
- In v3.2.0-Preview4 or later of the module, if you don't use the _UseRPSSession_ switch in the **Connect-IPPSSession** command, you connect in REST API mode. To connect in remote PowerShell mode, use the _UseRPSSession_ switch. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
68+
- In v3.2.0 or later of the module, if you don't use the _UseRPSSession_ switch in the **Connect-IPPSSession** command, you connect in REST API mode. To connect in remote PowerShell mode, use the _UseRPSSession_ switch. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
6969

7070
- The required _ConnectionUri_ and _AzureADAuthorizationEndpointUri_ values depend on the nature of your Microsoft 365 organization. Common values are described in the following table:
7171

0 commit comments

Comments
 (0)