Skip to content

Commit c75c5fa

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into ehmsi
2 parents d84755d + dfcd907 commit c75c5fa

File tree

267 files changed

+3278
-2349
lines changed

Some content is hidden

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

267 files changed

+3278
-2349
lines changed

.openpublishing.redirection.azure-monitor.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5591,6 +5591,41 @@
55915591
"source_path_from_root": "/articles/azure-monitor/logs/collect-sccm.md",
55925592
"redirect_url": "/mem/configmgr/core/plan-design/changes/deprecated/removed-and-deprecated-cmfeatures",
55935593
"redirect_document_id": false
5594+
},
5595+
{
5596+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-overview.md",
5597+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5598+
"redirect_document_id": false
5599+
},
5600+
{
5601+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-migrate.md",
5602+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5603+
"redirect_document_id": false
5604+
},
5605+
{
5606+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-enable.md",
5607+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5608+
"redirect_document_id": false
5609+
},
5610+
{
5611+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-alerts.md",
5612+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5613+
"redirect_document_id": false
5614+
},
5615+
{
5616+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-configure.md",
5617+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5618+
"redirect_document_id": false
5619+
},
5620+
{
5621+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-configure-dcr.md",
5622+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5623+
"redirect_document_id": false
5624+
},
5625+
{
5626+
"source_path_from_root": "/articles/azure-monitor/vm/vminsights-health-troubleshoot.md",
5627+
"redirect_url": "/azure/azure-monitor/vm/vminsights-overview",
5628+
"redirect_document_id": false
55945629
}
55955630
]
55965631
}

articles/active-directory-b2c/TOC.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
- name: Authentication library
6767
href: ../active-directory/develop/msal-overview.md?bc=%2fazure%2factive-directory-b2c%2fbread%2ftoc.json&toc=%2fazure%2factive-directory-b2c%2fTOC.json
6868
displayName: MSAL, client library, Microsoft Authentication Library
69-
- name: Azure AD B2C global identitiy framework
69+
- name: Azure AD B2C global identity framework
7070
items:
7171
- name: Global identity solutions
7272
href: azure-ad-b2c-global-identity-solutions.md

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/azure-cni-overlay.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn how to configure Azure CNI Overlay networking in Azure Kubern
44
services: container-service
55
ms.topic: article
66
ms.custom: references_regions
7-
ms.date: 11/08/2022
7+
ms.date: 12/12/2022
88
---
99

1010
# Configure Azure CNI Overlay networking in Azure Kubernetes Service (AKS)
@@ -17,6 +17,7 @@ With Azure CNI Overlay, the cluster nodes are deployed into an Azure Virtual Net
1717
> Azure CNI Overlay is currently available only in the following regions:
1818
> - North Central US
1919
> - West Central US
20+
> - East US
2021
2122
## Overview of overlay networking
2223

@@ -89,7 +90,6 @@ The overlay solution has the following limitations today
8990
* You can't deploy multiple overlay clusters on the same subnet.
9091
* Overlay can be enabled only for new clusters. Existing (already deployed) clusters can't be configured to use overlay.
9192
* You can't use Application Gateway as an Ingress Controller (AGIC) for an overlay cluster.
92-
* v5 VM SKUs are currently not supported.
9393

9494
## Install the aks-preview Azure CLI extension
9595

articles/aks/node-access.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ To connect to another node in the cluster, use the `kubectl debug` command. For
8080

8181
To create the SSH connection to the Windows Server node from another node, use the SSH keys provided when you created the AKS cluster and the internal IP address of the Windows Server node.
8282

83+
> [!IMPORTANT]
84+
>
85+
> The following steps for creating the SSH connection to the Windows Server node from another node can only be used if you created your AKS cluster using the Azure CLI and the `--generate-ssh-keys` parameter. If you didn't use this method to create your cluster, you'll use a password instead of an SSH key. To do this, see [Create the SSH connection to a Windows node using a password](#create-the-ssh-connection-to-a-windows-node-using-a-password)
86+
8387
Open a new terminal window and use the `kubectl get pods` command to get the name of the pod started by `kubectl debug`.
8488

8589
```bash
@@ -155,6 +159,54 @@ azureuser@aksnpwin000000 C:\Users\azureuser>
155159
> ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p [email protected]' -o PreferredAuthentications=password [email protected]
156160
> ```
157161
162+
### Create the SSH connection to a Windows node using a password
163+
164+
If you didn't create your AKS cluster using the Azure CLI and the `--generate-ssh-keys` parameter, you'll use a password instead of an SSH key to create the SSH connection. To do this with Azure CLI, use the following steps:
165+
166+
1. Create a root user called `azureuser`.
167+
168+
```azurecli
169+
az vmss update -g <nodeRG> -n <vmssName> --set virtualMachineProfile.osProfile.adminUsername=azureuser
170+
```
171+
172+
2. Create a password for the new root user.
173+
174+
```azurecli
175+
az vmss update -g <nodeRG> -n <vmssName> --set virtualMachineProfile.osProfile.adminPassword=<new password>
176+
```
177+
178+
3. Update the instances to use the above changes.
179+
180+
```azurecli
181+
az vmss update-instances -g <nodeRG> -n <vmssName> --instance-ids '*'
182+
```
183+
184+
4. Reimage the affected nodes so you can connect using your new credentials.
185+
186+
```azurecli
187+
az vmss reimage -g <nodeRG> -n <vmssName> --instance-id <affectedNodeInstanceId>
188+
```
189+
190+
5. Use `kubectl debug` to connect to another node.
191+
192+
```azurecli
193+
kubectl debug node/<nodeName> -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
194+
```
195+
196+
6. Open a second terminal to use port forwarding to connect the debug pod to your local computer.
197+
198+
```azurecli
199+
kubectl port-forward <debugPodName> 2022:22
200+
```
201+
202+
7. Open a third terminal to get the `INTERNAL-IP` of the affected node to initiate the SSH connection. You can get this with `kubectl get nodes -o wide`. Once you have it, use the following command to connect.
203+
204+
```azurecli
205+
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p [email protected]' azureuser@<affectedNodeIp>
206+
```
207+
208+
8. Enter your password.
209+
158210
### Remove SSH access
159211
160212
When done, `exit` the SSH session, stop any port forwarding, and then `exit` the interactive container session. After the interactive container session closes, delete the pod used for SSH access using the `kubectl delete pod` command.
@@ -166,6 +218,7 @@ kubectl delete pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx
166218
## Update SSH key on an existing AKS cluster (preview)
167219

168220
### Prerequisites
221+
169222
* Before you start, ensure the Azure CLI is installed and configured. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli].
170223
* The aks-preview extension version 0.5.111 or later. To learn how to install an Azure extension, see [How to install extensions][how-to-install-azure-extensions].
171224

articles/aks/supported-kubernetes-versions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The Kubernetes community releases minor versions roughly every three months. Rec
1515
Minor version releases include new features and improvements. Patch releases are more frequent (sometimes weekly) and are intended for critical bug fixes within a minor version. Patch releases include fixes for security vulnerabilities or major bugs.
1616

1717
>[!WARNING]
18-
> AKS clusters with Calico enabled should not upgrade to Kubernetes v1.25 preview.
18+
> Due to an issue with Calico and AKS. It is highly reccomended that customers using Calico do not upgrade or create new clusters on v1.25.
1919
2020
## Kubernetes versions
2121

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

0 commit comments

Comments
 (0)