Skip to content

Commit 483affe

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into lb-nat-howto-portal
2 parents e02343f + 30abd8d commit 483affe

File tree

314 files changed

+2930
-3382
lines changed

Some content is hidden

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

314 files changed

+2930
-3382
lines changed

.openpublishing.publish.config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,7 @@
899899
"articles/virtual-machine-scale-sets/.openpublishing.redirection.virtual-machine-scale-sets.json",
900900
"articles/mysql/.openpublishing.redirection.mysql.json",
901901
"articles/container-apps/.openpublishing.redirection.container-apps.json",
902-
"articles/spring-cloud/.openpublishing.redirection.spring-cloud.json"
902+
"articles/spring-cloud/.openpublishing.redirection.spring-cloud.json",
903+
"articles/load-testing/.openpublishing.redirection.azure-load-testing.json"
903904
]
904905
}

.openpublishing.redirection.azure-monitor.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,22 @@
2424
"source_path_from_root": "/articles/azure-monitor/agents/data-collection-rule-overview.md",
2525
"redirect_url": "/azure/azure-monitor/essentials/data-collection-rule-overview",
2626
"redirect_document_id": false
27+
},
28+
{
29+
"source_path_from_root": "/articles/azure-monitor/app/change-analysis.md",
30+
"redirect_url": "/azure/azure-monitor/change/change-analysis",
31+
"redirect_document_id": false
32+
},
33+
{
34+
"source_path_from_root": "/articles/azure-monitor/app/change-analysis-visualizations.md",
35+
"redirect_url": "/azure/azure-monitor/change/change-analysis-visualizations",
36+
"redirect_document_id": false
37+
},
38+
{
39+
"source_path_from_root": "/articles/azure-monitor/app/change-analysis-troubleshoot.md",
40+
"redirect_url": "/azure/azure-monitor/change/change-analysis-troubleshoot",
41+
"redirect_document_id": false
2742
}
43+
2844
]
2945
}

.openpublishing.redirection.json

