Skip to content

Commit 61e7a03

Browse files
authored
Merge pull request #173711 from MicrosoftDocs/master
9/27 PM Publish
2 parents 1002952 + bb084c9 commit 61e7a03

File tree

170 files changed

+2254
-744
lines changed

Some content is hidden

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

170 files changed

+2254
-744
lines changed

.openpublishing.redirection.active-directory.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@
99
"source_path_from_root": "/articles/active-directory/reports-monitoring/howto-remediate-users-flagged-for-risk.md",
1010
"redirect_url": "/azure/active-directory/identity-protection/howto-identity-protection-remediate-unblock",
1111
"redirect_document_id": false
12+
},
13+
{
14+
"source_path_from_root": "/articles/active-directory/develop/registration-config-multi-tenant-application-add-to-gallery-how-to.md",
15+
"redirect_url": "/azure/active-directory/develop/v2-howto-app-gallery-listing",
16+
"redirect_document_id": false
17+
},
18+
{
19+
"source_path_from_root": "/articles/active-directory/develop/active-directory-v2-registration-portal.md",
20+
"redirect_url": "/azure/active-directory/develop/quickstart-register-app",
21+
"redirect_document_id": false
1222
}
1323
]
1424
}

.openpublishing.redirection.synapse-analytics.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
"source_path_from_root": "/articles/synapse-analytics/sql-data-warehouse/guidance-for-loading-data.md",
4040
"redirect_url": "/azure/synapse-analytics/sql/data-loading-best-practices",
4141
"redirect_document_id": false
42+
},
43+
{
44+
"source_path_from_root": "/articles/synapse-analytics/sql/develop-best-practices.md",
45+
"redirect_url": "/azure/synapse-analytics/sql/best-practices-dedicated-sql-pool",
46+
"redirect_document_id": false
4247
}
4348
]
4449
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---
2+
title: Enable accidental deletions prevention in Application Provisioning in Azure Active Directory
3+
description: Enable accidental deletions prevention in Application Provisioning in Azure Active Directory.
4+
services: active-directory
5+
author: kenwith
6+
manager: mtillman
7+
ms.service: active-directory
8+
ms.subservice: app-provisioning
9+
ms.topic: how-to
10+
ms.workload: identity
11+
ms.date: 09/27/2021
12+
ms.author: kenwith
13+
ms.reviewer: arvinh
14+
---
15+
16+
# Enable accidental deletions prevention in the Azure AD provisioning service (Preview)
17+
18+
The Azure AD provisioning service includes a feature to help avoid accidental deletions. This feature ensures that users are not disabled or deleted in an application unexpectedly.
19+
20+
The feature lets you specify a deletion threshold, above which an admin
21+
needs to explicitly choose to allow the deletions to be processed.
22+
23+
> [!NOTE]
24+
> Accidental deletions are not supported for our Workday / SuccessFactors integrations. It is also not supported for changes in scoping (e.g. changing a scoping filter or changing from "sync all users and groups" to "sync assigned users and groups". Until the accidental deletions prevention feature is fully released, you will need to access the Azure portal using this URL: https://portal.azure.com/?Microsoft_AAD_IAM_userProvisioningDeleteThreshold=true
25+
26+
27+
## Configure accidental deletion prevention
28+
To enable accidental deletion prevention:
29+
1. In the Azure portal, select **Azure Active Directory**.
30+
2. Select **Enterprise applications** and then select your app.
31+
3. Select **Provisioning** and then on the provisioning page select **Edit provisioning**.
32+
4. Under **Settings**, select the **Prevent accidental deletions** checkbox and specify a deletion
33+
threshold. Also, be sure the notification email address is completed. If the deletion threshold his met and email will be sent.
34+
5. Select **Save**, to save the changes.
35+
36+
When the deletion threshold is met, the job will go into quarantine and a notification email will be sent. The quarantined job can then be allowed or rejected. To learn more about quarantine behavior, see [Application provisioning in quarantine status](application-provisioning-quarantine-status.md).
37+
38+
## Known limitations
39+
There are two key limitations to be aware of and are actively working to address:
40+
- HR-driven provisioning from Workday and SuccessFactors do not support the accidental deletions feature.
41+
- Changes to your provisioning configuration (e.g. changing scoping) is not supported by the accidental deletions feature.
42+
43+
## Recovering from an accidental deletion
44+
If you encounter an accidental deletion you will see it on the provisioning status page. It will say **Provisioning has been quarantined. See quarantine details for more information.**.
45+
46+
You can click either **Allow deletes** or **View provisioning logs**.
47+
48+
### Allowing deletions
49+
50+
The **Allow deletes** action will delete the objects that triggered the accidental delete threshold. Use the following procedure to accept the deletes.
51+
52+
1. Select **Allow deletes**.
53+
2. Click **Yes** on the confirmation to allow the deletions.
54+
3. You will see confirmation that the deletions were accepted and the status will return to healthy with the next cycle.
55+
56+
### Rejecting deletions
57+
58+
If you do not want to allow the deletions, you need to do the following:
59+
- Investigate the source of the deletions. You can use the provisioning logs for details.
60+
- Prevent the deletion by assigning the user / group to the app again, restoring the user / group, or updating your provisioning configuration.
61+
- Once you've made the necessary changes to prevent the user / group from being deleted, restart provisioning. Please do not restart provisioning until you've made the necessary changes to prevent the users / groups from being deleted.
62+
63+
64+
### Test deletion prevention
65+
You can test the feature by triggering disable / deletion events by setting the threshold to a low number, for example 3, and then changing scoping filters, un-assigning users, and deleting users from the directory (see common scenarios in next section).
66+
67+
Let the provisioning job run (20 – 40 mins) and navigate back to the provisioning page. You will see the provisioning job in quarantine and can choose to allow the deletions or review the provisioning logs to understand why the deletions occurred.
68+
69+
## Common de-provisioning scenarios to test
70+
- Delete a user / put them into the recycle bin.
71+
- Block sign in for a user.
72+
- Unassign a user or group from the application.
73+
- Remove a user from a group that’s providing them access to the app.
74+
75+
To learn more about de-provisioning scenarios, see [How Application Provisioning Works](how-provisioning-works.md#de-provisioning).
76+
77+
## Frequently Asked Questions
78+
79+
### What scenarios count toward the deletion threshold?
80+
When a user is set to be removed from the target application, it will be counted against the
81+
deletion threshold. Scenarios that could lead to a user being removed from the target
82+
application could include: unassigning the user from the application, changing the sync scope
83+
from “sync all” to “sync assigned” to soft / hard deleting a user in the directory. Groups
84+
evaluated for deletion count towards the deletion threshold. In addition to deletions, the same functionality also works for disables.
85+
86+
### What is the interval that the deletion threshold is evaluated on?
87+
It is evaluated each cycle. If the number of deletions does not exceed the threshold during a
88+
single cycle, the “circuit breaker” won’t be triggered. If multiple cycles are needed to reach a
89+
steady state, the deletion threshold will be evaluated per cycle.
90+
91+
### How are these deletion events logged?
92+
You can find users that should be disabled / deleted but haven’t due to the deletion threshold.
93+
Navigation to **Provisioning logs** and then filter **Action** with *StagedAction* or *StagedDelete*.
94+
95+
96+
## Next steps
97+
98+
- [How application provisioning works](how-provisioning-works.md)
99+
- [Plan an application provisioning deployment](plan-auto-user-provisioning.md)

articles/active-directory/app-provisioning/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@
6060
href: ../reports-monitoring/concept-provisioning-logs.md?context=%2fazure%2factive-directory%2fapp-provisioning%2fcontext%2fapp-provisioning-context
6161
- name: Automate configuration using MS Graph
6262
href: application-provisioning-configuration-api.md
63+
- name: Enable accidental deletions prevention
64+
href: accidental-deletions.md
6365
- name: Troubleshoot application provisioning
6466
items:
6567
- name: Known issues

articles/active-directory/develop/active-directory-v2-registration-portal.md

Lines changed: 0 additions & 55 deletions
This file was deleted.

articles/active-directory/develop/msal-logging-dotnet.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ ms.custom: aaddev
2222

2323
## Configure logging in MSAL.NET
2424

25-
In MSAL 4.x, logging is set per application at app creation using the `.WithLogging` builder modifier. This method takes optional parameters:
25+
In MSAL logging is set at application creation using the `.WithLogging` builder modifier. This method takes optional parameters:
2626

2727
- `Level` enables you to decide which level of logging you want. Setting it to Errors will only get errors
28-
- `PiiLoggingEnabled` enables you to log personal and organizational data if set to true. By default this is set to false, so that your application does not log personal data.
29-
- `LogCallback` is set to a delegate that does the logging. If `PiiLoggingEnabled` is true, this method will receive the messages twice: once with the `containsPii` parameter equals false and the message without personal data, and a second time with the `containsPii` parameter equals to true and the message might contain personal data. In some cases (when the message does not contain personal data), the message will be the same.
28+
- `PiiLoggingEnabled` enables you to log personal and organizational data (PII) if set to true. By default this is set to false, so that your application does not log personal data.
29+
- `LogCallback` is set to a delegate that does the logging. If `PiiLoggingEnabled` is true, this method will receive messages that can have PII, in which case the `containsPii` flag will be set to true.
3030
- `DefaultLoggingEnabled` enables the default logging for the platform. By default it's false. If you set it to true it uses Event Tracing in Desktop/UWP applications, NSLog on iOS and logcat on Android.
3131

3232
```csharp

articles/active-directory/develop/registration-config-multi-tenant-application-add-to-gallery-how-to.md

Lines changed: 0 additions & 47 deletions
This file was deleted.

articles/active-directory/develop/scenario-spa-call-api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ms.service: active-directory
1010
ms.subservice: develop
1111
ms.topic: conceptual
1212
ms.workload: identity
13-
ms.date: 05/06/2019
13+
ms.date: 09/27/2021
1414
ms.author: ryanwi
1515
ms.custom: aaddev
1616
#Customer intent: As an application developer, I want to know how to write a single-page application by using the Microsoft identity platform.
@@ -50,4 +50,4 @@ The MSAL Angular wrapper takes advantage of the HTTP interceptor to automaticall
5050
5151
## Next steps
5252
53-
Move on to the next article in this scenario, [Move to production](scenario-spa-production.md).
53+
Move on to the next article in this scenario, [Move to production](scenario-spa-production.md).

0 commit comments

Comments
 (0)