Skip to content

Commit 49a38e0

Browse files
authored
Merge pull request #222121 from MicrosoftDocs/main
Publish to Live, Wednesday 4AM PST, 12/21
2 parents c62c7e1 + 82eb8f3 commit 49a38e0

File tree

86 files changed

+1356
-478
lines changed

Some content is hidden

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

86 files changed

+1356
-478
lines changed

articles/active-directory/develop/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,8 @@
812812
href: reply-url.md
813813
- name: Validation differences by supported account types
814814
href: supported-accounts-validation.md
815+
- name: Configured permissions limits troubleshooting
816+
href: troubleshoot-required-resource-access-limits.md
815817
- name: Microsoft auth libraries by app type
816818
displayName: MSAL, auth client library, SDK, token validation
817819
href: reference-v2-libraries.md
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
---
2+
title: Troubleshooting the configured permissions limits
3+
description: Learn why some apps may exceed the limits on configured permissions and how to address this issue.
4+
author: Jackson-Woods
5+
ms.author: jawoods
6+
manager: CelesteDG
7+
ms.date: 12/08/2022
8+
ms.topic: reference
9+
ms.subservice: develop
10+
ms.custom: aaddev
11+
ms.service: active-directory
12+
ms.reviewer: phsignor
13+
---
14+
15+
# Troubleshooting the configured permissions limits
16+
17+
The `RequiredResourceAccess` collection (RRA) on an application object contains all the configured API permissions that an app requires for its default consent request. This collection has various limits depending on which types of identities the app supports, For more information on the limits for supported account types, see [Validation differences by supported account types](supported-accounts-validation.md).
18+
19+
The limits on maximum permissions were updated in May 2022, so some apps may have more permissions in their RRA than are now allowed. In addition, apps that change their supported account types after configuring permissions may exceed the limits of the new setting. When apps exceed the configured permissions limit, no new permissions may be added until the number of permissions in the `RequiredResourceAccess` collection is brought back under the limits.
20+
21+
This document offers additional information and troubleshooting steps to resolve this issue.
22+
23+
## Identifying when an app has exceeded the `RequiredResourceAccess` limits
24+
25+
In general, all applications with more than 400 permissions have exceeded the configuration limits. Apps may also be subject to lower limits if they support sign-in for personal Microsoft accounts (MSA). An app that has exceeded the permission limits will receive the following error when trying to add more permissions in the Azure portal:
26+
27+
> `Failed to save permissions for <AppName>. This configuration exceeds the global application object limit. Remove some items and retry your request.`
28+
29+
## Resolution steps
30+
31+
If the application isn't needed anymore, the first option you should consider is to delete the app registration entirely. (You can restore recently deleted applications, in case you discover soon afterwards that it was still needed.)
32+
33+
If you still need the application or are unsure, the following steps will help you resolve this issue:
34+
35+
1. **Remove duplicate permissions.** In some cases, the same permission is listed multiple times. Review the required permissions and remove permissions that are listed two or more times. See the related PowerShell script on the [additional resources](#additional-resources) section of this article.
36+
2. **Remove unused permissions.** Review the permissions required by the application and compare them to what the application or service does. Remove permissions that are configured in the app registration, but which the application or service doesn’t require. For more information on how to review permissions, see [Review application permissions](../manage-apps/manage-application-permissions.md)
37+
3. **Remove redundant permissions.** In many APIs, including Microsoft Graph, some permissions aren't necessary when other more privileged permissions are included. For example, the Microsoft Graph permission User.Read.All (read all users) isn't needed when an application also has User.ReadWrite.All (read, create and update all users). To learn more about Microsoft Graph permissions, see [Microsoft Graph permissions reference](/graph/permissions-reference).
38+
4. **Use multiple app registrations.** If a single app or service requires more than 400 permissions in the required permissions list, the app will need to be configured to use two (or more) different app registrations, each one with 400 or fewer permissions configured on the app registration.
39+
40+
## Frequently asked questions (FAQ)
41+
42+
### *Why has Microsoft revised the limit on total permissions?*
43+
44+
This limit is important for two reasons:
45+
46+
- To help prevent an app from being configured to require more permissions than can be granted during consent.
47+
- To keep the total size of the app registration within the limits required for stability and performance of the underlying storage platform.
48+
49+
### *What will happen if I don’t do anything?*
50+
51+
If your app exceeds the total permissions limit, you'll no longer be able to increase the total number of required permissions for your application.
52+
53+
### *Does the limit change how many permissions my application can be granted?*
54+
55+
No. This limit affects only the list of requested API permissions configured on the app registration. This is different from the list of permissions that have been granted to your application.
56+
57+
Even if it isn't listed in the required API permissions list, a delegated permission can still be requested dynamically by an application. Both delegated permissions and app roles (application permissions) can also be granted directly, using Microsoft Graph API or Microsoft Graph PowerShell.
58+
59+
### *Can the limit be raised for my application?*
60+
61+
No, the limit can't be raised for individual applications or organizations.
62+
63+
### *Are there other limits on the list of required API permissions?*
64+
65+
Yes. The limits can vary depending on the supported account types for the app. Apps that support personal Microsoft Accounts for sign-in (for example, Outlook.com, Hotmail.com, Xbox Live) generally have lower limits. See [Validation differences by supported account types](supported-accounts-validation.md) to learn more.
66+
67+
## Additional resources
68+
69+
Use the following PowerShell script to remove any duplicate permissions from your app registrations.
70+
71+
```PowerShell
72+
<#
73+
.SYNOPSIS
74+
Remove duplicate required API permissions from an app registration's required API permission list.
75+
.DESCRIPTION
76+
This script ensures all API permissions listed in a Microsoft identity platform's app registration are only listed once,
77+
removing any duplicates it finds. This script requires the Microsoft.Graph.Applications PowerShell module.
78+
.EXAMPLE
79+
Get-MgApplication -Filter "appId eq '46c22aca-bcdd-467d-a837-bd544c09b8b4'" | .\Deduplicate_RequiredResourceAccess.ps1"
80+
.EXAMPLE
81+
$apps = Get-MgApplication -Filter "startswith(displayName,'Test_app')"
82+
$apps | .\Deduplicate_RequiredResourceAccess.ps1
83+
#>
84+
85+
#Requires -Modules Microsoft.Graph.Applications
86+
87+
[CmdletBinding()]
88+
param(
89+
[Parameter(ValueFromPipeline = $true)]
90+
$App
91+
)
92+
93+
begin {
94+
$context = Get-MgContext
95+
if (-not $context) {
96+
throw ("You must connect to Microsoft Graph PowerShell first, with sufficient permissions " +
97+
"to manage Application objects. For example: Connect-MgGraph -Scopes ""Application.ReadWrite.All""")
98+
}
99+
}
100+
101+
process {
102+
103+
# Build the unique list of required API permissions for each required API
104+
$originalCount = 0
105+
$tempRras = @{}
106+
foreach ($rra in $App.RequiredResourceAccess) {
107+
if (-not $tempRras.ContainsKey($rra.ResourceAppId)) {
108+
$tempRras[$rra.ResourceAppId] = @{"Scope" = @{}; "Role" = @{}};
109+
}
110+
foreach ($ra in $rra.ResourceAccess) {
111+
if ($tempRras[$rra.ResourceAppId][$ra.Type].ContainsKey($ra.Id)) {
112+
# Skip duplicate required API permission
113+
} else {
114+
$tempRras[$rra.ResourceAppId][$ra.Type][$ra.Id] = $true
115+
}
116+
$originalCount++
117+
}
118+
}
119+
120+
# Now that we have the unique set of required API permissions, iterate over all the keys to build the final requiredResourceAccess structure
121+
$deduplicatedCount = 0
122+
$finalRras = @($tempRras.Keys) | ForEach-Object {
123+
$resourceAppId = $_
124+
@{
125+
"resourceAppId" = $resourceAppId
126+
"resourceAccess" = @(@("Scope", "Role") | ForEach-Object {
127+
$type = $_
128+
$tempRras[$resourceAppId][$type].Keys | ForEach-Object {
129+
$deduplicatedCount++;
130+
@{"type" = $type; "id" = $_}
131+
}
132+
})
133+
}
134+
}
135+
136+
$countDifference = $originalCount - $deduplicatedCount
137+
if ($countDifference) {
138+
Write-Host "Removing $($countDifference) duplicate entries in RequiredResourceAccess for '$($App.DisplayName)' (AppId: $($App.AppId))"
139+
Update-MgApplication -ApplicationId $App.Id -RequiredResourceAccess $finalRras
140+
} else {
141+
Write-Host "No updates necessary for '$($App.DisplayName)' (AppId: $($App.AppId))"
142+
}
143+
}
144+
```
145+
146+
## Learn more
147+
148+
- Learn about API permissions and the Microsoft identity platform: [Overview of permissions and consent in the Microsoft identity platform](permissions-consent-overview.md)
149+
- Understand the permissions available for Microsoft Graph: [Microsoft Graph permissions reference](/graph/permissions-reference)
150+
- Review the limitations to application configurations: [Validation differences by supported account types](supported-accounts-validation.md)

articles/aks/azure-ad-rbac.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ AKS_ID=$(az aks show \
7070
Create the first example group in Azure AD for the application developers using the [az ad group create][az-ad-group-create] command. The following example creates a group named *appdev*:
7171

7272
```azurecli-interactive
73-
APPDEV_ID=$(az ad group create --display-name appdev --mail-nickname appdev --query objectId -o tsv)
73+
APPDEV_ID=$(az ad group create --display-name appdev --mail-nickname appdev --query Id -o tsv)
7474
```
7575

7676
Now, create an Azure role assignment for the *appdev* group using the [az role assignment create][az-role-assignment-create] command. This assignment lets any member of the group use `kubectl` to interact with an AKS cluster by granting them the *Azure Kubernetes Service Cluster User Role*.

articles/aks/use-multiple-node-pools.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ The following example output shows that *mynodepool* has been successfully creat
124124

125125
The ARM64 processor provides low power compute for your Kubernetes workloads. To create an ARM64 node pool, you will need to choose a [Dpsv5][arm-sku-vm1], [Dplsv5][arm-sku-vm2] or [Epsv5][arm-sku-vm3] series Virtual Machine.
126126

127+
#### Limitations
128+
129+
* ARM64 node pools are not supported on Defender-enabled clusters
130+
* FIPS-enabled node pools are not supported with ARM64 SKUs
131+
127132
Use `az aks nodepool add` command to add an ARM64 node pool.
128133

129134
```azurecli
@@ -132,7 +137,7 @@ az aks nodepool add \
132137
--cluster-name myAKSCluster \
133138
--name armpool \
134139
--node-count 3 \
135-
--node-vm-size Standard_Dpds_v5
140+
--node-vm-size Standard_D2pds_v5
136141
```
137142

138143
### Add a Mariner node pool

articles/application-gateway/mutual-authentication-overview.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: This article is an overview of mutual authentication on Application
44
services: application-gateway
55
author: greg-lindsay
66
ms.service: application-gateway
7-
ms.date: 11/03/2022
7+
ms.date: 12/21/2022
88
ms.topic: conceptual
99
ms.author: greglin
1010

@@ -111,16 +111,17 @@ A list of all Azure CLI references for client authentication configuration on Ap
111111
# [Azure portal](#tab/portal)
112112
Azure portal support is currently not available.
113113

114-
To verify OCSP revocation status has been evaluated, [access logs](./application-gateway-diagnostics.md#access-log) will contain a property called "sslClientVerify", with the status of the OCSP response.
114+
---
115+
116+
To verify OCSP revocation status has been evaluated for the client request, [access logs](./application-gateway-diagnostics.md#access-log) will contain a property called "sslClientVerify", with the status of the OCSP response.
115117

116118
It is critical that the OCSP responder is highly available and network connectivity between Application Gateway and the responder is possible. In the event Application Gateway is unable to resolve the fully qualified domain name (FQDN) of the defined responder or network connectivity is blocked to/from the responder, certificate revocation status will fail and Application Gateway will return a 400 HTTP response to the requesting client.
117119

118120
Note: OCSP checks are validated via local cache based on the nextUpdate time defined by a previous OCSP response. If the OCSP cache has not been populated from a previous request, the first response may fail. Upon retry of the client, the response should be found in the cache and the request will be processed as expected.
119121

120-
Limitations
122+
## Notes
121123
- Revocation check via CRL is not supported
122124
- Client revocation check was introduced in API version 2022-05-01
123-
- Azure portal support is not available
124125

125126
## Next steps
126127

articles/azure-monitor/agents/azure-monitor-agent-data-collection-endpoint.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Define network settings and enable network isolation for Azure Moni
44
ms.topic: conceptual
55
author: shseth
66
ms.author: shseth
7-
ms.date: 11/01/2022
7+
ms.date: 12/19/2022
88
ms.custom: references_region
99
ms.reviewer: shseth
1010

@@ -47,7 +47,7 @@ The Azure Monitor Agent extensions for Windows and Linux can communicate either
4747
![Diagram that shows a flowchart to determine the values of settings and protectedSettings parameters when you enable the extension.](media/azure-monitor-agent-overview/proxy-flowchart.png)
4848

4949
> [!NOTE]
50-
> Azure Monitor Agent for Linux doesn't support system proxy via environment variables such as `http_proxy` and `https_proxy`.
50+
> Setting Linux system proxy via environment variables such as `http_proxy` and `https_proxy` is only supported using Azure Monitor Agent for Linux version 1.24.2 and above.
5151
5252
1. After you determine the `Settings` and `ProtectedSettings` parameter values, provide these other parameters when you deploy Azure Monitor Agent. Use PowerShell commands, as shown in the following examples:
5353

articles/azure-monitor/agents/azure-monitor-agent-extension-versions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: This article describes the version details for the Azure Monitor ag
44
ms.topic: conceptual
55
author: shseth
66
ms.author: shseth
7-
ms.date: 11/14/2022
7+
ms.date: 12/19/2022
88
ms.custom: references_region
99
ms.reviewer: shseth
1010

@@ -20,7 +20,7 @@ We strongly recommended to update to the latest version at all times, or opt in
2020
## Version details
2121
| Release Date | Release notes | Windows | Linux |
2222
|:---|:---|:---|:---|
23-
| Oct 2022 | <ul><li>Increased default retry timeout for data upload from 4 to 8 hours</li><li>Data quality improvements</li></ul> | 1.10.0.0 | None |
23+
| Oct 2022 | **Windows** <ul><li>Increased default retry timeout for data upload from 4 to 8 hours</li><li>Data quality improvements</li></ul> **Linux** <ul><li>Support for `http_proxy` and `https_proxy` environment variables for [network proxy configurations](./azure-monitor-agent-data-collection-endpoint.md#proxy-configuration) for the agent</li><li>[Text logs](./data-collection-text-log.md) <ul><li>Network proxy support enabled</li><li>Fixed missing `_ResourceId`</li><li>Increased maximum line size support to 1MB</li></ul></li><li>Support ingestion of syslog events whose timestamp is in the future</li><li>Performance improvements</li><li>Fixed `diskio` metrics instance name dimension to use the disk mount path(s) instead of the device name(s)</li></ul> | 1.10.0.0 | 1.24.2 |
2424
| Sep 2022 | Reliability improvements | 1.9.0.0 | None |
2525
| August 2022 | **Common updates** <ul><li>Improved resiliency: Default lookback (retry) time updated to last 3 days (72 hours) up from 60 minutes, for agent to collect data post interruption. This is subject to default offline cache size of 10gigabytes</li><li>Fixes the preview custom text log feature that was incorrectly removing the *TimeGenerated* field from the raw data of each event. All events are now additionally stamped with agent (local) upload time</li><li>Reliability and supportability improvements</li></ul> **Windows** <ul><li>Fixed datetime format to UTC</li><li>Fix to use default location for firewall log collection, if not provided</li><li>Reliability and supportability improvements</li></ul> **Linux** <ul><li>Support for OpenSuse 15, Debian 11 ARM64</li><li>Support for coexistence of Azure Monitor agent with legacy Azure Diagnostic extension for Linux (LAD)</li><li>Increased max-size of UDP payload for Telegraf output to prevent dimension truncation</li><li>Prevent unconfigured upload to Azure Monitor Metrics destination</li><li>Fix for disk metrics wherein *instance name* dimension will use the disk mount path(s) instead of the device name(s), to provide parity with legacy agent</li><li>Fixed *disk free MB* metric to report megabytes instead of bytes</li></ul> | 1.8.0.0 | 1.22.2 |
2626
| July 2022 | Fix for mismatch event timestamps for Sentinel Windows Event Forwarding | 1.7.0.0 | None |

articles/azure-monitor/alerts/alerts-overview.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ For stateful alerts, the alert is considered resolved when:
9595

9696
When the alert is considered resolved, the alert rule sends out a resolved notification using webhooks or email and the monitor state in the Azure portal is set to resolved.
9797

98+
> [!NOTE]
99+
> Log search alert is resolved after time range that teh alert wasn't met. Threrefore the resolve evaluation window is based on last unhealthy window.
100+
98101
## Manage your alerts programmatically
99102

100103
You can query your alerts instances to create custom views outside of the Azure portal, or to analyze your alerts to identify patterns and trends.

articles/azure-monitor/best-practices-cost.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Since Azure Monitor charges for the collection of data, your goal should be to c
8080
| **Container insights** | |
8181
| Configure agent collection to remove unneeded data. | Analyze the data collected by Container insights as described in [Controlling ingestion to reduce cost](containers/container-insights-cost.md#control-ingestion-to-reduce-cost) and adjust your configuration to stop collection of data you don't need. |
8282
| Limit Prometheus metrics collected | If you configured Prometheus metric scraping, then follow the recommendations at [Controlling ingestion to reduce cost](containers/container-insights-cost.md#prometheus-metrics-scraping) to optimize your data collection for cost. |
83-
| Configure Basic Logs | Convert your schema to ContainerLogV2 which is compatible with Basic logs and can provide significant cost savings as described in [Controlling ingestion to reduce cost](containers/container-insights-cost.md#configure-basic-logs). |
83+
| Configure Basic Logs | [Convert your schema to ContainerLogV2](containers/container-insights-logging-v2.md) which is compatible with Basic logs and can provide significant cost savings as described in [Controlling ingestion to reduce cost](containers/container-insights-cost.md#configure-basic-logs). |
8484
| **Application Insights** ||
8585
| Use sampling to tune the amount of data collected. | [Sampling](app/sampling.md) is the primary tool you can use to tune the amount of data collected by Application Insights. Use sampling to reduce the amount of telemetry that's sent from your applications with minimal distortion of metrics. |
8686
| Limit the number of Ajax calls. | [Limit the number of Ajax calls](app/javascript.md#configuration) that can be reported in every page view or disable Ajax reporting. If you disable Ajax calls, you'll be disabling [JavaScript correlation](app/javascript.md#enable-distributed-tracing) too. |

0 commit comments

Comments
 (0)