Lines changed: 93 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5982,7 +5982,7 @@
59825982
"source_path_from_root": "/articles/azure-functions/functions-test-a-function.md",
59835983
"redirect_url": "/azure/azure-functions/supported-languages",
59845984
"redirect_document_id": false
5985-
},
5985+
},
59865986
{
59875987
"source_path_from_root": "/articles/azure-app-configuration/quickstart-azure-function-csharp.md",
59885988
"redirect_url": "/azure/azure-app-configuration/quickstart-azure-functions-csharp",
@@ -7787,7 +7787,7 @@
77877787
"source_path_from_root": "/articles/cognitive-services/LUIS/luis-tutorial-review-endpoint-utterances.md",
77887788
"redirect_url": "/azure/cognitive-services/LUIS/how-to/improve-application",
77897789
"redirect_document_id": false
7790-
},
7790+
},
77917791
{
77927792
"source_path_from_root": "/articles/cognitive-services/LUIS/luis-concept-enterprise.md",
77937793
"redirect_url": "/azure/cognitive-services/LUIS/how-to/improve-application",
@@ -12088,7 +12088,6 @@
1208812088
"redirect_url": "/azure/azure-signalr/signalr-tutorial-authenticate-azure-functions",
1208912089
"redirect_document_id": true
1209012090
},
12091-
1209212091
{
1209312092
"source_path_from_root": "/articles/cognitive-services/form-recognizer/build-training-data-set.md",
1209412093
"redirect_url": "/azure/applied-ai-services/form-recognizer/build-training-data-set",
@@ -14669,7 +14668,7 @@
1466914668
"redirect_url": "/azure/data-explorer/manage-cluster-vertical-scaling",
1467014669
"redirect_document_id": false
1467114670
},
14672-
{
14671+
{
1467314672
"source_path_from_root": "/articles/postgresql/howto-manage-firewall-using-cli.md",
1467414673
"redirect_url": "/azure/postgresql/quickstart-create-server-database-azure-cli#configure-a-server-based-firewall-rule",
1467514674
"redirect_document_id": true
@@ -15188,7 +15187,7 @@
1518815187
"source_path_from_root": "/articles/defender-for-iot/device-builders/quickstart-azure-rtos-security-module.md",
1518915188
"redirect_url": "/azure/defender-for-iot/device-builders/how-to-quickstart-azure-rtos-security-module",
1519015189
"redirect_document_id": false
15191-
},
15190+
},
1519215191
{
1519315192
"source_path_from_root": "/articles/defender-for-iot/organizations/integration-cisco-ise-pxgrid.md",
1519415193
"redirect_url": "/azure/defender-for-iot/organizations/integration-forescout",
@@ -17733,7 +17732,7 @@
1773317732
"source_path_from_root": "/articles/lab-services/class-type-ethical-hacking-virtualbox.md",
1773417733
"redirect_url": "/azure/lab-services/class-types",
1773517734
"redirect_document_id": false
17736-
},
17735+
},
1773717736
{
1773817737
"source_path_from_root": "/articles/lab-services/classroom-labs/class-type-jupyter-notebook.md",
1773917738
"redirect_url": "/azure/lab-services/class-type-jupyter-notebook",
@@ -26038,12 +26037,12 @@
2603826037
"source_path_from_root": "/articles/storage/blobs/storage-quickstart-blobs-javascript-client-libraries-legacy.md",
2603926038
"redirect_url": "/azure/storage/blobs/quickstart-blobs-javascript-browser",
2604026039
"redirect_document_id": false
26041-
},
26040+
},
2604226041
{
2604326042
"source_path_from_root": "/articles/storage/blobs/storage-quickstart-blobs-nodejs-legacy.md",
2604426043
"redirect_url": "/azure/storage/blobs/storage-quickstart-blobs-nodejs",
2604526044
"redirect_document_id": false
26046-
},
26045+
},
2604726046
{
2604826047
"source_path_from_root": "/articles/storage/blobs/storage-quickstart-blobs-nodejs-v10.md",
2604926048
"redirect_url": "/azure/storage/blobs/storage-quickstart-blobs-nodejs",
@@ -33299,7 +33298,7 @@
3329933298
"redirect_url": "https://azure.microsoft.com/services/cognitive-services/",
3330033299
"redirect_document_id": false
3330133300
},
33302-
{
33301+
{
3330333302
"source_path_from_root": "/articles/machine-learning/studio/whats-new.md",
3330433303
"redirect_url": "https://azure.microsoft.com/updates/?product=machine-learning-studio",
3330533304
"redirect_document_id": false
@@ -43955,34 +43954,94 @@
4395543954
"redirect_document_id": false
4395643955
},
4395743956
{
43958-
"source_path_from_root": "/articles/azure/virtual-desktop/azure-advisor.md",
43959-
"redirect_url": "/azure/advisor/advisor-overview",
43960-
"redirect_document_id": false
43957+
"source_path_from_root": "/articles/azure/virtual-desktop/azure-advisor.md",
43958+
"redirect_url": "/azure/advisor/advisor-overview",
43959+
"redirect_document_id": false
4396143960
},
4396243961
{
4396343962
"source_path_from_root": "/articles/azure/cognitive-services/translator/tutorial-wpf-translation-csharp.md",
4396443963
"redirect_url": "/ai-builder/flow-text-translation?toc=/azure/cognitive-services/translator/toc.json&bc=/azure/cognitive-services/translator/breadcrumb/toc.json",
4396543964
"redirect_document_id": false
43966-
},
43967-
{
43968-
"source_path_from_root": "/articles/azure/cognitive-services/translator/tutorial-build-flask-app-translation-synthesis.md",
43969-
"redirect_url": "/learn/modules/translate-text-with-translator-service?toc=/azure/cognitive-services/translator/toc.json&bc=/azure/cognitive-services/translator/breadcrumb/toc.json",
43970-
"redirect_document_id": false
43971-
},
43972-
{
43973-
"source_path": "articles/machine-learning/classic/deploy-with-resource-manager-template.md",
43974-
"redirect_url": "/previous-versions/azure/machine-learning/classic/deploy-with-resource-manager-template",
43975-
"redirect_document_id": false
43976-
},
43977-
{
43978-
"source_path_from_root": "/articles/governance/policy/how-to/guest-configuration-create-group-policy.md",
43979-
"redirect_url": "/azure/governance/policy/how-to/guest-configuration-create",
43980-
"redirect_document_id": false
43981-
},
43982-
{
43983-
"source_path_from_root": "/articles/virtual-desktop/compare-virtual-desktop-windows-365.md",
43984-
"redirect_url": "/azure/virtual-desktop/overview",
43985-
"redirect_document_id": false
43986-
}
43965+
},
43966+
{
43967+
"source_path_from_root": "/articles/azure/cognitive-services/translator/tutorial-build-flask-app-translation-synthesis.md",
43968+
"redirect_url": "/learn/modules/translate-text-with-translator-service?toc=/azure/cognitive-services/translator/toc.json&bc=/azure/cognitive-services/translator/breadcrumb/toc.json",
43969+
"redirect_document_id": false
43970+
},
43971+
{
43972+
"source_path": "articles/machine-learning/classic/deploy-with-resource-manager-template.md",
43973+
"redirect_url": "/previous-versions/azure/machine-learning/classic/deploy-with-resource-manager-template",
43974+
"redirect_document_id": false
43975+
},
43976+
{
43977+
"source_path_from_root": "/articles/governance/policy/how-to/guest-configuration-create-group-policy.md",
43978+
"redirect_url": "/azure/governance/policy/how-to/guest-configuration-create",
43979+
"redirect_document_id": false
43980+
},
43981+
{
43982+
"source_path_from_root": "/articles/virtual-desktop/compare-virtual-desktop-windows-365.md",
43983+
"redirect_url": "/azure/virtual-desktop/overview",
43984+
"redirect_document_id": false
43985+
},
43986+
{
43987+
"source_path_from_root": "/articles/governance/blueprints/samples/cis-azure-1-1-0.md",
43988+
"redirect_url": "/azure/governance/policy/samples/cis-azure-1-1-0",
43989+
"redirect_document_id": false
43990+
},
43991+
{
43992+
"source_path_from_root": "/articles/governance/blueprints/samples/cis-azure-1-3-0.md",
43993+
"redirect_url": "/azure/governance/policy/samples/cis-azure-1-3-0",
43994+
"redirect_document_id": false
43995+
},
43996+
{
43997+
"source_path_from_root": "/articles/governance/blueprints/samples/cmmc-l3.md",
43998+
"redirect_url": "/azure/governance/policy/samples/cmmc-l3",
43999+
"redirect_document_id": false
44000+
},
44001+
{
44002+
"source_path_from_root": "/articles/governance/blueprints/samples/hipaa-hitrust-9-2.md",
44003+
"redirect_url": "/azure/governance/policy/samples/hipaa-hitrust-9-2",
44004+
"redirect_document_id": false
44005+
},
44006+
{
44007+
"source_path_from_root": "/articles/governance/blueprints/samples/irs-1075-sept2016",
44008+
"redirect_url": "/azure/governance/policy/samples/irs-1075-sept2016",
44009+
"redirect_document_id": false
44010+
},
44011+
{
44012+
"source_path_from_root": "/articles/governance/blueprints/samples/nist-sp-800-171-r2",
44013+
"redirect_url": "/azure/governance/policy/samples/nist-sp-800-171-r2",
44014+
"redirect_document_id": false
44015+
},
44016+
{
44017+
"source_path_from_root": "/articles/governance/blueprints/samples/media/control-mapping.md",
44018+
"redirect_url": "/azure/governance/policy/samples",
44019+
"redirect_document_id": false
44020+
},
44021+
{
44022+
"source_path_from_root": "/articles/governance/blueprints/samples/media/deploy.md",
44023+
"redirect_url": "/azure/governance/policy/samples",
44024+
"redirect_document_id": false
44025+
},
44026+
{
44027+
"source_path_from_root": "/articles/governance/blueprints/samples/media/index.md",
44028+
"redirect_url": "/azure/governance/policy/samples",
44029+
"redirect_document_id": false
44030+
},
44031+
{
44032+
"source_path_from_root": "/articles/governance/blueprints/samples/pci-dss-3.2.1/control-mapping.md",
44033+
"redirect_url": "/azure/governance/policy/samples",
44034+
"redirect_document_id": false
44035+
},
44036+
{
44037+
"source_path_from_root": "/articles/governance/blueprints/samples/pci-dss-3.2.1/deploy.md",
44038+
"redirect_url": "/azure/governance/policy/samples",
44039+
"redirect_document_id": false
44040+
},
44041+
{
44042+
"source_path_from_root": "/articles/governance/blueprints/samples/pci-dss-3.2.1/index.md",
44043+
"redirect_url": "/azure/governance/policy/samples",
44044+
"redirect_document_id": false
44045+
}
4398744046
]
43988-
}
44047+
}

articles/active-directory/authentication/concept-certificate-based-authentication-technical-deep-dive.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ services: active-directory
66
ms.service: active-directory
77
ms.subservice: authentication
88
ms.topic: how-to
9-
ms.date: 02/15/2022
9+
ms.date: 03/11/2022
1010

1111
ms.author: justinha
1212
author: vimrang
13-
manager: daveba
13+
manager: karenhoran
1414
ms.reviewer: vimrang
1515

1616
ms.collection: M365-identity-device-management
@@ -196,7 +196,7 @@ For the first test scenario, configure the authentication policy where the Issue
196196

197197
### Test multifactor authentication
198198

199-
For the next test scenario, configure the authentication policy where the Issuer subject rule satisfies multifactor authentication.
199+
For the next test scenario, configure the authentication policy where the **policyOID** rule satisfies multifactor authentication.
200200

201201
:::image type="content" border="true" source="./media/concept-certificate-based-authentication-technical-deep-dive/multifactor.png" alt-text="Screenshot of the Authentication policy configuration showing multifactor authentication required." lightbox="./media/concept-certificate-based-authentication-technical-deep-dive/multifactor.png":::
202202

articles/active-directory/develop/TOC.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,10 @@
127127
href: zero-trust-for-developers.md
128128
- name: Best practices for least privileged access for apps
129129
href: secure-least-privileged-access.md
130-
- name: Security best practices for Azure AD application registration
130+
- name: Security best practices for Azure AD app registration
131131
href: security-best-practices-for-app-registration.md
132+
- name: Secure access control using groups in Azure AD
133+
href: secure-group-access-control.md
132134
- name: Automatic user provisioning (SCIM)
133135
href: ../app-provisioning/user-provisioning.md?toc=/azure/active-directory/develop/toc.json&bc=/azure/active-directory/develop/breadcrumb/toc.json
134136
- name: Use the Microsoft Graph API
23.9 KB
Loading
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: Secure access control using groups in Azure AD - Microsoft identity platform
3+
description: Learn about how groups are used to securely control access to resources in Azure AD.
4+
services: active-directory
5+
author: chrischiedo
6+
manager: CelesteDG
7+
8+
ms.service: active-directory
9+
ms.subservice: develop
10+
ms.topic: conceptual
11+
ms.workload: identity
12+
ms.date: 2/21/2022
13+
ms.custom: template-concept
14+
ms.author: cchiedo
15+
ms.reviewer: jodah, marsma
16+
17+
# Customer intent: As a developer, I want to learn how to most securely use Azure AD groups to control access to resources.
18+
---
19+
20+
# Secure access control using groups in Azure AD
21+
22+
Azure Active Directory (Azure AD) allows the use of groups to manage access to resources in an organization. You should use groups for access control when you want to manage and minimize access to applications. When groups are used, only members of those groups can access the resource. Using groups also allows you to benefit from several Azure AD group management features, such as attribute-based dynamic groups, external groups synced from on-premises Active Directory, and Administrator managed or self-service managed groups. To learn more about the benefits of groups for access control, see [manage access to an application](../manage-apps/what-is-access-management.md).
23+
24+
While developing an application, you can authorize access with the [groups claim](/graph/api/resources/application?view=graph-rest-1.0#properties&preserve-view=true). To learn more, see how to [configure group claims for applications with Azure AD](../hybrid/how-to-connect-fed-group-claims.md).
25+
26+
Today, many applications select a subset of groups with the *securityEnabled* flag set to *true* to avoid scale challenges, that is, to reduce the number of groups returned in the token. Setting the *securityEnabled* flag to be true for a group doesn't guarantee that the group is securely managed. Therefore, we suggest following the best practices described below:
27+
28+
29+
## Best practices to mitigate risk
30+
31+
This table presents several security best practices for security groups and the potential security risks each practice mitigates.
32+
33+
|Security best practice |Security risk mitigated |
34+
|--------------------------|---------------------------|
35+
|**Ensure resource owner and group owner are the same principal**. Applications should build their own group management experience and create new groups to manage access. For example, an application can create groups with *Group. Create* permission and add itself as the owner of the group. This way the application has control over its groups without being over privileged to modify other groups in the tenant.|When group owners and resource owners are different users or entities, group owners can add users to the group who aren't supposed to get access to the resource and thus give access to the resource unintentionally.|
36+
|**Build an implicit contract between resource owner(s) and group owner(s)**. The resource owner and the group owner should align on the group purpose, policies, and members that can be added to the group to get access to the resource. This level of trust is non-technical and relies on human or business contract.|When group owners and resource owners have different intentions, the group owner may add users to the group the resource owner didn't intend on giving access to. This can result in unnecessary and potentially risky access.|
37+
|**Use private groups for access control**. Microsoft 365 groups are managed by the [visibility concept](/graph/api/resources/group?view=graph-rest-1.0#group-visibility-options&preserve-view=true). This property controls the join policy of the group and visibility of group resources. Security groups have join policies that either allow anyone to join or require owner approval. On-premises-synced groups can also be public or private. When they're used to give access to a resource in the cloud, users joining this group on-premises can get access to the cloud resource as well.|When you use a *Public* group for access control, any member can join the group and get access to the resource. When a *Public* group is used to give access to an external resource, the risk of elevation of privilege exists.|
38+
|**Group nesting**. When you use a group for access control and it has other groups as its members, members of the subgroups can get access to the resource. In this case, there are multiple group owners - owners of the parent group and the subgroups.|Aligning with multiple group owners on the purpose of each group and how to add the right members to these groups is more complex and more prone to accidental grant of access. Therefore, you should limit the number of nested groups or don't use them at all if possible.|
39+
40+
## Next steps
41+
42+
For more information about groups in Azure AD, see the following:
43+
44+
- [Manage app and resource access using Azure Active Directory groups](../fundamentals/active-directory-manage-groups.md)
45+
- [Access with Azure Active Directory groups](/azure/devops/organizations/accounts/manage-azure-active-directory-groups)
46+
- [Restrict your Azure AD app to a set of users in an Azure AD tenant](./howto-restrict-your-app-to-a-set-of-users.md)

0 commit comments

Comments
 (0)