Updates from: 06/30/2023 01:16:19
Service Microsoft Docs article Related commit history on GitHub Change details
active-directory Known Issues https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-provisioning/known-issues.md
The following information is a current list of known limitations with the Azure
The following applications and directories aren't yet supported. #### Active Directory Domain Services (user or group writeback from Azure AD by using the on-premises provisioning preview)
- - When a user is managed by Azure AD Connect, the source of authority is on-premises Azure AD. So, user attributes can't be changed in Azure AD. This preview doesn't change the source of authority for users managed by Azure AD Connect.
+ - When a user is managed by Azure AD Connect, the source of authority is on-premises Active Directory Domain Services. So, user attributes can't be changed in Azure AD. This preview doesn't change the source of authority for users managed by Azure AD Connect.
- Attempting to use Azure AD Connect and the on-premises provisioning to provision groups or users into Active Directory Domain Services can lead to creation of a loop, where Azure AD Connect can overwrite a change that was made by the provisioning service in the cloud. Microsoft is working on a dedicated capability for group or user writeback. Upvote the UserVoice feedback on [this website](https://feedback.azure.com/d365community/forum/22920db1-ad25-ec11-b6e6-000d3a4f0789/) to track the status of the preview. Alternatively, you can use [Microsoft Identity Manager](/microsoft-identity-manager/microsoft-identity-manager-2016) for user or group writeback from Azure AD to Active Directory. #### Azure AD
active-directory Use Scim To Provision Users And Groups https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-provisioning/use-scim-to-provision-users-and-groups.md
The Azure AD Provisioning Services is designed to support a SCIM 2.0 user manage
> [!IMPORTANT] > The behavior of the Azure AD SCIM implementation was last updated on December 18, 2018. For information on what changed, see [SCIM 2.0 protocol compliance of the Azure AD User Provisioning service](application-provisioning-config-problem-scim-compatibility.md).
-Within the [SCIM 2.0 protocol specification](http://www.simplecloud.info/#Specification), your application must support these requirements:
+Within the SCIM 2.0 protocol specification, your application must support these requirements:
|Requirement|Reference notes (SCIM protocol)| |||
active-directory Application Proxy Ping Access Publishing Guide https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-proxy/application-proxy-ping-access-publishing-guide.md
This article is for people to publish an application with this scenario for the
### Install an Application Proxy connector
-If you've enabled Application Proxy enabled and installed a connector already, you can skip this section and go to [Add your application to Azure AD with Application Proxy](#add-your-application-to-azure-ad-with-application-proxy).
+If you've enabled Application Proxy and installed a connector already, you can skip this section and go to [Add your application to Azure AD with Application Proxy](#add-your-application-to-azure-ad-with-application-proxy).
The Application Proxy connector is a Windows Server service that directs the traffic from your remote employees to your published applications. For more detailed installation instructions, see [Tutorial: Add an on-premises application for remote access through Application Proxy in Azure Active Directory](../app-proxy/application-proxy-add-on-premises-application.md).
When you've completed all these steps, your application should be up and running
- [Configuring PingAccess to use Azure AD as the token provider](https://docs.pingidentity.com/access/sources/dita/topic?category=pingaccess&Releasestatus_ce=Current&resourceid=pa_configure_pa_to_use_azure_ad_as_the_token_provider) - [Single sign-on to applications in Azure Active Directory](../manage-apps/what-is-single-sign-on.md)-- [Troubleshoot Application Proxy problems and error messages](application-proxy-troubleshoot.md)
+- [Troubleshoot Application Proxy problems and error messages](application-proxy-troubleshoot.md)
active-directory Concept System Preferred Multifactor Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-system-preferred-multifactor-authentication.md
description: Learn how to use system-preferred multifactor authentication
Previously updated : 06/02/2023 Last updated : 06/28/2023
System-preferred MFA is a Microsoft managed setting, which is a [tristate policy
After system-preferred MFA is enabled, the authentication system does all the work. Users don't need to set any authentication method as their default because the system always determines and presents the most secure method they registered. >[!NOTE]
->System-preferred MFA is a key security upgrade to traditional second factor notifications. We highly recommend enabling system-preferred MFA in the near term for improved sign-in security.
+>System-preferred MFA is an important security enhancement for users authenticating by using telecom transports. Starting July 07, 2023, the Microsoft managed value of system-preferred MFA will change from **Disabled** to **Enabled**. If you don't want to enable system-peeferred MFA, change the state from **Default** to **Disabled**, or exclude users and groups from the policy.
## Enable system-preferred MFA in the Azure portal
Content-Type: application/json
## Known issue
-[FIDO2 security keys](../develop/support-fido2-authentication.md#mobile) on mobile devices and [registration for certificate-based authentication (CBA)](concept-certificate-based-authentication.md) aren't supported due to an issue that might surface when system-preferred MFA is enabled. Until a fix is available, we recommend not using FIDO2 security keys on mobile devices or registering for CBA. To disable system-preferred MFA for these users, you can either add them to an excluded group or remove them from an included group.
+A fix for [FIDO2 security keys](../develop/support-fido2-authentication.md#mobile) is being rolled out with the change of the Microsoft managed setting to **Enabled**. As part of the rollout, we adjusted the preferred methods list, which moved certificate-based authentication (CBA) lower on the list of preferred methods. This change is necessary due to a known issue where users within the scope of CBA can't use any other available authentication method. We are actively working to address this issue, and once the fix is rolled out, CBA will return to its appropriate position on the list of preferred methods. However, tenants that use a Conditional Access policy that mandates CBA will have the ability to bypass this downgrade and be unaffected by the change.
## FAQ
Content-Type: application/json
When a user signs in, the authentication process checks which authentication methods are registered for the user. The user is prompted to sign-in with the most secure method according to the following order. The order of authentication methods is dynamic. It's updated as the security landscape changes, and as better authentication methods emerge. Click the link for information about each method. 1. [Temporary Access Pass](howto-authentication-temporary-access-pass.md)
-1. [Certificate-based authentication](concept-certificate-based-authentication.md)
1. [FIDO2 security key](concept-authentication-passwordless.md#fido2-security-keys) 1. [Microsoft Authenticator push notifications](concept-authentication-authenticator-app.md) 1. [Time-based one-time password (TOTP)](concept-authentication-oath-tokens.md)<sup>1</sup> 1. [Telephony](concept-authentication-phone-options.md)<sup>2</sup>
+1. [Certificate-based authentication](concept-certificate-based-authentication.md)
<sup>1</sup> Includes hardware or software TOTP from Microsoft Authenticator, Authenticator Lite, or third-party applications. <sup>2</sup> Includes SMS and voice calls.
-### How does system-preferred MFA affect AD FS or NPS extension?
+### How does system-preferred MFA affect the NPS extension?
-System-preferred MFA doesn't affect users who sign in by using federation, such as Active Directory Federation Services (AD FS) or third-party providers, or Network Policy Server (NPS) extension. Those users don't see any change to their sign-in experience.
+System-preferred MFA doesn't affect users who sign in by using the Network Policy Server (NPS) extension. Those users don't see any change to their sign-in experience.
### What happens for users who aren't specified in the Authentication methods policy but enabled in the legacy MFA tenant-wide policy?
active-directory Howto Password Ban Bad On Premises Deploy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-password-ban-bad-on-premises-deploy.md
The following core requirements apply:
| | | |`https://login.microsoftonline.com`|Authentication requests| |`https://enterpriseregistration.windows.net`|Azure AD Password Protection functionality|
- |`https://autoupdate.msappproxaxy.net` | Azure AD Password Protection auto-upgrade functionality |
+ |`https://autoupdate.msappproxy.net` | Azure AD Password Protection auto-upgrade functionality |
> [!NOTE] > Some endpoints, such as the CRL endpoint, are not addressed in this article. For a list of all supported endpoints, see [Microsoft 365 URLs and IP address ranges](/microsoft-365/enterprise/urls-and-ip-address-ranges#microsoft-365-common-and-office-online).
active-directory Multi Service Web App Access Microsoft Graph As User https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/multi-service-web-app-access-microsoft-graph-as-user.md
Previously updated : 04/25/2022 Last updated : 06/28/2023 ms.devlang: csharp, javascript
public class Startup
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) {
- services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
- .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
- .EnableTokenAcquisitionToCallDownstreamApi()
- .AddMicrosoftGraph(Configuration.GetSection("Graph"))
- .AddInMemoryTokenCaches();
-
- services.AddRazorPages();
+ services.AddOptions();
+ string[] initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
+
+ services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
+ .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
+ .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
+ .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
+ .AddInMemoryTokenCaches();
+
+ services.AddAuthorization(options =>
+ {
+ // By default, all incoming requests will be authorized according to the default policy
+ options.FallbackPolicy = options.DefaultPolicy;
+ });
+ services.AddRazorPages()
+ .AddMvcOptions(options => {})
+ .AddMicrosoftIdentityUI();
+
+ services.AddControllersWithViews()
+ .AddMicrosoftIdentityUI();
} }
public class Startup
{ "AzureAd": { "Instance": "https://login.microsoftonline.com/",
- "Domain": "fourthcoffeetest.onmicrosoft.com",
- "TenantId": "[tenant-id]",
- "ClientId": "[client-id]",
- // To call an API
- "ClientSecret": "[secret-from-portal]", // Not required by this scenario
+ "Domain": "[Enter the domain of your tenant, e.g. contoso.onmicrosoft.com]",
+ "TenantId": "[Enter 'common', or 'organizations' or the Tenant Id (Obtained from the Azure portal. Select 'Endpoints' from the 'App registrations' blade and use the GUID in any of the URLs), e.g. da41245a5-11b3-996c-00a8-4d99re19f292]",
+ "ClientId": "[Enter the Client Id (Application ID obtained from the Azure portal), e.g. ba74781c2-53c2-442a-97c2-3d60re42f403]",
+ "ClientSecret": "[Copy the client secret added to the app from the Azure portal]",
+ "ClientCertificates": [
+ ],
+ // the following is required to handle Continuous Access Evaluation challenges
+ "ClientCapabilities": [ "cp1" ],
"CallbackPath": "/signin-oidc" },
+ "DownstreamApis": {
+ "MicrosoftGraph": {
+ // Specify BaseUrl if you want to use Microsoft graph in a national cloud.
+ // See https://learn.microsoft.com/graph/deployments#microsoft-graph-and-graph-explorer-service-root-endpoints
+ // "BaseUrl": "https://graph.microsoft.com/v1.0",
+
+ // Set RequestAppToken this to "true" if you want to request an application token (to call graph on
+ // behalf of the application). The scopes will then automatically
+ // be ['https://graph.microsoft.com/.default'].
+ // "RequestAppToken": false
- "Graph": {
- "BaseUrl": "https://graph.microsoft.com/v1.0",
- "Scopes": "user.read"
+ // Set Scopes to request (unless you request an app token).
+ "Scopes": [ "User.Read" ]
+
+ // See https://aka.ms/ms-id-web/downstreamApiOptions for all the properties you can set.
+ }
}, "Logging": { "LogLevel": {
using Microsoft.Extensions.Logging;
// Some code omitted for brevity.
-[AuthorizeForScopes(Scopes = new[] { "user.read" })]
+[AuthorizeForScopes(Scopes = new[] { "User.Read" })]
public class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger;
active-directory Tutorial V2 Nodejs Console https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/tutorial-v2-nodejs-console.md
Title: "Tutorial: Call Microsoft Graph in a Node.js console app"
-description: In this tutorial, you build a console app for calling Microsoft Graph to a Node.js console app.
+ Title: "Tutorial: Call Microsoft Graph in a Node.js console daemon app"
+description: In this tutorial, you build a console daemon app for calling Microsoft Graph.
Last updated 12/12/2021
-# Tutorial: Call the Microsoft Graph API in a Node.js console app
+# Tutorial: Call the Microsoft Graph API in a Node.js console daemon app
-In this tutorial, you build a console app that calls Microsoft Graph API using its own identity. The console app you build uses the [Microsoft Authentication Library (MSAL) for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node).
+In this tutorial, you build a console daemon app that calls Microsoft Graph API using its own identity. The daemon app you build uses the [Microsoft Authentication Library (MSAL) for Node.js](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node).
Follow the steps in this tutorial to: > [!div class="checklist"] > - Register the application in the Azure portal
-> - Create a Node.js console app project
+> - Create a Node.js console daemon app project
> - Add authentication logic to your app > - Add app registration details > - Add a method to call a web API
First, complete the steps in [Register an application with the Microsoft identit
Use the following settings for your app registration: -- Name: `NodeConsoleApp` (suggested)
+- Name: `NodeDaemonApp` (suggested)
- Supported account types: **Accounts in this organizational directory only** - API permissions: **Microsoft APIs** > **Microsoft Graph** > **Application Permissions** > `User.Read.All` - Client secret: `*********` (record this value for use in a later step - it's shown only once)
Use the following settings for your app registration:
## Create the project
-1. Start by creating a directory for this Node.js tutorial project. For example, *NodeConsoleApp*.
+1. Start by creating a directory for this Node.js tutorial project. For example, *NodeDaemonApp*.
1. In your terminal, change into the directory you created (the project root), and then run the following commands:
The *index.js* file you just created references two other node modules that you'
At the end of the tutorial, your project's file and directory structure should look similar to this: ```
-NodeConsoleApp/
+NodeDaemonApp/
├── bin │   ├── auth.js │   ├── fetch.js
In the code snippet above, we first create a configuration object (*msalConfig*)
## Add app registration details
-Create an environment file to store the app registration details that will be used when acquiring tokens. To do so, create a file named *.env* inside the root folder of the sample (*NodeConsoleApp*), and add the following code:
+Create an environment file to store the app registration details that will be used when acquiring tokens. To do so, create a file named *.env* inside the root folder of the sample (*NodeDaemonApp*), and add the following code:
``` # Credentials
Here, the `callApi` method is used to make an HTTP `GET` request against a prote
You've completed creation of the application and are now ready to test the app's functionality.
-Start the Node.js console app by running the following command from within the root of your project folder:
+Start the Node.js console daemon app by running the following command from within the root of your project folder:
```console node . --op getUsers
The scope to request for a client credential flow is the name of the resource fo
## Next steps
-If you'd like to dive deeper into Node.js console application development on the Microsoft identity platform, see our multi-part scenario series:
+If you'd like to dive deeper into Node.js daemon application development on the Microsoft identity platform, see our multi-part scenario series:
> [!div class="nextstepaction"] > [Scenario: Daemon application](scenario-daemon-overview.md)
active-directory Groups Assign Sensitivity Labels https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/groups-assign-sensitivity-labels.md
Previously updated : 06/23/2022 Last updated : 06/28/2023
After you enable this feature, the ΓÇ£classicΓÇ¥ classifications for groups will
### Sensitivity labels are not available for assignment on a group
-The sensitivity label option is only displayed for groups when all the following conditions are met:
+The sensitivity label option is only displayed for groups when all of the following conditions are met:
-1. Labels are published in the Microsoft Purview compliance portal for this Azure AD organization.
+1. The organization has an active Azure Active Directory Premium P1 license.
1. The feature is enabled, EnableMIPLabels is set to True in from the Azure AD PowerShell module.
+1. In addition, the sensitivity labels are published in the Microsoft Purview compliance portal for this Azure AD organization.
1. Labels are synchronized to Azure AD with the Execute-AzureAdLabelSync cmdlet in the Security & Compliance PowerShell module. It can take up to 24 hours after synchronization for the label to be available to Azure AD.
-1. The group is a Microsoft 365 group.
-1. The organization has an active Azure Active Directory Premium P1 license.
1. The [sensitivity label scope](/microsoft-365/compliance/sensitivity-labels?preserve-view=true&view=o365-worldwide#label-scopes) must be configured for Groups & Sites.
-3. The current signed-in user has sufficient privileges to assign labels. The user must be either a Global Administrator, Group Administrator, or the group owner.
-4. The current signed-in user must be within the scope of the [sensitivity label publishing policy](/microsoft-365/compliance/sensitivity-labels?preserve-view=true&view=o365-worldwide#what-label-policies-can-do)
+3. The group is a Microsoft 365 group.
+4. The current signed-in user:
+ 1. has sufficient privileges to assign sensitivity labels. The user must be a Global Administrator, Group Administrator, or the group owner
+ 1. and must be within the scope of the [sensitivity label publishing policy](/microsoft-365/compliance/sensitivity-labels?preserve-view=true&view=o365-worldwide#what-label-policies-can-do)
-Please make sure all the conditions are met in order to assign labels to a group.
+Please make sure all the conditions above are met in order to assign labels to a group.
### The label I want to assign is not in the list
active-directory Groups Dynamic Membership https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/groups-dynamic-membership.md
Previously updated : 08/18/2022 Last updated : 06/07/2023
dirSyncEnabled |true false |user.dirSyncEnabled -eq true
| department |Any string value or *null* | user.department -eq "value" | | displayName |Any string value | user.displayName -eq "value" | | employeeId |Any string value | user.employeeId -eq "value"<br>user.employeeId -ne *null* |
+| employeeHireDate (Preview) |Any DateTimeOffset value or keyword system.now | user.employeeHireDate -eq "value" |
| facsimileTelephoneNumber |Any string value or *null* | user.facsimileTelephoneNumber -eq "value" | | givenName |Any string value or *null* | user.givenName -eq "value" | | jobTitle |Any string value or *null* | user.jobTitle -eq "value" |
If you want to compare the value of a user attribute against multiple values, yo
``` user.department -in ["50001","50002","50003","50005","50006","50007","50008","50016","50020","50024","50038","50039","51100"] ```
+### Using the -le and -ge operators
+You can use the less than (-le) or greater than (-ge) operators when using the employeeHireDate attribute in dynamic group rules.
+Examples:
+
+```
+user.employeehiredate -ge system.now -plus p1d
+
+user.employeehiredate -le 2020-06-10T18:13:20Z
+
+```
### Using the -match operator + The **-match** operator is used for matching any regular expression. Examples: ```
active-directory Groups Self Service Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/groups-self-service-management.md
Previously updated : 01/09/2023 Last updated : 06/12/2023
Groups created in | Security group default behavior | Microsoft 365 group defaul
3. Set **Owners can manage group membership requests in the Access Panel** to **Yes**. + 4. Set **Restrict user ability to access groups features in the Access Panel** to **No**. 5. Set **Users can create security groups in Azure portals, API or PowerShell** to **Yes** or **No**.
active-directory How To Browserless App Dotnet Sign In Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-dotnet-sign-in-overview.md
Last updated 05/10/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my ASP.NET browserless app with Azure Active Directory (Azure AD) for customers tenant
active-directory How To Browserless App Dotnet Sign In Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-dotnet-sign-in-prepare-app.md
Last updated 05/10/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my ASP.NET browserless app with Azure Active Directory (Azure AD) for customers tenant
active-directory How To Browserless App Node Sign In Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-node-sign-in-overview.md
Last updated 05/09/2023--+ #Customer intent: As a dev, devops, I want to learn about how to build a Node.js browserless application to authenticate users with my Azure Active Directory (Azure AD) for customers tenant
Learn how to prepare your Azure AD for customers tenant:
> [!div class="nextstepaction"] > [Prepare your Azure AD for customers tenant >](how-to-browserless-app-node-sign-in-prepare-tenant.md)-
active-directory How To Browserless App Node Sign In Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-node-sign-in-prepare-app.md
Last updated 05/09/2023--+ #Customer intent: As a dev, devops, I want to learn about how to build a Node.js browserless application to authenticate users with my Azure Active Directory (Azure AD) for customers tenant
Learn how to add sign-in support to a Node.js browserless application:
> [!div class="nextstepaction"] > [Add sign in and sign out >](how-to-browserless-app-node-sign-in-sign-out.md)----
active-directory How To Browserless App Node Sign In Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-node-sign-in-prepare-tenant.md
Last updated 05/09/2023--+ #Customer intent: As a dev, devops, I want to learn about how to build a Node.js browserless application to authenticate users with my Azure Active Directory (Azure AD) for customers tenant
If you've already registered a browserless application in the Microsoft Entra ad
Prepare your app to sign in users in an Azure AD for customers tenant: > [!div class="nextstepaction"]
-> [Prepare your app to sign in users >](how-to-browserless-app-node-sign-in-prepare-app.md)
+> [Prepare your app to sign in users >](how-to-browserless-app-node-sign-in-prepare-app.md)
active-directory How To Browserless App Node Sign In Sign Out https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-browserless-app-node-sign-in-sign-out.md
Last updated 05/09/2023--+ #Customer intent: As a dev, devops, I want to learn about how to build a Node.js browserless application to authenticate users with my Azure Active Directory (Azure AD) for customers tenant
Now that we're done building the app, we can test it by following these steps:
Learn how to: -- [Enable password reset](how-to-enable-password-reset-customers.md).
+- [Enable password reset](how-to-enable-password-reset-customers.md).
active-directory How To Daemon Node Call Api Call Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-daemon-node-call-api-call-api.md
Last updated 05/22/2023-+ # Call an API in your Node.js daemon application - acquire an access token
If your daemon app and web API successfully run, you should find the data return
## Next steps
-Learn how to [Use client certificate instead of a secret for authentication in your Node.js confidential app](how-to-web-app-node-use-certificate.md).
+Learn how to [Use client certificate instead of a secret for authentication in your Node.js confidential app](how-to-web-app-node-use-certificate.md).
active-directory How To Daemon Node Call Api Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-daemon-node-call-api-overview.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to create a Node.js daemon application that acquires an access token, then calls an API protected by Azure Active Directory (Azure AD) for customers tenant
If you want to run a sample Node.js daemon application to get a feel of how thin
Next, learn how to prepare your Azure AD for customers tenant. > [!div class="nextstepaction"]
-> [Prepare your Azure AD for customers tenant for authorization >](how-to-daemon-node-call-api-prepare-tenant.md)
+> [Prepare your Azure AD for customers tenant for authorization >](how-to-daemon-node-call-api-prepare-tenant.md)
active-directory How To Daemon Node Call Api Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-daemon-node-call-api-prepare-app.md
Last updated 05/22/2023-+ # Call an API in your Node.js daemon application - prepare client app and web API
npm install axios yargs @azure/msal-node
Next, learn how to acquire an access token and call API: > [!div class="nextstepaction"]
-> [Acquire an access token and call API >](how-to-daemon-node-call-api-call-api.md)
+> [Acquire an access token and call API >](how-to-daemon-node-call-api-call-api.md)
active-directory How To Daemon Node Call Api Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-daemon-node-call-api-prepare-tenant.md
Last updated 05/22/2023-+ # Call an API in your Node.js daemon application - prepare your tenant
If you've already registered a client daemon application and a web API in the Mi
Next, learn how to prepare your daemon application and web API. > [!div class="nextstepaction"]
-> [Prepare your daemon application and web API >](how-to-daemon-node-call-api-prepare-app.md)
+> [Prepare your daemon application and web API >](how-to-daemon-node-call-api-prepare-app.md)
active-directory How To Desktop App Maui Sample Sign In https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-desktop-app-maui-sample-sign-in.md
Last updated 05/22/2023-+ #Customer intent: As a dev, devops, I want to learn about how to configure a sample .NET MAUI desktop app to sign in and sign out users with the Azure AD for customers tenant
active-directory How To Mobile App Maui Sample Sign In https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-mobile-app-maui-sample-sign-in.md
Last updated 05/22/2023-+ #Customer intent: As a dev, devops, I want to learn about how to configure a sample .NET MAUI mobile app to sign in and sign out users with Azure AD for customers tenant
active-directory How To Protect Web Api Dotnet Core Prepare Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-protect-web-api-dotnet-core-prepare-api.md
Last updated 05/10/2023--+ #Customer intent: As a dev, I want to configure my web API settings so as to protect it using Microsoft Entra.
active-directory How To Protect Web Api Dotnet Core Protect Endpoints https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-protect-web-api-dotnet-core-protect-endpoints.md
Last updated 05/10/2023--+ #Customer intent: As a dev, I want to secure endpoints of my web API registered in the customer's tenant using Microsoft Entra.
active-directory How To Protect Web Api Dotnet Core Test Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-protect-web-api-dotnet-core-test-api.md
Last updated 05/10/2023--+ #Customer intent: As a dev, I want to learn how to test my protected web API.
active-directory How To Single Page App Vanillajs Configure Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-single-page-app-vanillajs-configure-authentication.md
+ Last updated 06/09/2023- #Customer intent: As a developer, I want to learn how to configure vanilla JavaScript single-page app (SPA) to sign in and sign out users with my Azure Active Directory (AD) for customers tenant.
active-directory How To Single Page App Vanillajs Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-single-page-app-vanillajs-prepare-app.md
+ Last updated 06/09/2023- #Customer intent: As a developer, I want to learn how to configure vanilla JavaScript single-page app (SPA) to sign in and sign out users with my Azure AD for customers tenant.
In this code, the **app** variable is initialized with the **express** module an
## Next steps > [!div class="nextstepaction"]
-> [Configure SPA for authentication](how-to-single-page-app-vanillajs-configure-authentication.md)
+> [Configure SPA for authentication](how-to-single-page-app-vanillajs-configure-authentication.md)
active-directory How To Single Page App Vanillajs Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-single-page-app-vanillajs-prepare-tenant.md
+ Last updated 06/09/2023- #Customer intent: As a developer, I want to learn how to configure a vanilla JavaScript single-page app (SPA) to sign in and sign out users with my Azure Active Directory (AD) for customers tenant.
In this tutorial, you'll;
## Next steps > [!div class="nextstepaction"]
-> [Prepare your Vanilla JS SPA](how-to-single-page-app-vanillajs-prepare-app.md)
+> [Prepare your Vanilla JS SPA](how-to-single-page-app-vanillajs-prepare-app.md)
active-directory How To Single Page App Vanillajs Sign In Sign Out https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-single-page-app-vanillajs-sign-in-sign-out.md
+ Last updated 05/25/2023 #Customer intent: As a developer, I want to learn how to configure Vanilla JavaScript single-page app (SPA) to sign in and sign out users with my Azure Active Directory (AD) for customers tenant.
Now that all the required code snippets have been added, the application can be
## Next steps -- [Enable self-service password reset](./how-to-enable-password-reset-customers.md)
+- [Enable self-service password reset](./how-to-enable-password-reset-customers.md)
active-directory How To Web App Dotnet Sign In Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-dotnet-sign-in-prepare-app.md
+ Last updated 05/23/2023- #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my own ASP.NET web app with Azure Active Directory (Azure AD) for customers tenant.
The *Program.cs* needs to be modified to add authentication and authorization to
## Next steps > [!div class="nextstepaction"]
-> [Sign in and sign out](how-to-web-app-dotnet-sign-in-sign-out.md)
+> [Sign in and sign out](how-to-web-app-dotnet-sign-in-sign-out.md)
active-directory How To Web App Node Sign In Call Api Call Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-call-api-call-api.md
Last updated 05/22/2023-+ # Sign in users and call an API in a Node.js web application - call an API
You may want to:
- [Configure sign-in with Google](how-to-google-federation-customers.md) -- [Sign in users in your own Node.js web application](how-to-web-app-node-sign-in-overview.md)
+- [Sign in users in your own Node.js web application](how-to-web-app-node-sign-in-overview.md)
active-directory How To Web App Node Sign In Call Api Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-call-api-overview.md
Last updated 05/22/2023--+ #Customer intent: As a dev, I want to learn about how to Sign in users and call an API in your own Node.js web application by using Azure Active Directory (Azure AD) for customers tenant.
If you want to run a sample Node.js web application that calls a sample web API
Next, learn how to prepare your Azure AD for customers tenant. > [!div class="nextstepaction"]
-> [Prepare your Azure AD for customers tenant for authentication >](how-to-web-app-node-sign-in-call-api-prepare-tenant.md)
+> [Prepare your Azure AD for customers tenant for authentication >](how-to-web-app-node-sign-in-call-api-prepare-tenant.md)
active-directory How To Web App Node Sign In Call Api Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-call-api-prepare-app.md
Last updated 05/22/2023-+ # Sign in users and call an API a Node.js web application - prepare client app and API
active-directory How To Web App Node Sign In Call Api Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-call-api-prepare-tenant.md
Last updated 05/22/2023-+ # Sign in users and call an API in a Node.js web application - prepare your tenant
active-directory How To Web App Node Sign In Call Api Sign In Acquire Access Token https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-call-api-sign-in-acquire-access-token.md
Last updated 05/22/2023-+ # Sign in users and call an API in a Node.js web application - acquire an access token
The `getToken` method in the `AuthProvider` class shows how to request for an ac
## Next steps > [!div class="nextstepaction"]
-> [Call an API >](how-to-web-app-node-sign-in-call-api-call-api.md)
+> [Call an API >](how-to-web-app-node-sign-in-call-api-call-api.md)
active-directory How To Web App Node Sign In Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-overview.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my own Node.js web app with Azure Active Directory (Azure AD) for customers tenant
active-directory How To Web App Node Sign In Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-prepare-app.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my own Node.js web app with Azure Active Directory (Azure AD) for customers tenant
active-directory How To Web App Node Sign In Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-prepare-tenant.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my own Node.js web app with Azure Active Directory (Azure AD) for customers tenant
If you've already registered a web application in the Microsoft Entra admin cent
## Next steps > [!div class="nextstepaction"]
-> [Start building your Node.js web app >](how-to-web-app-node-sign-in-prepare-app.md)
+> [Start building your Node.js web app >](how-to-web-app-node-sign-in-prepare-app.md)
active-directory How To Web App Node Sign In Sign In Out https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-sign-in-sign-in-out.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to learn about how to enable authentication in my own Node.js web app with Azure Active Directory (Azure AD) for customers tenant
Learn how to:
- [Configure sign-in with Google](how-to-google-federation-customers.md). -- [Use client certificate for authentication in your Node.js web app instead of a client secret](how-to-web-app-node-use-certificate.md).
+- [Use client certificate for authentication in your Node.js web app instead of a client secret](how-to-web-app-node-use-certificate.md).
active-directory How To Web App Node Use Certificate https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-web-app-node-use-certificate.md
Last updated 05/22/2023--+ #Customer intent: As a dev, devops, I want to learn Learn how to use client certificate instead of secrets for authentication in my Node.js web app
You can use your existing certificate directly from Azure Key Vault:
Learn how to: -- [Sign in users and call an API in your own Node.js web application](how-to-web-app-node-sign-in-call-api-overview.md).
+- [Sign in users and call an API in your own Node.js web application](how-to-web-app-node-sign-in-call-api-overview.md).
active-directory Tutorial Mobile App Maui Sign In Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/tutorial-mobile-app-maui-sign-in-prepare-app.md
+
+ Title: "Tutorial: Create a .NET MAUI shell app, add MSAL, and include an image resource"
+description: This tutorial demonstrates how to create a .NET MAUI shell app, add MSALClient, and include an image resource.
+++++++ Last updated : 06/05/2023++
+# Tutorial: Create a .NET MAUI shell app
+
+This tutorial demonstrates how to create a .NET Multi-platform App UI (.NET MAUI) shell app. You'll also add a custom Microsoft Authentication Library (MSAL) client helper to initialize the MSAL SDK, install required libraries and include an image resource.
+
+In this tutorial, you learn how to:
+
+> [!div class="checklist"]
+>
+> - Create a .NET MAUI shell app.
+> - Add MSAL SDK support using MSAL helper classes.
+> - Install required packages.
+> - Add image resource.
+
+## Prerequisites
+
+- [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet/7.0)
+- [Visual Studio 2022](https://aka.ms/vsdownloads) with the MAUI workload installed:
+ - [Instructions for Windows](/dotnet/maui/get-started/installation?tabs=vswin)
+ - [Instructions for macOS](/dotnet/maui/get-started/installation?tabs=vsmac)
+
+## Create .NET MAUI shell app
+
+1. In the start window of Visual Studio 2022, select **Create a new project**.
+1. In the **Create a new project** window, select **MAUI** in the All project types drop-down, select the **.NET MAUI App** template, and select **Next**.
+1. In the **Configure your new project** window, **Project name** must be set to _SignInMaui_. Update the **Solution name** to _sign-in-maui_ and select **Next**.
+1. In the **Additional information** window, choose **.NET 7.0** and select **Create**.
+
+Wait for the project to be created and its dependencies to be restored.
+
+## Add MSAL SDK support using MSAL helper classes
+
+MSAL client enables developers to acquire security tokens from Azure Active Directory (Azure AD) for customers tenant to authenticate and access secured web APIs. In this section, you download files that makes up MSALClient.
+
+Download the following files:
+
+- [AzureAdConfig.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/AzureAdConfig.cs) - This file gets and sets the Azure AD app unique identifiers from your app configuration file.
+- [DownStreamApiConfig.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/DownStreamApiConfig.cs) - This file gets and sets the scopes for Microsoft Graph call.
+- [DownstreamApiHelper.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/DownstreamApiHelper.cs) - This file handles the exceptions that occur when calling the downstream API.
+- [Exception.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/Exception.cs) - This file offers a few extension method related to exception throwing and handling.
+- [IdentityLogger.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/IdentityLogger.cs) - This file handles shows how to use MSAL.NET logging.
+- [MSALClientHelper.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/MSALClientHelper.cs) - This file contains methods to initialize MSAL SDK.
+- [PlatformConfig.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/PlatformConfig.cs) - This file contains methods to handle specific platform. For example, Windows.
+- [PublicClientSingleton.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/PublicClientSingleton.cs) - This file contains a singleton implementation to wrap the MSALClient and associated classes to support static initialization model for platforms.
+- [WindowsHelper.cs](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/MSALClient/WindowsHelper.cs) - This file contains methods to retrieve window handle.
+
+> [!IMPORTANT]
+> Don't skip downloading the MSALClient files, they're required to complete this tutorial.
+
+### Move the MSALClient files with Visual Studio
+
+1. In the **Solution Explorer** pane, right-click on the **SignInMaui** project and select **Add** > **New Folder**. Name the folder _MSALClient_.
+1. Right-click on **MSALClient** folder, select **Add** > **Existing Item...**.
+1. Navigate to the folder that contains the downloaded MSALClient files.
+1. Select all of the MSALClient files you downloaded, then select **Add**
+
+## Install required packages
+
+You need to install the following packages:
+
+- _Microsoft.Identity.Client_ - This package contains the binaries of the Microsoft Authentication Library for .NET (MSAL.NET).
+- _Microsoft.Extensions.Configuration.Json_ - This package contains JSON configuration provider implementation for Microsoft.Extensions.Configuration.
+- _Microsoft.Extensions.Configuration.Binder_ - This package contains functionality to bind an object to data in configuration providers for Microsoft.Extensions.Configuration.
+- _Microsoft.Extensions.Configuration.Abstractions_ - This package contains abstractions of key-value pair based configuration.
+- _Microsoft.Identity.Client.Extensions.Msal_ - This package contains extensions to Microsoft Authentication Library for .NET (MSAL.NET).
+
+### NuGet Package Manager
+
+To use the **NuGet Package Manager** to install the _Microsoft.Identity.Client_ package in Visual Studio, follow these steps:
+
+1. Select **Tools** > **NuGet Package Manager** > **Manage NuGet Packages for Solution...**.
+1. From the **Browse** tab, search for _Microsoft.Identity.Client_.
+1. Select **Microsoft.Identity.Client** in the list.
+1. Select **SignInMaui** in the **Project** list pane.
+1. Select **Install**.
+1. If you're prompted to verify the installation, select **OK**.
+
+Repeat the process to install the remaining required packages.
+
+## Add image resource
+
+In this section, you download an image that you use in your app to enhance how users interact with it.
+
+Download the following image:
+
+- [Icon: Azure AD](https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial/blob/main/1-Authentication/2-sign-in-maui/Resources/Images/azure_active_directory.png) - This image is used as icon in the main page.
+
+### Move the image with Visual Studio
+
+1. In the **Solution Explorer** pane of Visual Studio, expand the **Resources** folder, which reveals the **Images** folder.
+1. Right-click on **Images** and select **Add** > **Existing Item...**.
+1. Navigate to the folder that contains the downloaded images.
+1. Change the filter to file type filter to **Image Files**.
+1. Select the image you downloaded.
+1. Select **Add**.
+
+## Next steps
+
+> [!div class="nextstepaction"]
+> [Tutorial: Sign in users in .NET MAUI shell app](tutorial-mobile-app-maui-sign-in-sign-out.md)
active-directory Tutorial Mobile App Maui Sign In Prepare Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/tutorial-mobile-app-maui-sign-in-prepare-tenant.md
+
+ Title: "Tutorial: Register and configure .NET MAUI mobile app in a customer tenant"
+description: The tutorials provide a step-by-step guide on how to register and configure a .NET MAUI app with Azure AD for the customer's tenant.
+++++++ Last updated : 06/05/2023++
+# Tutorial: Register and configure .NET MAUI mobile app in a customer tenant
+
+This three-part tutorial series demonstrates how to build a .NET Multi-platform App UI (MAUI) mobile app that authenticates using Azure Active Directory (Azure AD) for customers tenant.
+
+The tutorial aims to demonstrate how to create a .NET MAUI app that uses cross-platform code while enhancing the default application class with Android platform-specific code.
+
+Part one involves the registration of the .NET MAUI mobile app within the customer's tenant. In part two, you create the .NET MAUI mobile app, while in part three, you implement the sign-in and sign-out code to enable secure authentication.
+
+In this tutorial, you learn how to:
+
+> [!div class="checklist"]
+>
+> - Register a .NET MAUI mobile app in customers tenant.
+> - Create a sign-in and sign-out user flow in customers tenant.
+> - Associate your .NET MAUI mobile app with the user flow.
+
+## Prerequisites
+
+- Azure AD for customers tenant. If you don't already have one, <a href="https://aka.ms/ciam-free-trial?wt.mc_id=ciamcustomertenantfreetrial_linkclick_content_cnl" target="_blank">sign up for a free trial</a>.
+
+## Register .NET MAUI mobile app
++
+## Grant API permissions
++
+## Create a user flow
++
+## Associate the .NET MAUI mobile app with the user flow
++
+## Next steps
+
+> [!div class="nextstepaction"]
+> [Tutorial: Create a .NET MAUI shell app](tutorial-mobile-app-maui-sign-in-prepare-app.md)
active-directory Tutorial Mobile App Maui Sign In Sign Out https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/tutorial-mobile-app-maui-sign-in-sign-out.md
+
+ Title: "Tutorial: Sign in users in .NET MAUI shell app"
+description: This tutorial demonstrates how to add sign-in and sign-out code in .NET Multi-platform App UI (.NET MAUI) and how to run the app on the Android platform.
+++++++ Last updated : 06/05/2023++
+# Tutorial: Sign in users in .NET MAUI shell app
+
+This tutorial demonstrates how to add sign-in and sign-out code in .NET Multi-platform App UI (.NET MAUI) and run the shell app on the Android platform.
+
+In this tutorial, you learn how to:
+
+> [!div class="checklist"]
+>
+> - Add sign-in and sign-out code.
+> - Modify the app Shell.
+> - Add platform-specific code.
+> - Add app settings.
+> - Run and test .NET MAUI shell app.
+
+## Prerequisites
+
+- [Tutorial: Create a .NET MAUI shell app, add MSALClient, and include an image resource](tutorial-mobile-app-maui-sign-in-prepare-app.md)
+- [Tutorial: Register and configure .NET MAUI mobile app in a customer tenant](tutorial-mobile-app-maui-sign-in-prepare-tenant.md)
+
+## Add sign-in and sign-out code
+
+The user interface (UI) of a .NET MAUI app is constructed of objects that map to the native controls of each target platform. The main control groups used to create the UI of a .NET MAUI app are pages, layouts, and views.
+
+### Add main view page
+
+The next steps will organize our code so that the `main view` is defined.
+
+1. Delete _MainPage.xaml_ and _MainPage.xaml.cs_ from your project, they're no longer needed. In the **Solution Explorer** pane, find the entry for **MainPage.xaml**, right-click it and select **Delete**.
+1. Right-click on the **SignInMaui** project and select **Add** > **New Folder**. Name the folder **Views**.
+1. Right-click on the **Views**.
+1. Select **Add** > **New Item...**.
+1. Select **.NET MAUI** in the template list.
+1. Select the **.NET MAUI ContentPage (XAML)** template. Name the file **MainView.xaml**.
+1. Select **Add**.
+1. The _MainView.xaml_ file will open in a new document tab, displaying all of the XAML markup that represents the UI of the page. Replace the XAML markup with the following markup:
+
+ :::code language="xaml" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Views/MainView.xaml" :::
+
+1. Save the file.
+
+ Let's break down the key parts of the XAML controls placed on the page:
+
+ - `<ContentPage>` is the root object for the MainView class.
+ - `<VerticalStackLayout>` is the child object of the ContentPage. This layout control arranges its children vertically, one after the other.
+ - `<Image>` displays an image, in this case it's using the _azure_active_directory.png_ that you downloaded earlier.
+ - `<Label>` controls display text.
+ - `<Button>` can be pressed by the user, which raises the `Clicked` event. You can run code in response to the `Clicked` event.
+ - `Clicked="OnSignInClicked"` the `Clicked` event of the button is assigned to the `OnSignInClicked` event handler, which will be defined in the code-behind file. You'll create this code in the next step.
+
+#### Handle the OnSignInClicked event
+
+The next step is to add the code for the button's `Clicked` event.
+
+1. In the **Solution Explorer** pane of Visual Studio, expand the **MainView.xaml** file to reveal its code-behind file **MainView.xaml.cs**. Open the **MainView.xaml.cs** and replace the content of the file with following code:
+
+ :::code language="csharp" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Views/MainView.xaml.cs" :::
+
+ The `MainView` class is a content page responsible for displaying the main view of the app. In the constructor, it retrieves the cached user account using the `MSALClientHelper` from the `PublicClientSingleton` instance and enables the sign-in button, if no cached user account is found.
+
+ When the sign-in button is clicked, it calls the `AcquireTokenSilentAsync` method to acquire a token silently and navigates to the `claimsview` page using the `Shell.Current.GoToAsync` method. Additionally, the `OnBackButtonPressed` method is overridden to return true, indicating that the back button is disabled for this view.
+
+### Add claims view page
+
+The next steps will organize the code so that `ClaimsView` page is defined. The page will display the user's claims found in the ID token.
+
+1. In the **Solution Explorer** pane of Visual Studio, right-click on the **Views**.
+1. Select **Add** > **New Item...**.
+1. Select **.NET MAUI** in the template list.
+1. Select the **.NET MAUI ContentPage (XAML)** template. Name the file **ClaimsView.xaml**.
+1. Select **Add**.
+1. The _ClaimsView.xaml_ file will open in a new document tab, displaying all of the XAML markup that represents the UI of the page. Replace the XAML markup with the following markup:
+
+ :::code language="xaml" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Views/ClaimsView.xaml" :::
+
+ This XAML markup code represents the UI layout for a claim view in a .NET MAUI app. It starts by defining the `ContentPage` with a title and disabling the back button behavior.
+
+ Inside a `VerticalStackLayout`, there are several `Label` elements displaying static text, followed by a `ListView` named `Claims` that binds to a collection called `IdTokenClaims` to display the claims found in the ID token. Each claim is rendered within a `ViewCell` using a `DataTemplate` and displayed as a centered `Label` within a Grid.
+
+ Lastly, there's a `Sign Out` button centered at the bottom of the layout, which triggers the `SignOutButton_Clicked` event handler when clicked.
+
+#### Handle the ClaimsView data
+
+The next step is to add the code to handle `ClaimsView` data.
+
+1. In the **Solution Explorer** pane of Visual Studio, expand the **ClaimsView.xaml** file to reveal its code-behind file **ClaimsView.xaml.cs**. Open the **ClaimsView.xaml.cs** and replace the content of the file with following code:
+
+ :::code language="csharp" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Views/ClaimsView.xaml.cs" :::
+
+ The _ClaimsView.xaml.cs_ code represents the code-behind for a claim view in a .NET MAUI app. It starts by importing the necessary namespaces and defining the `ClaimsView` class, which extends `ContentPage`. The `IdTokenClaims` property is an enumerable of strings, initially set to a single string indicating no claims found.
+
+ The `ClaimsView` constructor sets the binding context to the current instance, initializes the view components, and calls the `SetViewDataAsync` method asynchronously. The `SetViewDataAsync` method attempts to acquire a token silently, retrieves the claims from the authentication result, and sets the `IdTokenClaims` property to display them in the `ListView` named `Claims`. If a `MsalUiRequiredException` occurs, indicating that user interaction is needed for authentication, the app navigates to the claims view.
+
+ The `OnBackButtonPressed` method overrides the back button behavior to always return true, preventing the user from going back from this view. The `SignOutButton_Clicked` event handler signs the user out using the `PublicClientSingleton` instance, and upon completion, navigates to the `main view`.
+
+## Modify the app Shell
+
+The `AppShell` class defines an app's visual hierarchy, the XAML markup used in creating the UI of the app. Update the `AppShell` to let it know about the `Views`.
+
+1. Double-click the `AppShell.xaml` file in the **Solution Explorer** pane to open the XAML editor. Replace the XAML markup with the following code:
+
+ :::code language="xaml" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/AppShell.xaml" :::
+
+ The XAML code defines an `AppShell` class that disables the flyout behavior and sets the main content to a `ShellContent` element with a title `Home` and a content template pointing to the `MainView` class.
+
+1. In the **Solution Explorer** pane of Visual Studio, expand the **AppShell.xaml** file to reveal its code-behind file **AppShell.xaml.cs**. Open the **AppShell.xaml.cs** and replace the content of the file with following code:
+
+ :::code language="csharp" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/AppShell.xaml.cs" :::
+
+ You update the `AppShell.xaml.cs` file to include the necessary route registrations for the `MainView` and `ClaimsView`. By calling the `InitializeComponent()` method, you ensure the initialization of the `AppShell` class. The `RegisterRoute()` method associate the `mainview` and `claimsview` routes with their respective view types, `MainView` and `ClaimsView`.
+
+## Add platform-specific code
+
+A .NET MAUI app project contains a Platforms folder, with each child folder representing a platform that .NET MAUI can target. To provide Android application-specific behavior to supplement the default application class, you follow these steps:
+
+1. Double-click `Platforms/Android/AndroidManifest.xml` file in the **Solution Explorer** pane to open the xml editor. Update the following properties:
+
+ - Set **Application name** to _MAUI CIAM_.
+ - Set **Package name** to _SignInMaui.Droid_.
+ - Set **Minimum Android version** to _Android 5.0 (API level 21)_.
+
+1. Double-click `Platforms/Android/MainActivity.cs` file in the **Solution Explorer** pane to open the csharp editor. Replace the content of the file with following code:
+
+ :::code language="csharp" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Platforms/Android/MainActivity.cs" :::
+
+ Let's break down the key parts of the code you have added:
+
+ - The necessary `using` statements are included at the top.
+ - The `MainActivity` class is defined, inheriting from `MauiAppCompatActivity`, which is the base class for the Android platform in .NET MAUI.
+ - The [Activity] attribute is applied to the `MainActivity` class, specifying various settings for the Android activity.
+ - `Theme = "@style/Maui.SplashTheme"` sets the splash theme for the activity.
+ - `MainLauncher = true` designates this activity as the main entry point of the application.
+ - `ConfigurationChanges` specifies the configuration changes that the activity can handle, such as _screen size_, _orientation_, _UI mode_, _screen layout_, _smallest screen size_, and _density_.
+ - `OnCreate` method is overridden to provide custom logic when the activity is being created.
+ - `base.OnCreate(savedInstanceState)` calls the base implementation of the method.
+ - `PlatformConfig.Instance.RedirectUri` is set to a dynamically generated value based on `PublicClientSingleton.Instance.MSALClientHelper.AzureAdConfig.ClientId`. It configures the redirect URI for the MSAL client.
+ - `PlatformConfig.Instance.ParentWindow` is set to the current activity instance, which specifies the parent window for authentication-related operations.
+ - `PublicClientSingleton.Instance.MSALClientHelper.InitializePublicClientAppAsync()` initializes the MSAL client app asynchronously using a helper method from a singleton instance called `MSALClientHelper`. The `Task.Run` is used to execute the initialization on a background thread, and `.Result` is used to synchronously wait for the task to complete.
+ - `OnActivityResult` method is overridden to handle the result of an activity launched by the current activity.
+ - `base.OnActivityResult(requestCode, resultCode, data)` calls the base implementation of the method.
+ - `AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data)` sets the authentication continuation event arguments based on the received request code, result code, and intent data. This is used to continue the authentication flow after an external activity returns a result.
+
+1. In the **Solution Explorer** pane of Visual Studio, select **Platforms**.
+1. Right-click on the **Android** folder > **Add** > **New Item...**.
+1. Select **C# Items** > **Class**. Name the file `MsalActivity.cs`.
+1. Replace the content of `MsalActivity.cs` file with the following code:
+
+ :::code language="csharp" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/Platforms/Android/MsalActivity.cs" :::
+
+ Let's break down the key parts of the code you have added:
+
+ - `MsalActivity` class is declared within the `MauiAppBasic.Platforms.Android.Resources` namespace. The class inherits from the `BrowserTabActivity` class, indicating that it extends its functionality.
+ - The class is decorated with the `[Activity(Exported = true)]` attribute, which signifies that the activity is exported and can be accessed by other methods.
+ - An intent filter is specified using the "[IntentFilter(...)]" attribute. It configures the activity to intercept the `ActionView` intent.
+ - The intent filter is set to handle the `ActionView` intent with the specified `DataScheme` (`msalEnter_the_Application_Id_Here`) and `DataHost` ("auth"). This configuration allows the activity to handle the authentication process by intercepting and processing the `ActionView` intent. Replace `Enter_the_Application_Id_Here` with the **Application (client) ID** of the app you registered earlier.
+
+## Add app settings
+
+Settings allow the separation of data that configures the behavior of an app from the code, allowing the behavior to be changed without rebuilding the app. The `MauiAppBuilder` provides `ConfigurationManager` to configure settings in our .NET MAUI app. Let's add the `appsettings.json` file as an `EmbeddedResource`.
+
+To create `appsettings.json`, follow these steps:
+
+1. In the **Solution Explorer** pane of Visual Studio, right-click on the **SignInMaui** project > **Add** > **New Item...**.
+1. Select **Web** > **JavaScript JSON Configuration File**. Name the file `appsettings.json`.
+1. Select **Add**.
+1. Select **appsettings.json**
+1. In the **Properties** pane, set **Build Action** to **Embedded resource**.
+1. In the **Properties** pane, set **Copy to Output Directory** to **Copy always**.
+1. Replace the content of `appsettings.json` file with the following code:
+
+ :::code language="json" source="~/ms-identity-ciam-dotnet-tutorial/1-Authentication/2-sign-in-maui/appsettings.json" :::
+
+1. In the `appsettings.json`, find the placeholder:
+
+ 1. `Enter_the_Tenant_Subdomain_Here` and replace it with the Directory (tenant) subdomain. For example, if your tenant primary domain is `contoso.onmicrosoft.com`, use `contoso`. If you don't have your tenant name, learn how to [read your tenant details](how-to-create-customer-tenant-portal.md#get-the-customer-tenant-details).
+ 1. `Enter_the_Application_Id_Here` and replace it with the Application (client) ID of the app you registered earlier.
+
+## Run and test .NET MAUI mobile app
+
+.NET MAUI apps are designed to run on multiple operating systems and devices. You'll need to select which target you want to test and debug your app with.
+
+Set the **Debug Target** in the Visual Studio toolbar to the device you want to debug and test with. The following steps demonstrate setting the **Debug Target** to _Android_:
+
+1. Select **Debug Target** drop-down.
+1. Select **Android Emulators**.
+1. Select emulator device.
+
+Run the app by pressing _F5_ or select the _play button_ at the top of Visual Studio.
+
+1. You can now test the sample .NET MAUI Android app. After you run the app, the Android app window appears in an emulator:
+
+ :::image type="content" source="media/how-to-mobile-app-maui-sample-sign-in/maui-android-sign-in.jpg" alt-text="Screenshot of the sign-in button in the Android application.":::
+
+1. On the Android window that appears, select the **Sign In** button. A browser window opens, and you're prompted to sign in.
+
+ :::image type="content" source="media/how-to-mobile-app-maui-sample-sign-in/maui-android-sign-in-prompt.jpg" alt-text="Screenshot of user prompt to enter credential in Android application.":::
+
+ During the sign in process, you're prompted to grant various permissions (to allow the application to access your data). Upon successful sign in and consent, the application screen displays the main page.
+
+ :::image type="content" source="media/how-to-mobile-app-maui-sample-sign-in/maui-android-after-sign-in.png" alt-text="Screenshot of the main page in the Android application after signing in.":::
+
+## Next Steps
+
+- [Customize the default branding](how-to-customize-branding-customers.md).
+- [Configure sign-in with Google](how-to-google-federation-customers.md).
active-directory Tenant Restrictions V2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/tenant-restrictions-v2.md
Last updated 05/17/2023
-+
active-directory Whats New Sovereign Clouds Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-sovereign-clouds-archive.md
The primary [What's new in sovereign clouds release notes](whats-new-sovereign-c
+## November 2022
+
+### General Availability - Windows Hello for Business, cloud Kerberos trust deployment
+++
+**Type:** New feature
+**Service category:** Authentications (Logins)
+**Product capability:** User Authentication
+
+We're excited to announce the general availability of hybrid cloud Kerberos trust, a new Windows Hello for Business deployment model to enable a password-less sign-in experience. With this new model, weΓÇÖve made Windows Hello for Business easier to deploy than the existing key trust and certificate trust deployment models by removing the need for maintaining complicated public key infrastructure (PKI), and Azure Active Directory (AD) Connect synchronization wait times. For more information, see: [Hybrid Cloud Kerberos Trust Deployment](/windows/security/identity-protection/hello-for-business/hello-hybrid-cloud-kerberos-trust).
+++
+### General Availability - Expression builder with Application Provisioning
+
+**Type:** Changed feature
+**Service category:** Provisioning
+**Product capability:** Outbound to SaaS Applications
+
+
+Accidental deletion of users in your apps or in your on-premises directory could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability. When a provisioning job would cause a spike in deletions, it will first pause and provide you with visibility into the potential deletions. You can then accept or reject the deletions and have time to update the jobΓÇÖs scope if necessary. For more information, see [Understand how expression builder in Application Provisioning works](../app-provisioning/expression-builder.md).
+
+++
+### General Availability - SSPR writeback is now available for disconnected forests using Azure AD Connect Cloud sync
+++
+**Type:** New feature
+**Service category:** Azure AD Connect Cloud Sync
+**Product capability:** Identity Lifecycle Management
+
+Azure AD Connect Cloud Sync Password writeback now provides customers the ability to synchronize Azure AD password changes made in the cloud to an on-premises directory in real time. This can be accomplished using the lightweight Azure AD cloud provisioning agent. For more information, see: [Tutorial: Enable cloud sync self-service password reset writeback to an on-premises environment](../authentication/tutorial-enable-cloud-sync-sspr-writeback.md).
+++
+### General Availability - Prevent accidental deletions
+++
+**Type:** New feature
+**Service category:** Provisioning
+**Product capability:** Outbound to SaaS Applications
+++
+Accidental deletion of users in any system could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability as part of the Azure AD provisioning service. When the number of deletions to be processed in a single provisioning cycle spikes above a customer defined threshold, the Azure AD provisioning service pauses, provide you with visibility into the potential deletions, and allow you to accept or reject the deletions. This functionality has historically been available for Azure AD Connect, and Azure AD Connect Cloud Sync. It's now available across the various provisioning flows, including both HR-driven provisioning and application provisioning.
+
+For more information, see: [Enable accidental deletions prevention in the Azure AD provisioning service](../app-provisioning/accidental-deletions.md)
+++
+### General Availability - Create group in administrative unit
+
+**Type:** New feature
+**Service category:** RBAC
+**Product capability:** AuthZ/Access Delegation
+
+
+Groups Administrators and other roles scoped to an administrative unit can now create groups within the administrative unit. Previously, creating a new group in administrative unit required a two-step process to first create the group, then add the group to the administrative unit. The second step required a Privileged Role Administrator or Global Administrator. Now, groups can be directly created in an administrative unit by anyone with appropriate roles scoped to the administrative unit, and this no longer requires a higher privilege admin role. For more information, see: [Add users, groups, or devices to an administrative unit](../roles/admin-units-members-add.md).
+
++
+### General Availability - Number matching for Microsoft Authenticator notifications
+++
+**Type:** New feature
+**Service category:** Microsoft Authenticator App
+**Product capability:** User Authentication
+
+To prevent accidental notification approvals, admins can now require users to enter the number displayed on the sign-in screen when approving an MFA notification in the Microsoft Authenticator app. We've also refreshed the Azure portal admin UX and Microsoft Graph APIs to make it easier for customers to manage Authenticator app feature roll-outs. As part of this update we have also added the highly requested ability for admins to exclude user groups from each feature.
+
+The number matching feature greatly up-levels the security posture of the Microsoft Authenticator app and protects organizations from MFA fatigue attacks. We highly encourage our customers to adopt this feature applying the rollout controls we have built. Number Matching will begin to be enabled for all users of the Microsoft Authenticator app starting 27th of February 2023.
++
+For more information, see: [How to use number matching in multifactor authentication (MFA) notifications - Authentication methods policy](../authentication/how-to-mfa-number-match.md).
+++
+### General Availability - Additional context in Microsoft Authenticator notifications
+++
+**Type:** New feature
+**Service category:** Microsoft Authenticator App
+**Product capability:** User Authentication
+
+Reduce accidental approvals by showing users additional context in Microsoft Authenticator app notifications. Customers can enhance notifications with the following:
+
+- Application Context: This feature will show users which application they're signing into.
+- Geographic Location Context: This feature will show users their sign-in location based on the IP address of the device they're signing into.
+
+The feature is available for both MFA and Password-less Phone Sign-in notifications and greatly increases the security posture of the Microsoft Authenticator app. We've also refreshed the Azure portal Admin UX and Microsoft Graph APIs to make it easier for customers to manage Authenticator app feature roll-outs. As part of this update, we've also added the highly requested ability for admins to exclude user groups from certain features.
+
+We highly encourage our customers to adopt these critical security features to reduce accidental approvals of Authenticator notifications by end users.
++
+For more information, see: [How to use additional context in Microsoft Authenticator notifications - Authentication methods policy](../authentication/how-to-mfa-additional-context.md).
+++++ ## October 2022 ### General Availability - Azure AD certificate-based authentication
active-directory Whats New Sovereign Clouds https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/whats-new-sovereign-clouds.md
Azure AD receives improvements on an ongoing basis. To stay up to date with the
This page updates monthly, so revisit it regularly. If you're looking for items older than six months, you can find them in [Archive for What's new in Sovereign Clouds](whats-new-archive.md).
+## May 2023
+
+### General Availability - Admins can now restrict users from self-service accessing their BitLocker keys
+++
+**Type:** New feature
+**Service category:** Device Access Management
+**Product capability:** User Management
+
+Admins can now restrict their users from self-service accessing their BitLocker keys through the Devices Settings page. Turning on this capability hides the BitLocker key(s) of all non-admin users. This helps to control BitLocker access management at the admin level. For more information, see: [Restrict member users' default permissions](users-default-permissions.md#restrict-member-users-default-permissions).
+++
+### General Availability - Admins can restrict their users from creating tenants
+
+**Type:** New feature
+**Service category:** User Access Management
+**Product capability:** User Management
+
+The ability for users to create tenants from the Manage Tenant overview has been present in Azure AD since almost the beginning of the Azure portal. This new capability in the User Settings pane allows admins to restrict their users from being able to create new tenants. There's also a new [Tenant Creator](../roles/permissions-reference.md#tenant-creator) role to allow specific users to create tenants. For more information, see [Default user permissions](../fundamentals/users-default-permissions.md#restrict-member-users-default-permissions).
+++
+### General Availability - My Apps new app discovery view
+
+**Type:** Changed feature
+**Service category:** My Apps
+**Product capability:** End User Experiences
+
+My Apps has been updated to a new app discovery view that is more accessible and responsive. With the new app discovery view, users can:
+
+- Customize their view by choosing between different layouts
+- Launch apps faster
+- Drag and drop apps to reorder and move
+- Add sites directly from the home screen
+
+For more information, see [My Apps portal overview](../manage-apps/myapps-overview.md).
+++
+### General Availability - Number Matching for Microsoft Authenticator notifications
+
+**Type:** Plan for Change
+**Service category:** Microsoft Authenticator App
+**Product capability:** User Authentication
+
+Microsoft Authenticator appΓÇÖs number matching feature has been Generally Available since Nov 2022! If you haven't already used the rollout controls (via Azure portal Admin UX and MSGraph APIs) to smoothly deploy number matching for users of Microsoft Authenticator push notifications, we highly encourage you to do so. We previously announced that we'll remove the admin controls and enforce the number match experience tenant-wide for all users of Microsoft Authenticator push notifications starting February 27, 2023. After listening to customers, we'll extend the availability of the rollout controls for a few more weeks. Organizations can continue to use the existing rollout controls until May 8, 2023, to deploy number matching in their organizations. Microsoft services will start enforcing the number matching experience for all users of Microsoft Authenticator push notifications after May 8, 2023. We'll also remove the rollout controls for number matching after that date.
+
+If customers donΓÇÖt enable number match for all Microsoft Authenticator push notifications prior to May 8, 2023, Authenticator users may experience inconsistent sign-ins while the services are rolling out this change. To ensure consistent behavior for all users, we highly recommend you enable number match for Microsoft Authenticator push notifications in advance.
+
+For more information, see: [How to use number matching in multifactor authentication (MFA) notifications - Authentication methods policy](../authentication/how-to-mfa-number-match.md)
+++
+### General Availability - System preferred MFA method
+
+**Type:** Changed feature
+**Service category:** Authentications (Logins)
+**Product capability:** Identity Security & Protection
+
+Currently, organizations and users rely on a range of authentication methods, each offering varying degrees of security. While Multifactor Authentication (MFA) is crucial, some MFA methods are more secure than others. Despite having access to more secure MFA options, users frequently choose less secure methods for various reasons.
+
+To address this challenge, we're introducing a new system-preferred authentication method for MFA. When users sign in, the system will determine and display the most secure MFA method that the user has registered. This prompts users to switch from the default method to the most secure option. While users may still choose a different MFA method, they'll always be prompted to use the most secure method first for every session that requires MFA. For more information, see: [System-preferred multifactor authentication - Authentication methods policy](../authentication/concept-system-preferred-multifactor-authentication.md).
+++
+### General Availability - Azure Active Directory Identity Protection Leaked credentials detection B2C and AlternateLoginID support
+
+**Type:** Changed feature
+**Service category:** Identity Protection
+**Product capability:** Identity Security & Protection
+
+Azure Active Directory Identity Protection "Leaked Credentials" detection is now enabled in Azure Active Directory B2C. In addition, the detection now fully supports leaked credential matching based on AlternateLoginID, providing customers with more robust and comprehensive protection.
++++ ## April 2023 ### General Availability - Azure Active Directory Domain
Azure AD now supports claims transformations on multi-valued attributes and can
**Service category:** Access Reviews **Product capability:** Identity Security & Protection
-Post-authentication anomalous activity detection for workload identities. This detection focuses specifically on detection of post authenticated anomalous behavior performed by a workload identity (service principal). Post-authentication behavior is assessed for anomalies based on an action and/or sequence of actions occurring for the account. Based on the scoring of anomalies identified, the offline detection may score the account as low, medium, or high risk. The risk allocation from the offline detection will be available within the Risky workload identities reporting blade. A new detection type identified as Anomalous service principal activity appears in filter options. For more information, see: [Securing workload identities](../identity-protection/concept-workload-identity-risk.md).
+Post-authentication anomalous activity detection for workload identities. This detection focuses specifically on detection of post authenticated anomalous behavior performed by a workload identity (service principal). Post-authentication behavior is assessed for anomalies based on an action and/or sequence of actions occurring for the account. Based on the scoring of anomalies identified, the offline detection may score the account as low, medium, or high risk. The risk allocation from the offline detection will be available within the Risky workload identities reporting settings. A new detection type identified as Anomalous service principal activity appears in filter options. For more information, see: [Securing workload identities](../identity-protection/concept-workload-identity-risk.md).
We're excited to announce the general availability of hybrid cloud Kerberos trus
-## November 2022
-
-### General Availability - Windows Hello for Business, cloud Kerberos trust deployment
---
-**Type:** New feature
-**Service category:** Authentications (Logins)
-**Product capability:** User Authentication
-
-We're excited to announce the general availability of hybrid cloud Kerberos trust, a new Windows Hello for Business deployment model to enable a password-less sign-in experience. With this new model, weΓÇÖve made Windows Hello for Business easier to deploy than the existing key trust and certificate trust deployment models by removing the need for maintaining complicated public key infrastructure (PKI), and Azure Active Directory (AD) Connect synchronization wait times. For more information, see: [Hybrid Cloud Kerberos Trust Deployment](/windows/security/identity-protection/hello-for-business/hello-hybrid-cloud-kerberos-trust).
---
-### General Availability - Expression builder with Application Provisioning
-
-**Type:** Changed feature
-**Service category:** Provisioning
-**Product capability:** Outbound to SaaS Applications
-
-
-Accidental deletion of users in your apps or in your on-premises directory could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability. When a provisioning job would cause a spike in deletions, it will first pause and provide you with visibility into the potential deletions. You can then accept or reject the deletions and have time to update the jobΓÇÖs scope if necessary. For more information, see [Understand how expression builder in Application Provisioning works](../app-provisioning/expression-builder.md).
-
---
-### General Availability - SSPR writeback is now available for disconnected forests using Azure AD Connect Cloud sync
---
-**Type:** New feature
-**Service category:** Azure AD Connect Cloud Sync
-**Product capability:** Identity Lifecycle Management
-
-Azure AD Connect Cloud Sync Password writeback now provides customers the ability to synchronize Azure AD password changes made in the cloud to an on-premises directory in real time. This can be accomplished using the lightweight Azure AD cloud provisioning agent. For more information, see: [Tutorial: Enable cloud sync self-service password reset writeback to an on-premises environment](../authentication/tutorial-enable-cloud-sync-sspr-writeback.md).
---
-### General Availability - Prevent accidental deletions
---
-**Type:** New feature
-**Service category:** Provisioning
-**Product capability:** Outbound to SaaS Applications
---
-Accidental deletion of users in any system could be disastrous. WeΓÇÖre excited to announce the general availability of the accidental deletions prevention capability as part of the Azure AD provisioning service. When the number of deletions to be processed in a single provisioning cycle spikes above a customer defined threshold, the Azure AD provisioning service pauses, provide you with visibility into the potential deletions, and allow you to accept or reject the deletions. This functionality has historically been available for Azure AD Connect, and Azure AD Connect Cloud Sync. It's now available across the various provisioning flows, including both HR-driven provisioning and application provisioning.
-
-For more information, see: [Enable accidental deletions prevention in the Azure AD provisioning service](../app-provisioning/accidental-deletions.md)
---
-### General Availability - Create group in administrative unit
-
-**Type:** New feature
-**Service category:** RBAC
-**Product capability:** AuthZ/Access Delegation
-
-
-Groups Administrators and other roles scoped to an administrative unit can now create groups within the administrative unit. Previously, creating a new group in administrative unit required a two-step process to first create the group, then add the group to the administrative unit. The second step required a Privileged Role Administrator or Global Administrator. Now, groups can be directly created in an administrative unit by anyone with appropriate roles scoped to the administrative unit, and this no longer requires a higher privilege admin role. For more information, see: [Add users, groups, or devices to an administrative unit](../roles/admin-units-members-add.md).
-
--
-### General Availability - Number matching for Microsoft Authenticator notifications
---
-**Type:** New feature
-**Service category:** Microsoft Authenticator App
-**Product capability:** User Authentication
-
-To prevent accidental notification approvals, admins can now require users to enter the number displayed on the sign-in screen when approving an MFA notification in the Microsoft Authenticator app. We've also refreshed the Azure portal admin UX and Microsoft Graph APIs to make it easier for customers to manage Authenticator app feature roll-outs. As part of this update we have also added the highly requested ability for admins to exclude user groups from each feature.
-
-The number matching feature greatly up-levels the security posture of the Microsoft Authenticator app and protects organizations from MFA fatigue attacks. We highly encourage our customers to adopt this feature applying the rollout controls we have built. Number Matching will begin to be enabled for all users of the Microsoft Authenticator app starting 27th of February 2023.
--
-For more information, see: [How to use number matching in multifactor authentication (MFA) notifications - Authentication methods policy](../authentication/how-to-mfa-number-match.md).
---
-### General Availability - Additional context in Microsoft Authenticator notifications
---
-**Type:** New feature
-**Service category:** Microsoft Authenticator App
-**Product capability:** User Authentication
-
-Reduce accidental approvals by showing users additional context in Microsoft Authenticator app notifications. Customers can enhance notifications with the following:
--- Application Context: This feature will show users which application they're signing into.-- Geographic Location Context: This feature will show users their sign-in location based on the IP address of the device they're signing into. -
-The feature is available for both MFA and Password-less Phone Sign-in notifications and greatly increases the security posture of the Microsoft Authenticator app. We've also refreshed the Azure portal Admin UX and Microsoft Graph APIs to make it easier for customers to manage Authenticator app feature roll-outs. As part of this update, we've also added the highly requested ability for admins to exclude user groups from certain features.
-
-We highly encourage our customers to adopt these critical security features to reduce accidental approvals of Authenticator notifications by end users.
--
-For more information, see: [How to use additional context in Microsoft Authenticator notifications - Authentication methods policy](../authentication/how-to-mfa-additional-context.md).
--- ## Next steps <!-- Add a context sentence for the following links --> - [What's new in Azure Active Directory?](whats-new.md)
active-directory Access Reviews Downloadable Review History https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/access-reviews-downloadable-review-history.md
Title: Create and manage downloadable access review history report
description: Using Microsoft Entra access reviews, you can download a review history for access reviews in your organization. documentationcenter: ''-+ na Previously updated : 02/18/2022- Last updated : 06/28/2023+ # Create and manage downloadable access review history report in Microsoft Entra access reviews
-With access reviews, you can create a downloadable review history to help your organization gain more insight. The report pulls the decisions that were taken by reviewers when a report is created. These reports can be constructed to include specific access reviews, for a specific time frame, and can be filtered to include different review types and review results.
+With access reviews, you can create a downloadable review history to help your organization gain more insight. The report pulls the decisions that are taken by reviewers when a report is created. These reports can be constructed to include specific access reviews, for a specific time frame, and can be filtered to include different review types and review results.
## Who can access and request review history
Once a review history report is created, you can download it. All reports that a
## What is included in a review history report?
-The reports provide details on a per-user basis showing the following:
+The reports provide details on a per-user basis showing the following information:
| Element name | Description | | | |
-| AccessReviewId | Review object id |
-| AccessReviewSeriesId | Object id of the review series, if the review is an instance of a recurring review. If a one-time review, the value will be am empty GUID. |
+| AccessReviewId | Review object ID |
+| AccessReviewSeriesId | Object ID of the review series, if the review is an instance of a recurring review. If the review is one time, the value is am empty GUID. |
| ReviewType | Review types include group, application, Azure AD role, Azure role, and access package| |ResourceDisplayName | Display Name of the resource being reviewed |
-| ResourceId | Id of the resource being reviewed |
+| ResourceId | ID of the resource being reviewed |
| ReviewName | Name of the review | | CreatedDateTime | Creation datetime of the review | | ReviewStartDate | Start date of the review
The reports provide details on a per-user basis showing the following:
| OwnerId | Reviewer owner ID | | OwnerName | Reviewer owner name | | OwnerUPN | Reviewer owner User Principal Name |
-| PrincipalId | Id of the principal being reviewed |
+| PrincipalId | ID of the principal being reviewed |
| PrincipalName | Name of the principal being reviewed | | PrincipalUPN | Principal Name of the user being reviewed | | PrincipalType | Type of the principal. Options include user, group, and service principal | | ReviewDate | Date of the review | | ReviewResult | Review results include Deny, Approve, and Not reviewed | |Justification | Justification for review result provided by reviewer |
-| ReviewerId | Reviewer Id |
+| ReviewerId | Reviewer ID |
| ReviewerName | Reviewer Name | | ReviewerUPN | Reviewer User Principal Name | | ReviewerEmailAddress | Reviewer email address |
The reports provide details on a per-user basis showing the following:
| AppliedByEmailAddress | Email address of the user who applied the review result | | AppliedDate | Date when the review result were applied | | AccessRecommendation | System recommendations include Approve, Deny, and No Info |
-|SubmissionResult | Review result submission status include applied, and not applied. |
+|SubmissionResult | Review result submission statuses include applied, and not applied. |
## Next steps - [Review access to groups or applications](perform-access-review.md)
active-directory Access Reviews External Users https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/access-reviews-external-users.md
Title: Use Azure AD Identity Governance to review and remove external users who
description: Use Access Reviews to extend of remove access from members of partner organizations documentationcenter: ''-+ na Previously updated : 09/06/2020- Last updated : 06/28/2023+ # Use Azure Active Directory (Azure AD) Identity Governance to review and remove external users who no longer have resource access
-This article describes features and methods that allow you to pinpoint and select external identities so that you can review them and remove them from Azure AD if they are no longer needed. The cloud makes it easier than ever to collaborate with internal or external users. Embracing Office 365, organizations start to see the proliferation of external identities (including guests), as users work together on data, documents, or digital workspaces such as Teams. Organizations need to balance, enabling collaboration and meeting security and governance requirements. Part of these efforts should include evaluating and cleaning out external users, who were invited for collaboration into your tenant, that originating from partner organizations, and removing them from your Azure AD when they are no longer needed.
+This article describes features and methods that allow you to pinpoint and select external identities so that you can review them and remove them from Azure AD if they're no longer needed. The cloud makes it easier than ever to collaborate with internal or external users. Embracing Office 365, organizations start to see the proliferation of external identities (including guests), as users work together on data, documents, or digital workspaces such as Teams. Organizations need to balance, enabling collaboration and meeting security and governance requirements. Part of these efforts should include evaluating and cleaning out external users, who were invited for collaboration into your tenant, that originating from partner organizations, and removing them from your Azure AD when they're no longer needed.
>[!NOTE] >A valid Azure AD Premium P2, Enterprise Mobility + Security E5 paid, or trial license is required to use Azure AD access reviews. For more information, see [Azure Active Directory editions](../fundamentals/active-directory-whatis.md). ## Why review users from external organizations in your tenant?
-In most organizations, end-users initiate the process of inviting business partners and vendors for collaboration. The need to collaborate drives organizations to provide resource owners and end users with a way to evaluate and attest external users regularly. Often the process of onboarding new collaboration partners is planned and accounted for, but with many collaborations not having a clear end date, it is not always obvious when a user no longer needs access. Also, identity life-cycle management drives enterprises to keep Azure AD clean and remove users who no longer need access to the organizationΓÇÖs resources. Keeping only the relevant identity references for partners and vendors in the directory helps reduce the risk of your employees, inadvertently selecting and granting access to external users that should have been removed. This document walks you through several options that range from recommended proactive suggestions to reactive and cleanup activities to govern external identities.
+In most organizations, end-users initiate the process of inviting business partners and vendors for collaboration. The need to collaborate drives organizations to provide resource owners and end users with a way to evaluate and attest external users regularly. Often the process of onboarding new collaboration partners is planned and accounted for, but with many collaborations not having a clear end date, it isn't always obvious when a user no longer needs access. Also, identity life-cycle management drives enterprises to keep Azure AD clean and remove users who no longer need access to the organizationΓÇÖs resources. Keeping only the relevant identity references for partners and vendors in the directory helps reduce the risk of your employees, inadvertently selecting and granting access to external users that should have been removed. This document walks you through several options that range from recommended proactive suggestions to reactive and cleanup activities to govern external identities.
## Use Entitlement Management to grant and revoke access
-Entitlement management features enable the [automated lifecycle of external identities](entitlement-management-external-users.md#manage-the-lifecycle-of-external-users) with access to resources. By establishing processes and procedures to manage access through Entitlement Management, and publishing resources through Access Packages, keeping track of external user access to resources becomes a far less complicated problem to solve. When managing access through [Entitlement Management Access Packages](entitlement-management-overview.md) in Azure AD, your organization can centrally define and manage access for your users, as well as users from partner organizations alike. Entitlement Management uses approvals and assignments of Access Packages to track where external users have requested and been assigned access. Should an external user lose all of their assignments, Entitlement Management can remove these external users automatically from the tenant.
+Entitlement management features enable the [automated lifecycle of external identities](entitlement-management-external-users.md#manage-the-lifecycle-of-external-users) with access to resources. By establishing processes and procedures to manage access through Entitlement Management, and publishing resources through Access Packages, keeping track of external user access to resources becomes a far less complicated problem to solve. When managing access through [Entitlement Management Access Packages](entitlement-management-overview.md) in Azure AD, your organization can centrally define and manage access for your users, and users from partner organizations alike. Entitlement Management uses approvals and assignments of Access Packages to track where external users have requested and been assigned access. Should an external user lose all of their assignments, Entitlement Management can remove these external users automatically from the tenant.
## Find guests not invited through Entitlement Management
-When employees are authorized to collaborate with external users, they may invite any number of users from outside your organization. Looking for and grouping external partners into company-aligned dynamic groups and reviewing them may not be feasible, as there may be too many different individual companies to review, or there is no owner or sponsor for the organization. Microsoft provides a sample PowerShell script that can help you analyze the use of external identities in a tenant. The script enumerates external identities and categorizes them. The script can help you identify and clean up external identities that may no longer be required. As part of the scriptΓÇÖs output, the script sample supports automated creation of security groups that contain the identified group-less external partners ΓÇô for further analysis and use with Azure AD Access Reviews.
+When employees are authorized to collaborate with external users, they may invite any number of users from outside your organization. Looking for and grouping external partners into company-aligned dynamic groups and reviewing them may not be feasible, as there may be too many different individual companies to review, or there's no owner or sponsor for the organization. Microsoft provides a sample PowerShell script that can help you analyze the use of external identities in a tenant. The script enumerates external identities and categorizes them. The script can help you identify and clean up external identities that may no longer be required. As part of the scriptΓÇÖs output, the script sample supports automated creation of security groups that contain the identified group-less external partners ΓÇô for further analysis and use with Azure AD Access Reviews.
The script is available on [GitHub](https://github.com/microsoft/access-reviews-samples/tree/master/ExternalIdentityUse). After the script finishes running, it generates an HTML output file that outlines external identities that: - No longer have any group membership in the tenant
The output also includes the individual domains for each of these external ident
## Review resources used by external identities
-If you have external identities using resources such as Teams or other applications not yet governed by Entitlement Management, you may want to review access to these resources regularly, too. Azure AD [Access Reviews](create-access-review.md) gives you the ability to review external identitiesΓÇÖ access by either letting the resource owner,external identities themselves, or another delegated person you trust attest to whether continued access it required. Access Reviews target a resource and create a review activity scoped to either Everyone who has access to the resource or Guest users only. The reviewer then will see the resulting list of users they need to review ΓÇô either all users, including employees of your organization or external identities only.
+If you have external identities using resources such as Teams or other applications not yet governed by Entitlement Management, you may want to review access to these resources regularly, too. Azure AD [Access Reviews](create-access-review.md) gives you the ability to review external identitiesΓÇÖ access by either letting the resource owner,external identities themselves, or another delegated person you trust attest to whether continued access it required. Access Reviews target a resource and create a review activity scoped to either Everyone who has access to the resource or Guest users only. The reviewer then sees the resulting list of users they need to review ΓÇô either all users, including employees of your organization or external identities only.
![using a group to review access](media/access-reviews-external-users/group-members.png)
Establishing a resource owner-driven review culture helps govern access for exte
## Create Access Reviews for external identities
-Users that no longer have access to any resources in your tenant can be removed if they no longer work with your organization. Before you block and delete these external identities, you may want to reach out to these external users and make sure you have not overlooked a project or standing access they have that they still need. When you create a group that contains all external identities as members that you found have no access to any resources in your tenant, you can use Access Reviews to have all externals self-attest to whether they still need or have access ΓÇô or will still need access in the future. As part of the review, the review creator in Access Reviews can use the **Require reason on approval** function to require external users to provide a justification for continued access, through which you can learn where and how they still need access in your tenant. Also, you can enable the setting **Additional content for reviewer email** feature, to let users know that they will be losing access if they donΓÇÖt respond and, should they still need access, a justification is required. If you want to go ahead and let Access Reviews **disable and delete** external identities, should they fail to respond or provide a valid reason for continued access, you can use the Disable and delete option, as described in the next section.
+Users that no longer have access to any resources in your tenant can be removed if they no longer work with your organization. Before you block and delete these external identities, you may want to reach out to these external users and make sure you haven't overlooked a project, or standing access they have that they still need. When you create a group that contains all external identities as members that you found have no access to any resources in your tenant, you can use Access Reviews to have all externals self-attest to whether they still need or have access ΓÇô or will still need access in the future. As part of the review, the review creator in Access Reviews can use the **Require reason on approval** function to require external users to provide a justification for continued access, through which you can learn where and how they still need access in your tenant. Also, you can enable the setting **Additional content for reviewer email** feature, to let users know that they'll be losing access if they donΓÇÖt respond and, should they still need access, a justification is required. If you want to go ahead and let Access Reviews **disable and delete** external identities, should they fail to respond or provide a valid reason for continued access, you can use the Disable and delete option, as described in the next section.
![limiting the scope of the review to guest users only](media/access-reviews-external-users/guest-users-only.png)
-When the review finishes, the **Results** page shows an overview of the response given by every external identity. You can choose to apply results automatically and let Access Reviews disable and delete them. Alternatively, you can look through the responses given and decide whether you want to remove a userΓÇÖs access or follow-up with them and get additional information before making a decision. If some users still have access to resources that you have not reviewed yet, you can use the review as part of your discovery and enrich your next review and attestation cycle.
+When the review finishes, the **Results** page shows an overview of the response given by every external identity. You can choose to apply results automatically and let Access Reviews disable and delete them. Alternatively, you can look through the responses given and decide whether you want to remove a userΓÇÖs access or follow-up with them and get additional information before making a decision. If some users still have access to resources that you haven't reviewed yet, you can use the review as part of your discovery and enrich your next review and attestation cycle.
## Disable and delete external identities with Azure AD Access Reviews
-In addition to the option of removing unwanted external identities from resources such as groups or applications, Azure AD Access Reviews can block external identities from signing-in to your tenant and delete the external identities from your tenant after 30 days. Once you select **Block user from signing-in for 30 days, then remove user from the tenant**, the review will stay in the ΓÇ£applyingΓÇ¥ state for 30 days. During this period, settings, results, reviewers or Audit logs under the current review won't be viewable or configurable.
+In addition to the option of removing unwanted external identities from resources such as groups or applications, Azure AD Access Reviews can block external identities from signing-in to your tenant and delete the external identities from your tenant after 30 days. Once you select **Block user from signing-in for 30 days, then remove user from the tenant**, the review stays in the ΓÇ£applyingΓÇ¥ state for 30 days. During this period, settings, results, reviewers or Audit logs under the current review won't be viewable or configurable.
![upon completion settings](media/access-reviews-external-users/upon-completion-settings.png) When creating a new Access Review, choose the **Select Teams + groups** option and limit the scope to **Guest users only**. In the ΓÇ£Upon completion settingsΓÇ¥ section, for **Action to apply on denied users** you can define **Block users from signing-in for 30 days, then remove user from the tenant**.
-This setting allows you to identify, block, and delete external identities from your Azure AD tenant. External identities who are reviewed and denied continued access by the reviewer will be blocked and deleted, irrespective of the resource access or group membership they have. This setting is best used as a last step after you have validated that the external users in-review no longer carries resource access and can safely be removed from your tenant or if you want to make sure they are removed, irrespective of their standing access. The ΓÇ£Disable and deleteΓÇ¥ feature blocks the external user first, taking away their ability to signing into your tenant and accessing resources. Resource access is not revoked in this stage, and in case you wanted to reinstantiate the external user, their ability to log on can be reconfigured. Upon no further action, a blocked external identity will be deleted from the directory after 30 days, removing the account as well as their access.
+This setting allows you to identify, block, and delete external identities from your Azure AD tenant. External identities who are reviewed and denied continued access by the reviewer will be blocked and deleted, irrespective of the resource access or group membership they have. This setting is best used as a last step after you have validated that the external users in-review no longer carries resource access and can safely be removed from your tenant or if you want to make sure they're removed, irrespective of their standing access. The ΓÇ£Disable and deleteΓÇ¥ feature blocks the external user first, taking away their ability to signing into your tenant and accessing resources. Resource access isn't revoked in this stage, and in case you wanted to reinstantiate the external user, their ability to sign in can be reconfigured. Upon no further action, a blocked external identity will be deleted from the directory after 30 days, removing the account and their access.
## Next steps
active-directory Access Reviews Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/access-reviews-overview.md
Title: What are access reviews? - Microsoft Entra
description: Using access reviews, you can control group membership and application access to meet governance, risk management, and compliance initiatives in your organization. documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 1/10/2023- Last updated : 06/28/2023+
Azure AD enables you to collaborate with users from inside your organization and
## When should you use access reviews? - **Too many users in privileged roles:** It's a good idea to check how many users have administrative access, how many of them are Global Administrators, and if there are any invited guests or partners that haven't been removed after being assigned to do an administrative task. You can recertify the role assignment users in [Azure AD roles](../privileged-identity-management/pim-perform-azure-ad-roles-and-resource-roles-review.md?toc=%2fazure%2factive-directory%2fgovernance%2ftoc.json) such as Global Administrators, or [Azure resources roles](../privileged-identity-management/pim-perform-azure-ad-roles-and-resource-roles-review.md?toc=%2fazure%2factive-directory%2fgovernance%2ftoc.json) such as User Access Administrator in the [Microsoft Entra Privileged Identity Management (PIM)](../privileged-identity-management/pim-configure.md) experience.-- **When automation is not possible:** You can create rules for dynamic membership on security groups or Microsoft 365 Groups, but what if the HR data is not in Azure AD or if users still need access after leaving the group to train their replacement? You can then create a review on that group to ensure those who still need access should have continued access.
+- **When automation is not possible:** You can create rules for dynamic membership on security groups or Microsoft 365 Groups, but what if the HR data isn't in Azure AD or if users still need access after leaving the group to train their replacement? You can then create a review on that group to ensure those who still need access should have continued access.
- **When a group is used for a new purpose:** If you have a group that is going to be synced to Azure AD, or if you plan to enable the application Salesforce for everyone in the Sales team group, it would be useful to ask the group owner to review the group membership prior to the group being used in a different risk content. - **Business critical data access:** for certain resources, such as [business critical applications](identity-governance-applications-prepare.md), it might be required as part of compliance processes to ask people to regularly reconfirm and give a justification on why they need continued access. - **To maintain a policy's exception list:** In an ideal world, all users would follow the access policies to secure access to your organization's resources. However, sometimes there are business cases that require you to make exceptions. As the IT admin, you can manage this task, avoid oversight of policy exceptions, and provide auditors with proof that these exceptions are reviewed regularly. - **Ask group owners to confirm they still need guests in their groups:** Employee access might be automated with some on premises Identity and Access Management (IAM), but not invited guests. If a group gives guests access to business sensitive content, then it's the group owner's responsibility to confirm the guests still have a legitimate business need for access.-- **Have reviews recur periodically:** You can set up recurring access reviews of users at set frequencies such as weekly, monthly, quarterly or annually, and the reviewers will be notified at the start of each review. Reviewers can approve or deny access with a friendly interface and with the help of smart recommendations.
+- **Have reviews recur periodically:** You can set up recurring access reviews of users at set frequencies such as weekly, monthly, quarterly or annually, and the reviewers are notified at the start of each review. Reviewers can approve or deny access with a friendly interface and with the help of smart recommendations.
>[!NOTE] >If you are ready to try Access reviews take a look at [Create an access review of groups or applications](create-access-review.md)
active-directory Complete Access Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/complete-access-review.md
Title: Complete an access review of groups & applications
description: Learn how to complete an access review of group members or application access in Microsoft Entra access reviews. documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 02/18/2022- Last updated : 06/28/2023+
For more information, see [License requirements](access-reviews-overview.md#lice
## View the status of an access review
-You can track the progress of access reviews as they are completed.
+You can track the progress of access reviews as they're completed.
1. Sign in to the Azure portal and open the [Identity Governance page](https://portal.azure.com/#blade/Microsoft_AAD_ERM/DashboardBlade/).
-1. In the left menu, click **Access reviews**.
+1. In the left menu, select **Access reviews**.
-1. In the list, click an access review.
+1. In the list, select an access review.
- On the **Overview** page, you can see the progress of the **Current** instance of the review. If there is not an active instance open at the time, you will see information on the previous instance. No access rights are changed in the directory until the review is completed.
+ On the **Overview** page, you can see the progress of the **Current** instance of the review. If there isn't an active instance open at the time, you'll see information on the previous instance. No access rights are changed in the directory until the review is completed.
![Review of All company group](./media/complete-access-review/all-company-group.png)
You can track the progress of access reviews as they are completed.
![Review guest access across Microsoft 365 groups](./media/complete-access-review/all-company-group-results.png)
- If you are viewing an access review that reviews guest access across Microsoft 365 groups, the Overview blade lists each group in the review.
+ If you're viewing an access review that reviews guest access across Microsoft 365 groups, the Overview blade lists each group in the review.
![review guest access across Microsoft 365 groups](./media/complete-access-review/review-guest-access-across-365-groups.png)
- Click on a group to see the progress of the review on that group, also to Stop, Reset, Apply, and Delete.
+ Select on a group to see the progress of the review on that group, also to Stop, Reset, Apply, and Delete.
![review guest access across Microsoft 365 groups in detail](./media/complete-access-review/progress-group-review.png)
-1. If you want to stop an access review before it has reached the scheduled end date, click the **Stop** button.
+1. If you want to stop an access review before it has reached the scheduled end date, select the **Stop** button.
When you stop a review, reviewers will no longer be able to give responses. You can't restart a review after it's stopped.
To see the status and stage of a multi-stage access review:
1. Select the multi-stage review you want to check the status of or see what stage it's in.
-1. Click **Results** on the left nav menu under **Current**.
+1. Select **Results** on the left nav menu under **Current**.
-1. Once you are on the results page, under **Status** it will tell you which stage the multi-stage review is in. The next stage of the review won't become active until the duration specified during the access review setup has passed.
+1. Once you are on the results page, under **Status** it tells you which stage the multi-stage review is in. The next stage of the review won't become active until the duration specified during the access review setup has passed.
-1. If a decision has been made, but the review duration for this stage has not expired yet, you can select **Stop current stage** button on the results page. This will trigger the next stage of review.
+1. If a decision has been made, but the review duration for this stage hasn't expired yet, you can select **Stop current stage** button on the results page. This will trigger the next stage of review.
## Retrieve the results
-To view the results for a review, click the **Results** page. To view just a user's access, in the Search box, type the display name or user principal name of a user whose access was reviewed.
+To view the results for a review, select the **Results** page. To view just a user's access, in the Search box, type the display name or user principal name of a user whose access was reviewed.
![Retrieve results for an access review](./media/complete-access-review/retrieve-results.png)
-To view the results of a completed instance of an access review that is recurring, click **Review history**, then select the specific instance from the list of completed access review instances, based on the instance's start and end date. The results of this instance can be obtained from the **Results** page. Recurring access reviews allow you to have a constant picture of access to resources that may need to be updated more often than one-time access reviews.
+To view the results of a completed instance of an access review that is recurring, select **Review history**, then select the specific instance from the list of completed access review instances, based on the instance's start and end date. The results of this instance can be obtained from the **Results** page. Recurring access reviews allow you to have a constant picture of access to resources that may need to be updated more often than one-time access reviews.
-To retrieve the results of an access review, both in-progress or completed, click the **Download** button. The resulting CSV file can be viewed in Excel or in other programs that open UTF-8 encoded CSV files.
+To retrieve the results of an access review, both in-progress or completed, select the **Download** button. The resulting CSV file can be viewed in Excel or in other programs that open UTF-8 encoded CSV files.
## Apply the changes
-If **Auto apply results to resource** was enabled based on your selections in **Upon completion settings**, auto-apply will be executed once a review instance completes, or earlier if you manually stop the review.
+If **Auto apply results to resource** was enabled based on your selections in **Upon completion settings**, autoapply will be executed once a review instance completes, or earlier if you manually stop the review.
-If **Auto apply results to resource** wasn't enabled for the review, navigate to **Review History** under **Series** after the review duration ends or the review was stopped early, and click on the instance of the review youΓÇÖd like to Apply.
+If **Auto apply results to resource** wasn't enabled for the review, navigate to **Review History** under **Series** after the review duration ends or the review was stopped early, and select on the instance of the review youΓÇÖd like to Apply.
![Apply access review changes](./media/complete-access-review/apply-changes.png)
-Click **Apply** to manually apply the changes. If a user's access was denied in the review, when you click **Apply**, Azure AD removes their membership or application assignment.
+Select **Apply** to manually apply the changes. If a user's access was denied in the review, when you select **Apply**, Azure AD removes their membership or application assignment.
![Apply access review changes button](./media/complete-access-review/apply-changes-button.png)
-The status of the review will change from **Completed** through intermediate states such as **Applying** and finally to state **Result applied**. You should expect to see denied users, if any, being removed from the group membership or application assignment in a few minutes.
+The status of the review changes from **Completed** through intermediate states such as **Applying** and finally to state **Result applied**. You should expect to see denied users, if any, being removed from the group membership or application assignment in a few minutes.
Manually or automatically applying results doesn't have an effect on a group that originates in an on-premises directory. If you want to change a group that originates on-premises, download the results and apply those changes to the representation of the group in that directory.
Manually or automatically applying results doesn't have an effect on a group tha
On review creation, the creator can choose between two options for denied guest users in an access review. - Denied guest users can have their access to the resource removed. This is the default.
+ - The denied guest user can be blocked from signing in for 30 days, then deleted from the tenant. During the 30-day period the guest user is able to be restored access to the tenant by an administrator. After the 30-day period is completed, if the guest user hasn't had access to the resource granted to them again, they'll be removed from the tenant permanently. In addition, using the Azure portal, a Global Administrator can explicitly [permanently delete a recently deleted user](../fundamentals/active-directory-users-restore.md) before that time period is reached. Once a user has been permanently deleted, the data about that guest user will be removed from active access reviews. Audit information about deleted users remains in the audit log.
### Actions taken on denied B2B direct connect users
-Denied B2B direct connect users and teams will lose access to all shared channels in the Team.
+
+Denied B2B direct connect users and teams lose access to all shared channels in the Team.
## Next steps
active-directory Conditional Access Exclusion https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/conditional-access-exclusion.md
Title: Manage users excluded from Conditional Access policies
description: Learn how to use access reviews to manage users that have been excluded from Conditional Access policies documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 12/27/2022- Last updated : 06/28/2023+
active-directory Create Access Review Pim For Groups https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/create-access-review-pim-for-groups.md
Title: Create an access review of PIM for Groups (preview) description: Learn how to create an access review of PIM for Groups in Azure Active Directory. -+ editor: markwahl-msft
na Previously updated : 09/14/2022- Last updated : 06/28/2023+ # Create an access review of PIM for Groups in Azure AD (preview)
-This article describes how to create one or more access reviews for PIM for Groups, which will include the active members of the group as well as the eligible members. Reviews can be performed on both active members of the group, who are active at the time the review is created, and the eligible members of the group.
+This article describes how to create one or more access reviews for PIM for Groups, which will include the active members of the group and the eligible members. Reviews can be performed on both active members of the group, who are active at the time the review is created, and the eligible members of the group.
## Prerequisites
For more information, see [License requirements](access-reviews-overview.md#lice
- **Everyone**: This option scopes the access review to all user objects associated with the resource.
-7. If you are conducting group membership review, you can create access reviews for only the inactive users in the group. In the *Users scope* section, check the box next to **Inactive users (on tenant level)**. If you check the box, the scope of the review will focus on inactive users only, those who have not signed in either interactively or non-interactively to the tenant. Then, specify **Days inactive** with a number of days inactive up to 730 days (two years). Users in the group inactive for the specified number of days will be the only users in the review.
+7. If you're conducting group membership review, you can create access reviews for only the inactive users in the group. In the *Users scope* section, check the box next to **Inactive users (on tenant level)**. If you check the box, the scope of the review focuses on inactive users only, those who haven't signed in either interactively or non-interactively to the tenant. Then, specify **Days inactive** with many days inactive up to 730 days (two years). Users in the group inactive for the specified number of days are the only users in the review.
> [!NOTE] > Recently created users are not affected when configuring the inactivity time. The Access Review will check if a user has been created in the time frame configured and disregard users who havenΓÇÖt existed for at least that amount of time. For example, if you set the inactivity time as 90 days and a guest user was created or invited less than 90 days ago, the guest user will not be in scope of the Access Review. This ensures that a user can sign in at least once before being removed.
active-directory Create Access Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/create-access-review.md
Title: Create an access review of groups and applications description: Learn how to create an access review of group members or application access in Azure Active Directory. -+ editor: markwahl-msft
na Previously updated : 3/23/2023- Last updated : 06/28/2023+
This article describes how to create one or more access reviews for group member
For more information, see [License requirements](access-reviews-overview.md#license-requirements).
-If you are reviewing access to an application, then before creating the review, see the article on how to [prepare for an access review of users' access to an application](access-reviews-application-preparation.md) to ensure the application is integrated with Azure AD.
+If you're reviewing access to an application, then before creating the review, see the article on how to [prepare for an access review of users' access to an application](access-reviews-application-preparation.md) to ensure the application is integrated with Azure AD.
## Create a single-stage access review
If you are reviewing access to an application, then before creating the review,
> [!NOTE] > If you selected **All Microsoft 365 groups with guest users**, your only option is to review **Guest users only**.
-8. Or if you are conducting group membership review, you can create access reviews for only the inactive users in the group. In the *Users scope* section, check the box next to **Inactive users (on tenant level)**. If you check the box, the scope of the review will focus on inactive users only, those who have not signed in either interactively or non-interactively to the tenant. Then, specify **Days inactive** with a number of days inactive up to 730 days (two years). Users in the group inactive for the specified number of days will be the only users in the review.
+8. Or if you're conducting group membership review, you can create access reviews for only the inactive users in the group. In the *Users scope* section, check the box next to **Inactive users (on tenant level)**. If you check the box, the scope of the review focuses on inactive users only, those who haven't signed in either interactively or non-interactively to the tenant. Then, specify **Days inactive** with many days inactive up to 730 days (two years). Users in the group inactive for the specified number of days are the only users in the review.
> [!NOTE] > Recently created users are not affected when configuring the inactivity time. The Access Review will check if a user has been created in the time frame configured and disregard users who havenΓÇÖt existed for at least that amount of time. For example, if you set the inactivity time as 90 days and a guest user was created or invited less than 90 days ago, the guest user will not be in scope of the Access Review. This ensures that a user can sign in at least once before being removed.
If you are reviewing access to an application, then before creating the review,
### Next: Reviews
-1. You can create a single-stage or multi-stage review. For a single stage review continue here. To create a multi-stage access review, follow the steps in [Create a multi-stage access review](#create-a-multi-stage-access-review)
+1. You can create a single-stage or multi-stage review. For a single stage review, continue here. To create a multi-stage access review, follow the steps in [Create a multi-stage access review](#create-a-multi-stage-access-review)
1. In the **Specify reviewers** section, in the **Select reviewers** box, select either one or more people to make decisions in the access reviews. You can choose from:
If you are reviewing access to an application, then before creating the review,
![Screenshot that shows Upon completion settings.](./media/create-access-review/upon-completion-settings-new.png)
- - **Auto apply results to resource**: Select this checkbox if you want access of denied users to be removed automatically after the review duration ends. If the option is disabled, you'll have to manually apply the results when the review finishes. To learn more about applying the results of the review, see [Manage access reviews](manage-access-review.md).
+ - **Auto apply results to resource**: Select this checkbox if you want access of denied users to be removed automatically after the review duration ends. If the option is disabled, you have to manually apply the results when the review finishes. To learn more about applying the results of the review, see [Manage access reviews](manage-access-review.md).
- **If reviewers don't respond**: Use this option to specify what happens for users not reviewed by any reviewer within the review period. This setting doesn't affect users who were reviewed by a reviewer. The dropdown list shows the following options:
If you are reviewing access to an application, then before creating the review,
1. In the **Enable review decision helpers** section choose whether you want your reviewer to receive recommendations during the review process: 1. If you select **No sign-in within 30 days**, users who have signed in during the previous 30-day period are recommended for approval. Users who haven't signed in during the past 30 days are recommended for denial. This 30-day interval is irrespective of whether the sign-ins were interactive or not. The last sign-in date for the specified user will also display along with the recommendation.
- 1. If you select **(Preview) User-to-Group Affiliation**, reviewers will get the recommendation to Approve or Deny access for the users based on userΓÇÖs average distance in the organizationΓÇÖs reporting-structure. Users who are very distant from all the other users within the group are considered to have "low affiliation" and will get a deny recommendation in the group access reviews.
+ 1. If you select **(Preview) User-to-Group Affiliation**, reviewers get the recommendation to Approve or Deny access for the users based on userΓÇÖs average distance in the organizationΓÇÖs reporting-structure. Users who are distant from all the other users within the group are considered to have "low affiliation" and will get a deny recommendation in the group access reviews.
> [!NOTE] > If you create an access review based on applications, your recommendations are based on the 30-day interval period depending on when the user last signed in to the application rather than the tenant.
A multi-stage review allows the administrator to define two or three sets of rev
1. After you have selected the resource and scope of your review, move on to the **Reviews** tab.
-1. Click the checkbox next to **Multi-stage review**.
+1. Select the checkbox next to **Multi-stage review**.
1. Under **First stage review**, select the reviewers from the dropdown menu next to **Select reviewers**.
-1. If you select **Group owner(s)** or **Managers of Users**, you have the option to add a fallback reviewer. To add a fallback, click **Select fallback reviewers** and add the users you want to be fallback reviewers.
+1. If you select **Group owner(s)** or **Managers of Users**, you have the option to add a fallback reviewer. To add a fallback, select **Select fallback reviewers** and add the users you want to be fallback reviewers.
![Screenshot that shows multi-stage review enabled and multi-stage review settings.](./media/create-access-review/create-multi-stage-review.png)
A multi-stage review allows the administrator to define two or three sets of rev
1. Add the duration for the second stage.
-1. By default, you will see two stages when you create a multi-stage review. However, you can add up to three stages. If you want to add a third stage, click **+ Add a stage** and complete the required fields.
+1. By default, you'll see two stages when you create a multi-stage review. However, you can add up to three stages. If you want to add a third stage, select **+ Add a stage** and complete the required fields.
-1. You can decide to allow 2nd and 3rd stage reviewers to the see decisions made in the previous stage(s).If you want to allow them to see the decisions made prior, click the box next to **Show previous stage(s) decisions to later stage reviewers** under **Reveal review results**. Leave the box unchecked to disable this setting if youΓÇÖd like your reviewers to review independently.
+1. You can decide to allow 2nd and 3rd stage reviewers to the see decisions made in the previous stage(s).If you want to allow them to see the decisions made prior, select the box next to **Show previous stage(s) decisions to later stage reviewers** under **Reveal review results**. Leave the box unchecked to disable this setting if youΓÇÖd like your reviewers to review independently.
![Screenshot that shows duration and show previous stages setting enabled for multi-stage review.](./media/create-access-review/reveal-multi-stage-results-and-duration.png)
-1. The duration of each recurrence will be set to the sum of the duration day(s) you specified in each stage.
+1. The duration of each recurrence are set to the sum of the duration day(s) you specified in each stage.
1. Specify the **Review recurrence**, the **Start date**, and **End date** for the review. The recurrence type must be at least as long as the total duration of the recurrence (i.e., the max duration for a weekly review recurrence is 7 days).
Use the following instructions to create an access review on a team with shared
1. Select **+ New access review**.
-1. Select **Teams + Groups** and then click **Select teams + groups** to set the **Review scope**. B2B direct connect users and teams are not included in reviews of **All Microsoft 365 groups with guest users**.
+1. Select **Teams + Groups** and then select **Select teams + groups** to set the **Review scope**. B2B direct connect users and teams aren't included in reviews of **All Microsoft 365 groups with guest users**.
1. Select a Team that has shared channels shared with 1 or more B2B direct connect users or Teams.
active-directory Deploy Access Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/deploy-access-reviews.md
Title: Plan a Microsoft Entra access reviews deployment
description: Planning guide for a successful access reviews deployment. documentationCenter: ''-+ editor:
na Previously updated : 04/16/2021- Last updated : 06/28/2023+
Planning your access reviews deployment is essential to make sure you achieve yo
The key benefits of enabling access reviews are: * **Control collaboration**: Access reviews allow you to manage access to all the resources your users need. When users share and collaborate, you can be assured that the information is among authorized users only.
-* **Manage risk**: Access reviews provide you a way to review access to data and applications, which lowers the risk of data leakage and data spill. You gain the capability to regularly review external partners' access to corporate resources.
+* **Manage risk**: Access reviews provide you with a way to review access to data and applications, which lowers the risk of data leakage and data spill. You gain the capability to regularly review external partners' access to corporate resources.
* **Address compliance and governance**: With access reviews, you can govern and recertify the access lifecycle to groups, apps, and sites. You can control and track reviews for compliance or risk-sensitive applications specific to your organization. * **Reduce cost**: Access reviews are built in the cloud and natively work with cloud resources such as groups, applications, and access packages. Using access reviews is less costly than building your own tools or otherwise upgrading your on-premises tool set.
Communication is critical to the success of any new business process. Proactivel
Access reviews support shifting responsibility of reviewing and acting on continued access to business owners. Decoupling access decisions from the IT department drives more accurate access decisions. This shift is a cultural change in the resource owner's accountability and responsibility. Proactively communicate this change and ensure resource owners are trained and able to use the insights to make good decisions.
-The IT department will want to stay in control for all infrastructure-related access decisions and privileged role assignments.
+The IT department wants to stay in control for all infrastructure-related access decisions and privileged role assignments.
#### Customize email communication
-When you schedule a review, you nominate users who will do this review. These reviewers then receive an email notification of new reviews assigned to them and reminders before a review assigned to them expires.
+When you schedule a review, you nominate users who do this review. These reviewers then receive an email notification of new reviews assigned to them and reminders before a review assigned to them expires.
The email sent to reviewers can be customized to include a short message that encourages them to act on the review. Use the extra text to:
When you create an access review, administrators can choose one or more reviewer
### Components of an access review
-Before you implement your access reviews, plan the types of reviews relevant to your organization. To do so, you'll need to make business decisions about what you want to review and the actions to take based on those reviews.
+Before you implement your access reviews, plan the types of reviews relevant to your organization. To do so, you need to make business decisions about what you want to review and the actions to take based on those reviews.
To create an access review policy, you must have the following information:
To create an access review policy, you must have the following information:
* What automatic actions should be enforced based on the review? * What happens if the reviewer doesn't respond in time?
-* What manual actions will be taken as a result based on the review?
+* What manual actions are taken as a result based on the review?
* What communications should be sent based on the actions taken? #### Example access review plan
Access reviews can be for the members of a group or for users who were assigned
## Plan review of Azure AD and Azure resource roles
-[Privileged Identity Management](../privileged-identity-management/pim-configure.md) simplifies how enterprises manage privileged access to resources in Azure AD. Using PIM keeps the list of privileged roles in [Azure AD](../roles/permissions-reference.md) and [Azure resources](../../role-based-access-control/built-in-roles.md) much smaller. It also increases the overall security of the directory.
+[Privileged Identity Management](../privileged-identity-management/pim-configure.md) simplifies how enterprises manage privileged access to resources in Azure AD. Using PIM keeps the list of privileged roles in [Azure AD](../roles/permissions-reference.md) and [Azure resources](../../role-based-access-control/built-in-roles.md) smaller. It also increases the overall security of the directory.
Access reviews allow reviewers to attest whether users still need to be in a role. Just like access reviews for access packages, reviews for Azure AD roles and Azure resources are integrated into the PIM admin user experience.
active-directory Entitlement Management Access Reviews Review Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/entitlement-management-access-reviews-review-access.md
Title: Review access of an access package in entitlement management
description: Learn how to complete an access review of entitlement management access packages in access reviews. documentationCenter: ''-+ editor:
na Previously updated : 09/15/2021- Last updated : 06/28/2023+
For more information, see [License requirements](entitlement-management-overview
Use the following steps to find and open the access review:
-1. You may receive an email from Microsoft that asks you to review access. Locate the email to open the access review. Here is an example email to review access:
+1. You may receive an email from Microsoft that asks you to review access. Locate the email to open the access review. Here's an example email to review access:
![Access review reviewer email](./media/entitlement-management-access-reviews-review-access/review-access-reviewer-email.png)
-1. Click the **Review user access** link to open the access review.
+1. Select the **Review user access** link to open the access review.
1. If you donΓÇÖt have the email, you can find your pending access reviews by navigating directly to https://myaccess.microsoft.com. (For US Government, use `https://myaccess.microsoft.us` instead.)
-1. Click **Access reviews** on the left navigation bar to see a list of pending access reviews assigned to you.
+1. Select **Access reviews** on the left navigation bar to see a list of pending access reviews assigned to you.
![Select access reviews on My Access](./media/entitlement-management-access-reviews-review-access/review-access-myaccess-select-access-review.png)
-1. Click the review that youΓÇÖd like to begin.
+1. Select the review that youΓÇÖd like to begin.
![Select the access review](./media/entitlement-management-access-reviews-review-access/review-access-select-access-review.png) ## Perform the access review
-Once you open the access review, you will see the names of users for which you need to review. There are two ways that you can approve or deny access:
+Once you open the access review, you'll see the names of users for which you need to review. There are two ways that you can approve or deny access:
- You can manually approve or deny access for one or more users - You can accept the system recommendations
Once you open the access review, you will see the names of users for which you n
![Select the user](./media/entitlement-management-access-reviews-review-access/review-access-select-users.png)
-1. If you aren't sure, you can click the **DonΓÇÖt know** button.
+1. If you aren't sure, you can select the **DonΓÇÖt know** button.
If you make this selection, the user maintains access, and this selection goes in the audit logs. The log shows any other reviewers that you still completed the review.
-1. You may be required to provide a reason for your decision. Type in a reason and click **Submit**.
+1. You may be required to provide a reason for your decision. Type in a reason and select **Submit**.
![Approve or deny access](./media/entitlement-management-access-reviews-review-access/review-access-decision-approve.png)
If there are multiple reviewers, the last submitted response is recorded. Consid
### Approve or deny access using the system-generated recommendations
-To review access for multiple users more quickly, you can use the system-generated recommendations, accepting the recommendations with a single click. The recommendations are generated based on the user's sign-in activity.
+To review access for multiple users more quickly, you can use the system-generated recommendations, accepting the recommendations with a single select. The recommendations are generated based on the user's sign-in activity.
-1. In the bar at the top of the page, click **Accept recommendations**.
+1. In the bar at the top of the page, select **Accept recommendations**.
![Select Accept recommendations](./media/entitlement-management-access-reviews-review-access/review-access-use-recommendations.png)
- You'll see a summary of the recommended actions.
+ You see a summary of the recommended actions.
-1. Click **Submit** to accept the recommendations.
+1. Select **Submit** to accept the recommendations.
## Next steps
active-directory Identity Governance Applications Define https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/identity-governance-applications-define.md
Title: Define organizational policies for governing access to applications in yo
description: Microsoft Entra Identity Governance allows you to balance your organization's need for security and employee productivity with the right processes and visibility. You can define policies for how users should obtain access to your business critical applications integrated with Microsoft Entra Identity Governance. documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 7/28/2022- Last updated : 06/28/2023+
Once you've identified one or more applications that you want to use Azure AD to
## Identifies applications and their roles in scope
-Organizations with compliance requirements or risk management plans will have sensitive or business-critical applications. If this application is an existing application in your environment, you may already have documented the access policies for who 'should have access' to this application. If not, you may need to consult with various stakeholders, such as compliance and risk management teams, to ensure that the policies being used to automate access decisions are appropriate for your scenario.
+Organizations with compliance requirements or risk management plans have sensitive or business-critical applications. If this application is an existing application in your environment, you may already have documented the access policies for who 'should have access' to this application. If not, you may need to consult with various stakeholders, such as compliance and risk management teams, to ensure that the policies being used to automate access decisions are appropriate for your scenario.
1. **Collect the roles and permissions that each application provides.** Some applications may have only a single role, for example, an application that only has the role "User". More complex applications may surface multiple roles to be managed through Azure AD. These application roles typically make broad constraints on the access a user with that role would have within the app. For example, an application that has an administrator persona might have two roles, "User" and "Administrator". Other applications may also rely upon group memberships or claims for finer-grained role checks, which can be provided to the application from Azure AD in provisioning or claims issued using federation SSO protocols, or written to AD as a security group membership. Finally, there may be application-specific roles that don't surface in Azure AD - perhaps the application doesn't permit defining the administrators in Azure AD, instead relying upon its own authorization rules to identify administrators. > [!Note]
If you already have an organization role definition, then see [how to migrate an
1. **Determine how exceptions to your criteria should be handled.** For example, an application may typically only be available for designated employees, but an auditor or vendor may need temporary access for a specific project. Or, an employee who is traveling may require access from a location that is normally blocked as your organization has no presence in that location. In these situations, you may choose to also have an entitlement management policy for approval that may have different stages, or a different time limit, or a different approver. A vendor who is signed in as a guest user in your Azure AD tenant may not have a manager, so instead their access requests could be approved by a sponsor for their organization, or by a resource owner, or a security officer.
-As the organizational policy for who should have access is being reviewed by the stakeholders, then you can begin [integrating the application](identity-governance-applications-integrate.md) with Azure AD. That way at a later step you'll be ready to [deploy the organization-approved policies](identity-governance-applications-deploy.md) for access in Azure AD identity governance.
+As the organizational policy for who should have access is being reviewed by the stakeholders, then you can begin [integrating the application](identity-governance-applications-integrate.md) with Azure AD. That way at a later step you are ready to [deploy the organization-approved policies](identity-governance-applications-deploy.md) for access in Azure AD identity governance.
## Next steps
active-directory Identity Governance Applications Deploy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/identity-governance-applications-deploy.md
Title: Deploying policies for governing access to applications integrated with A
description: Microsoft Entra Identity Governance allows you to balance your organization's need for security and employee productivity with the right processes and visibility. You can use entitlement management and other identity governance features to enforce the policies for access. documentationcenter: ''-+ editor: markwahl-msft
na
Last updated 12/19/2022-+
# Deploying organizational policies for governing access to applications integrated with Azure AD
-In previous sections, you [defined your governance policies for an application](identity-governance-applications-define.md) and [integrated that application with Azure AD](identity-governance-applications-integrate.md). In this section, you'll configure the Azure AD conditional access and entitlement management features to control ongoing access to your applications. You'll establish
+In previous sections, you [defined your governance policies for an application](identity-governance-applications-define.md) and [integrated that application with Azure AD](identity-governance-applications-integrate.md). In this section, you configure the Azure AD conditional access and entitlement management features to control ongoing access to your applications. You establish
* Conditional access policies, for how a user authenticates to Azure AD for an application integrated with Azure AD for single sign-on * Entitlement management policies, for how a user obtains and keeps assignments to application roles and membership in groups * Access review policies, for how often group memberships are reviewed
Once these policies are deployed, you can then monitor the ongoing behavior of A
## Deploy conditional access policies for SSO enforcement
-In this section, you'll establish the Conditional Access policies that are in scope for determining whether an authorized user is able to sign into the app, based on factors like the user's authentication strength or device status.
+In this section, you establish the Conditional Access policies that are in scope for determining whether an authorized user is able to sign into the app, based on factors like the user's authentication strength or device status.
Conditional access is only possible for applications that rely upon Azure AD for single sign-on (SSO). If the application isn't able to be integrated for SSO, then continue in the next section.
-1. **Upload the terms of use (TOU) document, if needed.** If you require users to accept a terms of use (TOU) prior to accessing the application, then create and [upload the TOU document](../conditional-access/terms-of-use.md) so that it can be included in a conditional access policy.
+1. **Upload the terms of use (TOU) document, if needed.** If you require users to accept a term of use (TOU) prior to accessing the application, then create and [upload the TOU document](../conditional-access/terms-of-use.md) so that it can be included in a conditional access policy.
1. **Verify users are ready for Azure Active Directory Multi-Factor Authentication.** We recommend requiring Azure AD Multi-Factor Authentication for business critical applications integrated via federation. For these applications, there should be a policy that requires the user to have met a multi-factor authentication requirement prior to Azure AD permitting them to sign into the application. Some organizations may also block access by locations, or [require the user to access from a registered device](../conditional-access/howto-conditional-access-policy-compliant-device.md). If there's no suitable policy already that includes the necessary conditions for authentication, location, device and TOU, then [add a policy to your conditional access deployment](../conditional-access/plan-conditional-access.md). 1. **Bring the application web endpoint into scope of the appropriate conditional access policy**. If you have an existing conditional access policy that was created for another application subject to the same governance requirements, you could update that policy to have it apply to this application as well, to avoid having a large number of policies. Once you have made the updates, check to ensure that the expected policies are being applied. You can see what policies would apply to a user with the [Conditional Access what if tool](../conditional-access/troubleshoot-conditional-access-what-if.md). 1. **Create a recurring access review if any users will need temporary policy exclusions**. In some cases, it may not be possible to immediately enforce conditional access policies for every authorized user. For example, some users may not have an appropriate registered device. If it's necessary to exclude one or more users from the CA policy and allow them access, then configure an access review for the group of [users who are excluded from Conditional Access policies](../governance/conditional-access-exclusion.md).
-1. **Document the token lifetime and application's session settings.** How long a user who has been denied continued access can continue to use a federated application will depend upon the application's own session lifetime, and on the access token lifetime. The session lifetime for an application depends upon the application itself. To learn more about controlling the lifetime of access tokens, see [configurable token lifetimes](../develop/configurable-token-lifetimes.md).
+1. **Document the token lifetime and application's session settings.** How long a user who has been denied continued access can continue to use a federated application depends upon the application's own session lifetime, and on the access token lifetime. The session lifetime for an application depends upon the application itself. To learn more about controlling the lifetime of access tokens, see [configurable token lifetimes](../develop/configurable-token-lifetimes.md).
## Deploy entitlement management policies for automating access assignment
-In this section, you'll configure Azure AD entitlement management so users can request access to your application's roles or to groups used by the application. In order to perform these tasks, you'll need to be in the *Global Administrator*, *Identity Governance Administrator* role, or be [delegated as a catalog creator](entitlement-management-delegate-catalog.md) and the owner of the application.
+In this section, you configure Azure AD entitlement management so users can request access to your application's roles or to groups used by the application. In order to perform these tasks, you need to be in the *Global Administrator*, *Identity Governance Administrator* role, or be [delegated as a catalog creator](entitlement-management-delegate-catalog.md) and the owner of the application.
1. **Access packages for governed applications should be in a designated catalog.** If you don't already have a catalog for your application governance scenario, [create a catalog](../governance/entitlement-management-catalog-create.md) in Microsoft Entra entitlement management.
-1. **Populate the catalog with necessary resources.** Add the application, as well as any Azure AD groups that the application relies upon, [as resources in that catalog](../governance/entitlement-management-catalog-create.md).
+1. **Populate the catalog with necessary resources.** Add the application, and any Azure AD groups that the application relies upon, [as resources in that catalog](../governance/entitlement-management-catalog-create.md).
1. **Create an access package for each role or group which users can request.** For each of the applications, and for each of their application roles or groups, [create an access package](../governance/entitlement-management-access-package-create.md) that includes that role or group as its resource. At this stage of configuring that access package, configure the access package assignment policy for direct assignment, so that only administrators can create assignments. In that policy, set the access review requirements for existing users, if any, so that they don't keep access indefinitely. 1. **Configure access packages to enforce separation of duties requirements.** If you have [separation of duties](entitlement-management-access-package-incompatible.md) requirements, then configure the incompatible access packages or existing groups for your access package. If your scenario requires the ability to override a separation of duties check, then you can also [set up additional access packages for those override scenarios](entitlement-management-access-package-incompatible.md#configuring-multiple-access-packages-for-override-scenarios). 1. **Add assignments of existing users, who already have access to the application, to the access packages.** For each access package, assign existing users of the application in that role, or members of that group, to the access package. You can [directly assign a user](entitlement-management-access-package-assignments.md) to an access package using the Azure portal, or in bulk via Graph or PowerShell.
In this section, you'll configure Azure AD entitlement management so users can r
## View reports on access
-Azure AD, in conjunction with Azure Monitor, provides several reports to help you understand who has access to an application and if they're using that access.
+Azure AD, with Azure Monitor, provides several reports to help you understand who has access to an application and if they're using that access.
* An administrator, or a catalog owner, can [retrieve the list of users who have access package assignments](entitlement-management-access-package-assignments.md), via the Azure portal, Graph or PowerShell. * You can also send the audit logs to Azure Monitor and view a history of [changes to the access package](entitlement-management-logs-and-reporting.md#view-events-for-an-access-package), in the Azure portal, or via PowerShell.
At regular intervals, such as weekly, monthly or quarterly, based on the volume
* **Validate that reviewers are making decisions during a review.** Monitor that [recurring access reviews for those access packages](entitlement-management-access-package-lifecycle-policy.md) are completing successfully, to ensure reviewers are participating and making decisions to approve or deny user's continued need for access.
-* **Check that provisioning and deprovisioning are working as expected.** If you had previously configured provisioning of users to the application, then when the results of a review are applied, or a user's assignment to an access package expires, Azure AD will begin deprovisioning denied users from the application. You can [monitor the process of deprovisioning users](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md). If provisioning indicates an error with the application, you can [download the provisioning log](../reports-monitoring/concept-provisioning-logs.md) to investigate if there was a problem with the application.
+* **Check that provisioning and deprovisioning are working as expected.** If you had previously configured provisioning of users to the application, then when the results of a review are applied, or a user's assignment to an access package expires, Azure AD begins deprovisioning denied users from the application. You can [monitor the process of deprovisioning users](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md). If provisioning indicates an error with the application, you can [download the provisioning log](../reports-monitoring/concept-provisioning-logs.md) to investigate if there was a problem with the application.
-* **Update the Azure AD configuration with any role or group changes in the application.** If the application adds new application roles in its manifest, updates existing roles, or relies upon additional groups, then you'll need to update the access packages and access reviews to account for those new roles or groups.
+* **Update the Azure AD configuration with any role or group changes in the application.** If the application adds new application roles in its manifest, updates existing roles, or relies upon additional groups, then you need to update the access packages and access reviews to account for those new roles or groups.
## Next steps
active-directory Identity Governance Applications Integrate https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/identity-governance-applications-integrate.md
Title: Integrate your applications for identity governance and establishing a ba
description: Microsoft Entra Identity Governance allows you to balance your organization's need for security and employee productivity with the right processes and visibility. You can integrate your existing business critical third party on-premises and cloud-based applications with Azure AD for identity governance scenarios. documentationcenter: ''-+ editor: markwahl-msft
na
Last updated 7/29/2022-+
Next, if the application implements a provisioning protocol, then you should con
|-|--| | Kerberos | Configure Azure AD Connect [group writeback to AD](../hybrid/how-to-connect-group-writeback-v2.md), create groups in Azure AD and [write those groups to AD](../enterprise-users/groups-write-back-portal.md) |
- * Otherwise, if this is an on-premises or IaaS hosted application, and is not integrated with AD, then configure provisioning to that application, either via SCIM or to the underlying database or directory of the application.
+ * Otherwise, if this is an on-premises or IaaS hosted application, and isn't integrated with AD, then configure provisioning to that application, either via SCIM or to the underlying database or directory of the application.
|Application supports| Next steps| |-|--|
Next, if the application implements a provisioning protocol, then you should con
1. If your application uses Microsoft Graph to query groups from Azure AD, then [consent](../develop/consent-framework.md) to the applications to have the appropriate permissions to read from your tenant.
-1. Set that access to **the application is only permitted for users assigned to the application**. This setting will prevent users from inadvertently seeing the application in MyApps, and attempting to sign into the application, prior to Conditional Access policies being enabled.
+1. Set that access to **the application is only permitted for users assigned to the application**. This setting prevents users from inadvertently seeing the application in MyApps, and attempting to sign into the application, prior to Conditional Access policies being enabled.
## Perform an initial access review If this is a new application your organization hasn't used before, and therefore no one has pre-existing access, or if you've already been performing access reviews for this application, then skip to the [next section](identity-governance-applications-deploy.md).
-However, if the application already existed in your environment, then it's possible that users may have gotten access in the past through manual or out-of-band processes, and those users should now be reviewed to have confirmation that their access is still needed and appropriate going forward. We recommend performing an access review of the users who already have access to the application, before enabling policies for more users to be able to request access. This review will set a baseline of all users having been reviewed at least once, to ensure that those users are authorized for continued access.
+However, if the application already existed in your environment, then it's possible that users may have gotten access in the past through manual or out-of-band processes, and those users should now be reviewed to have confirmation that their access is still needed and appropriate going forward. We recommend performing an access review of the users who already have access to the application, before enabling policies for more users to be able to request access. This review sets a baseline of all users having been reviewed at least once, to ensure that those users are authorized for continued access.
1. Follow the steps in [Preparing for an access review of users' access to an application](access-reviews-application-preparation.md).
-1. If the application was not using Azure AD or AD, but does support a provisioning protocol or had an underlying SQL or LDAP database, bring in any [existing users and create application role assignments](identity-governance-applications-existing-users.md) for them.
-1. If the application was not using Azure AD or AD, and does not support a provisioning protocol, then [obtain a list of users from the application and create application role assignments for each of them](identity-governance-applications-not-provisioned-users.md).
-1. If the application was using AD security groups, then you'll need to review the membership of those security groups.
+1. If the application wasn't using Azure AD or AD, but does support a provisioning protocol or had an underlying SQL or LDAP database, bring in any [existing users and create application role assignments](identity-governance-applications-existing-users.md) for them.
+1. If the application wasn't using Azure AD or AD, and doesn't support a provisioning protocol, then [obtain a list of users from the application and create application role assignments for each of them](identity-governance-applications-not-provisioned-users.md).
+1. If the application was using AD security groups, then you need to review the membership of those security groups.
1. If the application had its own directory or database and wasn't integrated for provisioning, then once the review is complete, you may need to manually update the application's internal database or directory to remove those users who were denied.
-1. If the application was using AD security groups, and those groups were created in AD, then once the review is complete, you'll need to manually update the AD groups to remove memberships of those users who were denied. Subsequently, to have denied access rights removed automatically, you can either update the application to use an AD group that was created in Azure AD and [written back to Azure AD](../enterprise-users/groups-write-back-portal.md), or move the membership from the AD group to the Azure AD group, and nest the written back group as the only member of the AD group.
+1. If the application was using AD security groups, and those groups were created in AD, then once the review is complete, you need to manually update the AD groups to remove memberships of those users who were denied. Subsequently, to have denied access rights removed automatically, you can either update the application to use an AD group that was created in Azure AD and [written back to Azure AD](../enterprise-users/groups-write-back-portal.md), or move the membership from the AD group to the Azure AD group, and nest the written back group as the only member of the AD group.
1. Once the review has been completed and the application access updated, or if no users have access, then continue on to the next steps to deploy conditional access and entitlement management policies for the application. Now that you have a baseline that ensures existing access has been reviewed, then you can [deploy the organization's policies](identity-governance-applications-deploy.md) for ongoing access and any new access requests.
active-directory Identity Governance Applications Prepare https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/identity-governance-applications-prepare.md
Title: Govern access for applications in your environment
description: Microsoft Entra Identity Governance allows you to balance your organization's need for security and employee productivity with the right processes and visibility. These features can be used for your existing business critical third party on-premises and cloud-based applications. documentationcenter: ''-+ editor: markwahl-msft
na
Last updated 6/28/2022-+
Microsoft Entra Identity Governance allows you to balance your organization's need for security and employee productivity with the right processes and visibility. Its features ensure that the right people have the right access to the right resources in your organization at the right time.
-Organizations with compliance requirements or risk management plans will have sensitive or business-critical applications. The application sensitivity may be based on its purpose or the data it contains, such as financial information or personal information of the organization's customers. For those applications, only a subset of all the users in the organization will typically be authorized to have access, and access should only be permitted based on documented business requirements. As part of your organization's controls for managing access, you can use Microsoft Entra features to
+Organizations with compliance requirements or risk management plans have sensitive or business-critical applications. The application sensitivity may be based on its purpose or the data it contains, such as financial information or personal information of the organization's customers. For those applications, only a subset of all the users in the organization will typically be authorized to have access, and access should only be permitted based on documented business requirements. As part of your organization's controls for managing access, you can use Microsoft Entra features to
* set up appropriate access * enforce access checks
In addition to the application access governance scenario, you can also use iden
## Getting started with governing access to applications
-Microsoft Entra identity governance can be integrated with many applications, using [standards](../fundamentals/auth-sync-overview.md) such as OpenID Connect, SAML, SCIM, SQL and LDAP. Through these standards, you can use Azure AD with many popular SaaS applications, as well as on-premises applications, and applications that your organization has developed. Once you've prepared your Azure AD environment, as described in the section below, the three step plan covers how to connect an application to Azure AD and enable identity governance features to be used for that application.
+Microsoft Entra identity governance can be integrated with many applications, using [standards](../fundamentals/auth-sync-overview.md) such as OpenID Connect, SAML, SCIM, SQL and LDAP. Through these standards, you can use Azure AD with many popular SaaS applications, on-premises applications, and applications that your organization has developed. Once you've prepared your Azure AD environment, as described in the section below, the three step plan covers how to connect an application to Azure AD and enable identity governance features to be used for that application.
1. [Define your organization's policies for governing access to the application](identity-governance-applications-define.md) 1. [Integrate the application with Azure AD](identity-governance-applications-integrate.md) to ensure only authorized users can access the application, and review user's existing access to the application to set a baseline of all users having been reviewed
Before you begin the process of governing application access from Azure AD, you
* Azure AD Premium P2 * Enterprise Mobility + Security (EMS) E5 license
- Your tenant will need to have at least as many licenses as the number of member (non-guest) users who have or can request access to the applications, approve, or review access to the applications. With an appropriate license for those users, you can then govern access to up to 1500 applications per user.
+ Your tenant needs to have at least as many licenses as the number of member (non-guest) users who have or can request access to the applications, approve, or review access to the applications. With an appropriate license for those users, you can then govern access to up to 1500 applications per user.
-* **If you will be governing guest's access to the application, link your Azure AD tenant to a subscription for MAU billing**. This step will be necessary prior to having a guest request or review their access. For more information, see [billing model for Azure AD External Identities](../external-identities/external-identities-pricing.md).
+* **If you will be governing guest's access to the application, link your Azure AD tenant to a subscription for MAU billing**. This step is necessary prior to having a guest request or review their access. For more information, see [billing model for Azure AD External Identities](../external-identities/external-identities-pricing.md).
-* **Check that Azure AD is already sending its audit log, and optionally other logs, to Azure Monitor.** Azure Monitor is optional, but useful for governing access to apps, as Azure AD only stores audit events for up to 30 days in its audit log. You can keep the audit data for longer than the default retention period, outlined in [How long does Azure AD store reporting data?](../reports-monitoring/reference-reports-data-retention.md), and use Azure Monitor workbooks and custom queries and reports on historical audit data. You can check the Azure AD configuration to see if it is using Azure Monitor, in **Azure Active Directory** in the Azure portal, by clicking on **Workbooks**. If this integration isn't configured, and you have an Azure subscription and are in the `Global Administrator` or `Security Administrator` roles, you can [configure Azure AD to use Azure Monitor](../governance/entitlement-management-logs-and-reporting.md).
+* **Check that Azure AD is already sending its audit log, and optionally other logs, to Azure Monitor.** Azure Monitor is optional, but useful for governing access to apps, as Azure AD only stores audit events for up to 30 days in its audit log. You can keep the audit data for longer than the default retention period, outlined in [How long does Azure AD store reporting data?](../reports-monitoring/reference-reports-data-retention.md), and use Azure Monitor workbooks and custom queries and reports on historical audit data. You can check the Azure AD configuration to see if it's using Azure Monitor, in **Azure Active Directory** in the Azure portal, by clicking on **Workbooks**. If this integration isn't configured, and you have an Azure subscription and are in the `Global Administrator` or `Security Administrator` roles, you can [configure Azure AD to use Azure Monitor](../governance/entitlement-management-logs-and-reporting.md).
-* **Make sure only authorized users are in the highly privileged administrative roles in your Azure AD tenant.** Administrators in the *Global Administrator*, *Identity Governance Administrator*, *User Administrator*, *Application Administrator*, *Cloud Application Administrator* and *Privileged Role Administrator* can make changes to users and their application role assignments. If the memberships of those roles have not yet been recently reviewed, you'll need a user who is in the *Global Administrator* or *Privileged Role Administrator* to ensure that [access review of these directory roles](../privileged-identity-management/pim-create-azure-ad-roles-and-resource-roles-review.md) are started. You should also ensure that users in Azure roles in subscriptions that hold the Azure Monitor, Logic Apps and other resources needed for the operation of your Azure AD configuration have been reviewed.
+* **Make sure only authorized users are in the highly privileged administrative roles in your Azure AD tenant.** Administrators in the *Global Administrator*, *Identity Governance Administrator*, *User Administrator*, *Application Administrator*, *Cloud Application Administrator* and *Privileged Role Administrator* can make changes to users and their application role assignments. If the memberships of those roles haven't yet been recently reviewed, you need a user who is in the *Global Administrator* or *Privileged Role Administrator* to ensure that [access review of these directory roles](../privileged-identity-management/pim-create-azure-ad-roles-and-resource-roles-review.md) are started. You should also ensure that users in Azure roles in subscriptions that hold the Azure Monitor, Logic Apps and other resources needed for the operation of your Azure AD configuration have been reviewed.
-* **Check your tenant has appropriate isolation.** If your organization is using Active Directory on-premises, and these AD domains are connected to Azure AD, then you'll need to ensure that highly-privileged administrative operations for cloud-hosted services are isolated from on-premises accounts. Check that you've [configured your systems to protect your Microsoft 365 cloud environment from on-premises compromise](../fundamentals/protect-m365-from-on-premises-attacks.md).
+* **Check your tenant has appropriate isolation.** If your organization is using Active Directory on-premises, and these AD domains are connected to Azure AD, then you need to ensure that highly privileged administrative operations for cloud-hosted services are isolated from on-premises accounts. Check that you've [configured your systems to protect your Microsoft 365 cloud environment from on-premises compromise](../fundamentals/protect-m365-from-on-premises-attacks.md).
Once you have checked your Azure AD environment is ready, then proceed to [define the governance policies](identity-governance-applications-define.md) for your applications.
active-directory Identity Governance Automation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/identity-governance-automation.md
Title: Automate Microsoft Entra Identity Governance tasks with Azure Automation
description: Learn how to write PowerShell scripts in Azure Automation to interact with Azure Active Directory entitlement management and other features. documentationCenter: ''-+ editor:
ms.devlang: na
Last updated 9/20/2022-+
Azure Automation and the PowerShell Graph SDK supports certificate-based authentication and application permissions, so you can have Azure Automation runbooks authenticate to Azure AD without needing a user context.
-This article will show you how to get started using Azure Automation for Microsoft Entra Identity Governance, by creating a simple runbook that queries entitlement management via Microsoft Graph PowerShell.
+This article shows you how to get started using Azure Automation for Microsoft Entra Identity Governance, by creating a simple runbook that queries entitlement management via Microsoft Graph PowerShell.
## Create an Azure Automation account
Using Azure Automation requires you to have an Azure subscription.
1. Select the subscription or resource group, and select **Create**. Type **Automation**, select the **Automation** Azure service from Microsoft, then select **Create**. 1. After the Azure Automation account has been created, select **Access control (IAM)**. Then select **View** in **View access to this resource**. These users and service principals will subsequently be able to interact with the Microsoft service through the scripts to be created in that Azure Automation account.
-1. Review the users and service principals who are listed there and ensure they are authorized. Remove any users who are unauthorized.
+1. Review the users and service principals who are listed there and ensure they're authorized. Remove any users who are unauthorized.
## Create a self-signed key pair and certificate on your computer
To generate a self-signed certificate,
$cert | ft Thumbprint ```
-1. After you have exported the files, you can remove the certificate and key pair from your local user certificate store. In subsequent steps you will remove the `.pfx` and `.crt` files as well, once the certificate and private key have been uploaded to the Azure Automation and Azure AD services.
+1. After you have exported the files, you can remove the certificate and key pair from your local user certificate store. In subsequent steps you'll remove the `.pfx` and `.crt` files as well, once the certificate and private key have been uploaded to the Azure Automation and Azure AD services.
## Upload the key pair to Azure Automation
-Your runbook in Azure Automation will retrieve the private key from the `.pfx` file, and use it for authenticating to Microsoft Graph.
+Your runbook in Azure Automation retrieves the private key from the `.pfx` file, and use it for authenticating to Microsoft Graph.
1. In the Azure portal for the Azure Automation account, select **Certificates** and **Add a certificate**.
Your runbook in Azure Automation will retrieve the private key from the `.pfx` f
1. After the private key is uploaded, record the certificate expiration date.
-1. You can now delete the `.pfx` file from your local computer. However, do not delete the `.crt` file yet, as you will need this file in a subsequent step.
+1. You can now delete the `.pfx` file from your local computer. However, don't delete the `.crt` file yet, as you'll need this file in a subsequent step.
## Add modules for Microsoft Graph to your Azure Automation account
-By default, Azure Automation does not have any PowerShell modules preloaded for Microsoft Graph. You will need to add **Microsoft.Graph.Authentication**, and then additional modules, from the gallery to your Automation account. Note that you will need to choose whether to use the beta or v1.0 APIs through those modules, as you cannot mix both in a single runbook.
+By default, Azure Automation doesn't have any PowerShell modules preloaded for Microsoft Graph. You'll need to add **Microsoft.Graph.Authentication**, and then additional modules, from the gallery to your Automation account. Note that you'll need to choose whether to use the beta or v1.0 APIs through those modules, as you can't mix both in a single runbook.
1. In the Azure portal for the Azure Automation account, select **Modules** and then **Browse gallery**.
-1. In the Search bar, type **Microsoft.Graph.Authentication**. Select the module, select **Import**, and select **OK** to have Azure AD begin importing the module. After clicking OK, importing a module may take several minutes. Don't attempt to add more Microsoft Graph modules until the Microsoft.Graph.Authentication module import has completed, since those other modules have Microsoft.Graph.Authentication as a prerequisite.
+1. In the Search bar, type **Microsoft.Graph.Authentication**. Select the module, select **Import**, and select **OK** to have Azure AD begin importing the module. After selecting OK, importing a module may take several minutes. Don't attempt to add more Microsoft Graph modules until the Microsoft.Graph.Authentication module import has completed, since those other modules have Microsoft.Graph.Authentication as a prerequisite.
1. Return to the **Modules** list and select **Refresh**. Once the Status of the **Microsoft.Graph.Authentication** module has changed to **Available**, you can import the next module.
-1. If you are using the cmdlets for Azure AD identity governance features, such as entitlement management, then repeat the import process for the module **Microsoft.Graph.Identity.Governance**.
+1. If you're using the cmdlets for Azure AD identity governance features, such as entitlement management, then repeat the import process for the module **Microsoft.Graph.Identity.Governance**.
-1. Import other modules that your script may require, such as **Microsoft.Graph.Users**. For example, if you are using Identity Protection, then you may wish to import the **Microsoft.Graph.Identity.SignIns** module.
+1. Import other modules that your script may require, such as **Microsoft.Graph.Users**. For example, if you're using Identity Protection, then you may wish to import the **Microsoft.Graph.Identity.SignIns** module.
## Create an app registration and assign permissions
-Next, you will create an app registration in Azure AD, so that Azure AD will recognize your Azure Automation runbook's certificate for authentication.
+Next, you'll create an app registration in Azure AD, so that Azure AD recognizes your Azure Automation runbook's certificate for authentication.
**Prerequisite role**: Global Administrator or other administrator who can consent applications to application permissions
Next, you will create an app registration in Azure AD, so that Azure AD will rec
1. Type a name for the application and select **Register**.
-1. Once the application registration is created, take note of the **Application (client) ID** and **Directory (tenant) ID** as you will need these items later.
+1. Once the application registration is created, take note of the **Application (client) ID** and **Directory (tenant) ID** as you'll need these items later.
1. Select **Certificates and Secrets** and **Upload certificate**.
Next, you will create an app registration in Azure AD, so that Azure AD will rec
1. Select **Microsoft Graph** and **Application permissions**.
-1. Select each of the permissions that your Azure Automation account will require, then select **Add permissions**.
+1. Select each of the permissions that your Azure Automation account requires, then select **Add permissions**.
- * If your runbook is only performing queries or updates within a single catalog, then you do not need to assign it tenant-wide application permissions; instead you can assign the service principal to the catalog's **Catalog owner** or **Catalog reader** role.
+ * If your runbook is only performing queries or updates within a single catalog, then you don't need to assign it tenant-wide application permissions; instead you can assign the service principal to the catalog's **Catalog owner** or **Catalog reader** role.
* If your runbook is only performing queries for entitlement management, then it can use the **EntitlementManagement.Read.All** permission. * If your runbook is making changes to entitlement management, for example to create assignments across multiple catalogs, then use the **EntitlementManagement.ReadWrite.All** permission. * For other APIs, ensure that the necessary permission is added. For example, for identity protection, the **IdentityRiskyUser.Read.All** permission should be added.
Next, you will create an app registration in Azure AD, so that Azure AD will rec
## Create Azure Automation variables
-In this step, you will create in the Azure automation account three variables that the runbook will use to determine how to authenticate to Azure AD.
+In this step, you'll create in the Azure Automation account three variables that the runbook uses to determine how to authenticate to Azure AD.
1. In the Azure portal, return to the Azure Automation account.
In this step, you will create in the Azure automation account three variables th
## Create an Azure Automation PowerShell runbook that can use Graph
-In this step, you will create an initial runbook. You can trigger this runbook to verify the authentication using the certificate created earlier is successful.
+In this step, you'll create an initial runbook. You can trigger this runbook to verify the authentication using the certificate created earlier is successful.
1. Select **Runbooks** and **Create a runbook**. 1. Type the name of the runbook, select **PowerShell** as the type of runbook to create, and select **Create**.
-1. Once the runbook is created, a text editing pane will appear for you to type in the PowerShell source code of the runbook.
+1. Once the runbook is created, a text editing pane appears for you to type in the PowerShell source code of the runbook.
1. Type the following PowerShell into the text editor.
$ap | Select-Object -Property Id,DisplayName | ConvertTo-Json
2. Select **Test pane**, and select **Start**. Wait a few seconds for the Azure Automation processing of your runbook script to complete.
-3. If the run was successful, the output instead of the welcome message will be a JSON array. The JSON array will include the ID and display name of each access package returned from the query.
+3. If the run was successful, the output instead of the welcome message will be a JSON array. The JSON array includes the ID and display name of each access package returned from the query.
## Provide parameters to the runbook (optional)
Param
) ```
-The format of the allowed parameters depends upon the calling service. If your runbook does take parameters from the caller, then you will need to add validation logic to your runbook to ensure that the parameter values supplied are appropriate for how the runbook could be started. For example, if your runbook is started by a [webhook](../../automation/automation-webhooks.md), Azure Automation doesn't perform any authentication on a webhook request as long as it's made to the correct URL, so you will need an alternate means of validating the request.
+The format of the allowed parameters depends upon the calling service. If your runbook does take parameters from the caller, then you'll need to add validation logic to your runbook to ensure that the parameter values supplied are appropriate for how the runbook could be started. For example, if your runbook is started by a [webhook](../../automation/automation-webhooks.md), Azure Automation doesn't perform any authentication on a webhook request as long as it's made to the correct URL, so you'll need an alternate means of validating the request.
Once you [configure runbook input parameters](../../automation/runbook-input-parameters.md), then when you test your runbook you can provide values through the Test page. Later, when the runbook is published, you can provide parameters when starting the runbook from PowerShell, the REST API, or a Logic App. ## Parse the output of an Azure Automation account in Logic Apps (optional)
-Once your runbook is published, your can create a schedule in Azure Automation, and link your runbook to that schedule to run automatically. Scheduling runbooks from Azure Automation is suitable for runbooks that do not need to interact with other Azure or Office 365 services that do not have PowerShell interfaces.
+Once your runbook is published, your can create a schedule in Azure Automation, and link your runbook to that schedule to run automatically. Scheduling runbooks from Azure Automation is suitable for runbooks that don't need to interact with other Azure or Office 365 services that don't have PowerShell interfaces.
If you wish to send the output of your runbook to another service, then you may wish to consider using [Azure Logic Apps](../../logic-apps/logic-apps-overview.md) to start your Azure Automation runbook, as Logic Apps can also parse the results.
Note that in Azure Automation, a PowerShell runbook can fail to complete if it t
## Plan to keep the certificate up to date
-If you created a self-signed certificate following the steps above for authentication, keep in mind that the certificate will have a limited lifetime before it will expire. You will need to regenerate the certificate and upload the new certificate before its expiration date.
+If you created a self-signed certificate following the steps above for authentication, keep in mind that the certificate has a limited lifetime before it expires. You'll need to regenerate the certificate and upload the new certificate before its expiration date.
There are two places where you can see the expiration date in the Azure portal.
active-directory Lifecycle Workflow Templates https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/lifecycle-workflow-templates.md
Lifecycle Workflows allows you to automate the lifecycle management process for
## Lifecycle Workflows built-in templates
-Lifecycle Workflows currently have six built-in templates you can use or customize:
+Lifecycle Workflows currently have eight built-in templates you can use or customize:
:::image type="content" source="media/lifecycle-workflow-templates/templates-list.png" alt-text="Screenshot of a list of lifecycle workflow templates." lightbox="media/lifecycle-workflow-templates/templates-list.png":::
active-directory Manage Access Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/manage-access-review.md
Title: Manage access with access reviews
description: Learn how to manage user and guest access as membership of a group or assignment to an application with Azure Active Directory access reviews documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 08/20/2021- Last updated : 06/28/2023+
You can use access reviews to ensure that users who were invited for a particula
3. After the reviewers give input, stop the access review and apply the changes. For more information, see [Complete an access review of groups or applications](complete-access-review.md).
-4. In addition to users who denied their own need for continued access, you also can remove guest users who did not respond. You also can remove guest users who were not selected to participate, especially if they were not recently invited. Those users did not accept their invitation and so didn't have access to the application.
+4. In addition to users who denied their own need for continued access, you also can remove guest users who didn't respond. You also can remove guest users who weren't selected to participate, especially if they weren't recently invited. Those users didn't accept their invitation and so didn't have access to the application.
### Ask a sponsor to review a guest's access to an application
active-directory Manage Guest Access With Access Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/manage-guest-access-with-access-reviews.md
Title: Manage guest access with access reviews
description: Manage guest users as members of a group or assigned to an application with Azure Active Directory access reviews documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 08/23/2021- Last updated : 06/28/2023+
In some organizations, guests might not be aware of their group memberships.
2. To create an access review for that group, select the reviewers to be the members themselves. For more information, see [Create an access review of groups or applications](create-access-review.md).
-3. Ask each guest to review their own membership. By default, each guest who accepted an invitation receives an email from Azure AD with a link to the access review in your organization's access panel. Azure AD has instructions for guests on how to [review access to groups or applications](perform-access-review.md). Those guests who didn't accept their invite will appear in the review results as "Not Notified".
+3. Ask each guest to review their own membership. By default, each guest who accepted an invitation receives an email from Azure AD with a link to the access review in your organization's access panel. Azure AD has instructions for guests on how to [review access to groups or applications](perform-access-review.md). Those guests who didn't accept their invite appears in the review results as "Not Notified".
4. After the reviewers give input, stop the access review. For more information, see [Complete an access review of groups or applications](complete-access-review.md).
-5. You can automatically delete the guest users Azure AD B2B accounts as part of an access review when you are configuring an Access review for **Select Team + Groups**. This option is not available for **All Microsoft 365 groups with guest users**.
+5. You can automatically delete the guest users Azure AD B2B accounts as part of an access review when you're configuring an Access review for **Select Team + Groups**. This option isn't available for **All Microsoft 365 groups with guest users**.
![Screenshot showing page to create access review.](media/manage-guest-access-with-access-reviews/new-access-review.png)
active-directory Manage User Access With Access Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/manage-user-access-with-access-reviews.md
Title: Manage user access with access reviews
description: Learn how to manage users' access as membership of a group or assignment to an application with Azure Active Directory access reviews documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 06/21/2018- Last updated : 06/28/2023+
With Microsoft Entra, you can easily ensure that users have appropriate access.
For more information, see [License requirements](access-reviews-overview.md#license-requirements).
-If you are reviewing access to an application, then before creating the review, see the article on how to [prepare for an access review of users' access to an application](access-reviews-application-preparation.md) to ensure the application is integrated with Azure AD.
+If you're reviewing access to an application, then before creating the review, see the article on how to [prepare for an access review of users' access to an application](access-reviews-application-preparation.md) to ensure the application is integrated with Azure AD.
## Create and perform an access review
active-directory Perform Access Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/perform-access-review.md
Title: Review access to groups & applications in access reviews description: Learn how to review access of group members or application access in Azure Active Directory access reviews. -+ editor: markwahl-msft
na Previously updated : 7/18/2022- Last updated : 06/28/2023+ # Review access to groups and applications in access reviews
-Microsoft Entra simplifies how enterprises manage access to groups and applications in Microsoft Entra and other Microsoft web services with a feature called access reviews. This article will cover how a designated reviewer performs an access review for members of a group or users with access to an application. If you want to review access to an access package, read [Review access of an access package in entitlement management](entitlement-management-access-reviews-review-access.md).
+Microsoft Entra simplifies how enterprises manage access to groups and applications in Microsoft Entra and other Microsoft web services with a feature called access reviews. This article covers how a designated reviewer performs an access review for members of a group or users with access to an application. If you want to review access to an access package, read [Review access of an access package in entitlement management](entitlement-management-access-reviews-review-access.md).
## Perform access review by using My Access You can review access to groups and applications via My Access. My Access is a user-friendly portal for granting, approving, and reviewing access needs.
There are two ways that you can approve or deny access:
1. Select **Approve** or **Deny** on the bar.
- If you're unsure if a user should continue to have access, you can select **Don't know**. The user gets to keep their access, and your choice is recorded in the audit logs. Keep in mind that any information you provide will be available to other reviewers. They can read your comments and take them into account when they review the request.
+ If you're unsure if a user should continue to have access, you can select **Don't know**. The user gets to keep their access, and your choice is recorded in the audit logs. Keep in mind that any information you provide is available to other reviewers. They can read your comments and take them into account when they review the request.
![Screenshot of open access review listing the users who need review.](./media/perform-access-review/user-list-preview.png)
-1. The administrator of the access review might require you to supply a reason for your decision in the **Reason** box, even when a reason is not required. You can still provide a reason for your decision. The information that you include will be available to other approvers for review.
+1. The administrator of the access review might require you to supply a reason for your decision in the **Reason** box, even when a reason isn't required. You can still provide a reason for your decision. The information that you include is available to other approvers for review.
1. Select **Submit**.
There are two ways that you can approve or deny access:
### Review access based on recommendations
-To make access reviews easier and faster for you, we also provide recommendations that you can accept with a single selection. There are two ways that the system generates recommendations for the reviewer. One method is by the user's sign-in activity. If a user has been inactive for 30 days or more, the system will recommend that the reviewer deny access.
+To make access reviews easier and faster for you, we also provide recommendations that you can accept with a single selection. There are two ways that the system generates recommendations for the reviewer. One method is by the user's sign-in activity. If a user has been inactive for 30 days or more, the system recommends that the reviewer deny access.
-The other method is based on the access that the user's peers have. If the user doesn't have the same access as their peers, the system will recommend that the reviewer deny that user access.
+The other method is based on the access that the user's peers have. If the user doesn't have the same access as their peers, the system recommends that the reviewer deny that user access.
If you have **No sign-in within 30 days** or **Peer outlier** enabled, follow these steps to accept recommendations:
If you have **No sign-in within 30 days** or **Peer outlier** enabled, follow th
### Review access for one or more users in a multi-stage access review (preview)
-If the administrator has enabled multi-stage access reviews, there will be two or three total stages of review. Each stage of review will have a specified reviewer.
+If the administrator has enabled multi-stage access reviews, there will be two or three total stages of review. Each stage of review has a specified reviewer.
-You will either review access manually or accept the recommendations based on sign-in activity for the stage you're assigned as the reviewer.
+You'll either review access manually or accept the recommendations based on sign-in activity for the stage you're assigned as the reviewer.
If you're the second-stage or third-stage reviewer, you'll also see the decisions made by the reviewers in the prior stages, if the administrator enabled this setting when creating the access review. The decision made by a second-stage or third-stage reviewer will overwrite the previous stage. So, the decision that the second-stage reviewer makes will overwrite the first stage. And the third-stage reviewer's decision will overwrite the second stage.
To review access of B2B direct connect users, use the following instructions:
> [!NOTE] > Unlike internal users and B2B collaboration users, B2B direct connect users and teams _don't_ have recommendations based on last sign-in activity to make decisions when you perform the review.
-If a team you review has shared channels, all B2B direct connect users and teams that access those shared channels are part of the review. This includes B2B collaboration users and internal users. When a B2B direct connect user or team is denied access in an access review, the user will lose access to every shared channel in the team. To learn more about B2B direct connect users, read [B2B direct connect](../external-identities/b2b-direct-connect-overview.md).
+If a team you review has shared channels, all B2B direct connect users and teams that access those shared channels are part of the review. This includes B2B collaboration users and internal users. When a B2B direct connect user or team is denied access in an access review, the user loses access to every shared channel in the team. To learn more about B2B direct connect users, read [B2B direct connect](../external-identities/b2b-direct-connect-overview.md).
## Set up what will happen if no action is taken on access review When the access review is set up, the administrator has the option to use advanced settings to determine what will happen if a reviewer doesn't respond to an access review request.
active-directory Review Recommendations Access Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/review-recommendations-access-reviews.md
Title: Review recommendations for Access reviews description: Learn how to review access of group members with review recommendations in Microsoft Entra access reviews. -+ editor: markwahl-msft
na Previously updated : 10/25/2022- Last updated : 06/28/2023+
Decision makers who review users' access and perform access reviews can use syst
For more information, see [License requirements](access-reviews-overview.md#license-requirements). ## Inactive user recommendations
-A user is considered 'inactive' if they have not signed into the tenant within the last 30 days. This behavior is adjusted for reviews of application assignments, which checks each user's last activity in the app as opposed to the entire tenant. When inactive user recommendations are enabled for an access review, the last sign-in date for each user will be evaluated once the review starts, and any user that has not signed-in within 30 days will be given a recommended action of Deny. Additionally, when these decision helpers are enabled, reviewers will be able to see the last sign-in date for all users being reviewed. This sign-in date (as well as the resulting recommendation) is determined when the review begins and will not get updated while the review is in-progress.
+A user is considered 'inactive' if they haven't signed into the tenant within the last 30 days. This behavior is adjusted for reviews of application assignments, which checks each user's last activity in the app as opposed to the entire tenant. When inactive user recommendations are enabled for an access review, the last sign-in date for each user is evaluated once the review starts, and any user that has not signed-in within 30 days are given a recommended action of Deny. Additionally, when these decision helpers are enabled, reviewers are able to see the last sign-in date for all users being reviewed. This sign-in date, and the resulting recommendation, is determined when the review begins and won't get updated while the review is in-progress.
## User-to-Group Affiliation (preview) Making the review experience easier and more accurate empowers IT admins and reviewers to make more informed decisions. This Machine Learning based recommendation opens the journey to automate access reviews, thereby enabling intelligent automation and reducing access rights attestation fatigue. User-to-Group Affiliation in an organizationΓÇÖs chart is defined as two or more users who share similar characteristics in an organization's reporting structure.
-This recommendation detects user affiliation with other users within the group, based on organization's reporting-structure similarity. The recommendation relies on a scoring mechanism which is calculated by computing the userΓÇÖs average distance with the remaining users in the group. Users who are very distant from all the other group members based on their organization's chart, are considered to have "low affiliation" within the group.
+This recommendation detects user affiliation with other users within the group, based on organization's reporting-structure similarity. The recommendation relies on a scoring mechanism, which is calculated by computing the userΓÇÖs average distance with the remaining users in the group. Users who are distant from all the other group members based on their organization's chart, are considered to have "low affiliation" within the group.
If this decision helper is enabled by the creator of the access review, reviewers can receive User-to-Group Affiliation recommendations for group access reviews.
The following image has an example of an organization's reporting structure in a
Based on the reporting structure in the example image, users who are statistically significant amount of distance away from other users within the group, would get a "Deny" recommendation by the system if the User-to-Group Affiliation recommendation was selected by the reviewer for group access reviews.
-For example, Phil who works within the Personal care division is in a group with Debby, Irwin, and Emily who all work within the Cosmetics division. The group is called *Fresh Skin*. If an Access Review for the group Fresh Skin is performed, based on the reporting structure and distance away from the other group members, Phil would be considered to have low affiliation. The system will create a **Deny** recommendation in the group access review.
+For example, Phil who works within the Personal care division is in a group with Debby, Irwin, and Emily who all work within the Cosmetics division. The group is called *Fresh Skin*. If an Access Review for the group Fresh Skin is performed, based on the reporting structure and distance away from the other group members, Phil would be considered to have low affiliation. The system creates a **Deny** recommendation in the group access review.
## Next Steps - [Create an access review](create-access-review.md)-- [Review access to groups or applications](perform-access-review.md)
+- [Review access to groups or applications](perform-access-review.md)
active-directory Review Your Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/review-your-access.md
Title: Review your access to groups & apps in access reviews description: Learn how to review your own access to groups or applications in access reviews. -+ editor: markwahl-msft
na Previously updated : 12/22/2020- Last updated : 06/28/2023+
The first step to perform an access review is to find and open the access review
>[!IMPORTANT] > There could be delays in receiving email and it some cases it could take up to 24 hours. Add azure-noreply@microsoft.com to your safe recipients list to make sure that you are receiving all emails.
-1. Look for an email from Microsoft that asks you to review access. Here is an example email to review your access to a group.
+1. Look for an email from Microsoft that asks you to review access. Here's an example email to review your access to a group.
![Example email from Microsoft to review your access to a group](./media/review-your-access/access-review-email.png)
-1. Click the **Review access** link to open the access review.
+1. Select the **Review access** link to open the access review.
If you don't have the email, you can find your pending access reviews by following these steps.
If you don't have the email, you can find your pending access reviews by followi
![My Apps portal listing apps you have permissions to](./media/review-your-access/myapps-access-panel.png)
-1. In the upper-right corner of the page, click the user symbol, which displays your name and default organization. If more than one organization is listed, select the organization that requested an access review.
+1. In the upper-right corner of the page, select the user symbol, which displays your name and default organization. If more than one organization is listed, select the organization that requested an access review.
-1. On the right side of the page, click the **Access reviews** tile to see a list of the pending access reviews.
+1. On the right side of the page, select the **Access reviews** tile to see a list of the pending access reviews.
If the tile isn't visible, there are no access reviews to perform for that organization and no action is needed at this time. ![Pending access reviews list for your apps and groups](./media/review-your-access/access-reviews-list.png)
-1. Click the **Begin review** link for the access review you want to perform.
+1. Select the **Begin review** link for the access review you want to perform.
### Perform the access review
Once you have opened the access review, you can see your access.
1. Review your access and decide whether you still need access.
- If the request is to review access for others, the page will look different. For more information, see [Review access to groups or applications](perform-access-review.md).
+ If the request is to review access for others, the page looks different. For more information, see [Review access to groups or applications](perform-access-review.md).
![Screenshot that shows an open access review asking whether you still need access to a group.](./media/review-your-access/perform-access-review.png)
-1. Click **Yes** to keep your access or click **No** to remove your access.
+1. Select **Yes** to keep your access or select **No** to remove your access.
-1. If you click **Yes**, you might need to specify a justification in the **Reason** box.
+1. If you select **Yes**, you might need to specify a justification in the **Reason** box.
![Screenshot that shows a completed access review that asks whether you still need access to a group, with "Yes" selected.](./media/review-your-access/perform-access-review-submit.png)
-1. Click **Submit**.
+1. Select **Submit**.
- Your selection is submitted and you returned to the My Apps portal.
+ Your selection is submitted and you're returned to the My Apps portal.
If you want to change your response, reopen the access reviews page and update your response. You can change your response at any time until the access review has ended.
You can try the new experience with the updated user interface in My Access a co
![My Apps portal listing apps you have permissions to](./media/review-your-access/myapps-access-panel.png)
-2. Click the **Access reviews** tile to see a list of pending access reviews.
+2. Select the **Access reviews** tile to see a list of pending access reviews.
> [!NOTE] > If the **Access reviews** tile isn't visible, there are no access reviews to perform for that organization and no action is needed at this time.
-3. Click on **Try it!** in the banner at the top of the page to go to the new My Access experience.
+3. Select on **Try it!** in the banner at the top of the page to go to the new My Access experience.
![Pending access reviews list for apps and groups with the new experience available banner displayed during the preview](./media/review-your-access/banner-your-access.png)
You can try the new experience with the updated user interface in My Access a co
![Example email from Microsoft to review access to a group](./media/review-your-access/access-review-email-preview.png)
-2. Click the **Review access** link to open the access review.
+2. Select the **Review access** link to open the access review.
3. Continue in the section **Perform the access review**
You can also view your pending access reviews by using your browser to open My A
- **Resource** The name of the resource under review. - **Progress** The number of users reviewed over the total number of users part of this access review.
-2. Click on the name of an Access review to get started.
+2. Select on the name of an Access review to get started.
![Pending access reviews list for apps and groups](./media/review-your-access/access-reviews-list-preview.png) 3. Review your access and decide whether you still need access.
- If the request is to review access for others, the page will look different. For more information, see [Review access to groups or applications](perform-access-review.md).
+ If the request is to review access for others, the page looks different. For more information, see [Review access to groups or applications](perform-access-review.md).
![Open access review asking whether you still need access to a group](./media/review-your-access/review-access-preview.png) 1. Select **Yes** to keep your access or select **No** to remove your access.
-1. If you click **Yes**, you might need to specify a justification in the **Reason** box.
+1. If you select **Yes**, you might need to specify a justification in the **Reason** box.
![Completed access review asking whether you still need access to a group](./media/review-your-access/review-access-yes-preview.png)
-1. Click **Submit**.
+1. Select **Submit**.
- Your selection is submitted and you returned to the My Access page.
+ Your selection is submitted and you're returned to the My Access page.
If you want to change your response, reopen the access reviews page and update your response. You can change your response at any time until the access review has ended.
active-directory Sap https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/sap.md
Title: Manage access to your SAP applications
description: Learn how to bring identities from SAP SuccessFactors into Azure AD and provision access to SAP ECC, SAP S/4HANA, and other SAP applications. documentationcenter: ''-+ editor: markwahl-msft
na Previously updated : 5/12/2023- Last updated : 06/28/2023+
When a new employee is hired in your organization, you might need to trigger a w
With separation-of-duties checks now available in preview in Azure AD [entitlement management](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/ensure-compliance-using-separation-of-duties-checks-in-access/ba-p/2466939), customers can ensure that users don't take on excessive access rights: * Admins and access managers can prevent users from requesting additional access packages if they're already assigned to other access packages or are a member of other groups that are incompatible with the requested access.
-* Enterprises with critical regulatory requirements for SAP apps will have a single consistent view of access controls. They can then enforce separation-of-duties checks across their financial and other business-critical applications, along with Azure AD-integrated applications.
+* Enterprises with critical regulatory requirements for SAP apps have a single consistent view of access controls. They can then enforce separation-of-duties checks across their financial and other business-critical applications, along with Azure AD-integrated applications.
* With [Pathlock](https://pathlock.com/), integration customers can take advantage of fine-grained separation-of-duties checks with access packages in Azure AD. Over time, this ability will help customers address Sarbanes-Oxley and other compliance requirements. ## Next steps
active-directory Self Access Review https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/self-access-review.md
Title: Review your access to resources in access reviews description: Learn how to review your own access to resources in access reviews. -+ editor: markwahl-msft
na Previously updated : 08/27/2021- Last updated : 06/28/2023+
You can also view your pending access reviews by using your browser to open **My
1. Review your access and decide if you still need access.
- If the request is to review access for others, the page will look different. For more information, see [Review access to groups or applications](perform-access-review.md).
+ If the request is to review access for others, the page looks different. For more information, see [Review access to groups or applications](perform-access-review.md).
![Screenshot that shows an open access review that asks if you still need access to a group.](./media/self-access-review/review-access-preview.png)
active-directory Using Multi Stage Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/using-multi-stage-reviews.md
Title: Using multi-stage reviews to meet your attestation and certification needs - Microsoft Entra description: Learn how to use multi-stage reviews to design more efficient reviews with Microsoft Entra. -+ editor: florianf
na Previously updated : 11/15/2022- Last updated : 06/28/2023+
An example would be a review of a group that grants an IT exception, that an adm
Guest user reviews help organizations that use Azure AD B2B for collaboration. These guest usersΓÇÖ access should be reviewed regularly to check on whether these guest users have the right access still, and that collaboration is still desired, so revoking access or a cleanup of guest user accounts that are no longer needed is possible.
-This scenario can be configured with multi-stage reviews similar to how the "Reduce burden on later stage reviewers" scenario works. First, ask guest users to self-review and attest their continued interest and need for collaboration, including the requirement to provide a business justification. Only self-approved guests are progressed to a later stage, where an internal employee or sponsor approve or deny continued access or collaboration.
+This scenario can be configured with multi-stage reviews similar to how the "Reduce burden on later stage reviewers" scenario works. First, ask guest users to self-review and attest their continued interest and need for collaboration, including the requirement to provide a business justification. Only self-approved guests are progressed to a later stage, where an internal employee or sponsor approves or denies continued access or collaboration.
-For guest user reviews, also consider leveraging the **Inactive users (on tenant level) only** setting. This will scope the review to inactive external users that have not signed in to the resource tenant in the number of specified days.
+For guest user reviews, also consider leveraging the **Inactive users (on tenant level) only** setting. This will scope the review to inactive external users that haven't signed in to the resource tenant in the number of specified days.
In scenarios for guest users, Access Reviews supports an extra configuration option: **Action to apply on denied guest users**, which can result in either:
Review administrators define the duration of every review stage and therefore, h
:::image type="content" source="media/using-multi-stage-reviews/using-multi-stage-reviews.png" alt-text="Screenshot of using multi-stage reviews." lightbox="media/using-multi-stage-reviews/using-multi-stage-reviews.png":::
-Each review stage will stay open for reviewers to add decisions for the length of the duration. Review administrators can stop a running stage and automatically progress the overall review to the next review stage on the reviewer overview page, by selecting **Stop current stage**.
+Each review stage stays open for reviewers to add decisions for the length of the duration. Review administrators can stop a running stage and automatically progress the overall review to the next review stage on the reviewer overview page, by selecting **Stop current stage**.
## Application of results
active-directory How To Connect Configure Ad Ds Connector Account https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/how-to-connect-configure-ad-ds-connector-account.md
-+ # Azure AD Connect: Configure AD DS Connector Account Permissions
active-directory How To Connect Health Agent Install https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/how-to-connect-health-agent-install.md
Last updated 01/26/2023
-+ # Install the Azure AD Connect Health agents
active-directory Reference Connect Adconnectivitytools https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/reference-connect-adconnectivitytools.md
-+ # Azure AD Connect: ADConnectivityTools PowerShell Reference
active-directory Reference Connect Adsync https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/reference-connect-adsync.md
-+ # Azure AD Connect: ADSync PowerShell Reference
active-directory Reference Connect Adsynctools https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/reference-connect-adsynctools.md
-+ # Azure AD Connect: ADSyncTools PowerShell Reference
active-directory Cross Tenant Synchronization Configure Graph https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/multi-tenant-organizations/cross-tenant-synchronization-configure-graph.md
Previously updated : 05/31/2023 Last updated : 06/28/2023
These steps describe how to use Microsoft Graph Explorer (recommended), but you
Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam" ```
-1. Use the [Get-MgServicePrincipal](/powershell/module/microsoft.graph.applications/get-mgserviceprincipal?branch=main) command to get the service principal ID.
+1. Use the [Get-MgServicePrincipal](/powershell/module/microsoft.graph.applications/get-mgserviceprincipal?branch=main) command to get the service principal ID and app role ID.
```powershell Get-MgServicePrincipal -Filter "DisplayName eq 'Fabrikam'" | Format-List
These steps describe how to use Microsoft Graph Explorer (recommended), but you
AppRoleAssignedTo : AppRoleAssignmentRequired : True AppRoleAssignments :
- AppRoles : {<AppRolesId>}
+ AppRoles : {<AppRoleId>}
ApplicationTemplateId : 518e5f48-1fc8-4c48-9387-9fdf28b0dfe7 ClaimsMappingPolicies : CreatedObjects :
These steps describe how to use Microsoft Graph Explorer (recommended), but you
... ```
+1. Initialize a variable for the service principal ID.
+
+ Be sure to use the service principal ID instead of the application ID.
+
+ ```powershell
+ $ServicePrincipalId = "<ServicePrincipalId>"
+ ```
+
+1. Initialize a variable for the app role ID.
+
+ ```powershell
+ $AppRoleId= "<AppRoleId>"
+ ```
+ # [Microsoft Graph](#tab/ms-graph) 1. In the source tenant, use the [applicationTemplate: instantiate](/graph/api/applicationtemplate-instantiate?branch=main) API to add an instance of a configuration application from the Azure AD application gallery into your tenant.
These steps describe how to use Microsoft Graph Explorer (recommended), but you
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.applicationServicePrincipal", "application": {
- "objectId": "{objectId}",
+ "id": "{id}",
"appId": "{appId}", "applicationTemplateId": "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7",
+ "createdDateTime": "2023-06-18T23:26:24Z",
+ "deletedDateTime": null,
"displayName": "Fabrikam",
- "homepage": "{homepage}",
- "identifierUris": [],
- "publicClient": null,
- "replyUrls": [],
- "logoutUrl": null,
- "samlMetadataUrl": null,
- "errorUrl": null,
+ "description": null,
"groupMembershipClaims": null,
- "availableToOtherTenants": false,
- "requiredResourceAccess": []
+ "identifierUris": [],
+ "isFallbackPublicClient": false,
+ "signInAudience": "AzureADMyOrg",
+ "tags": [],
+ "tokenEncryptionKeyId": null,
+ "defaultRedirectUri": null,
+ "optionalClaims": null,
+ "addIns": [],
+ "api": {
+ "acceptMappedClaims": null,
+ "knownClientApplications": [],
+ "requestedAccessTokenVersion": null,
+ "oauth2PermissionScopes": [
+ {
+ "adminConsentDescription": "Allow the application to access Fabrikam on behalf of the signed-in user.",
+ "adminConsentDisplayName": "Access Fabrikam",
+ "id": "{id}",
+ "isEnabled": true,
+ "type": "User",
+ "userConsentDescription": "Allow the application to access Fabrikam on your behalf.",
+ "userConsentDisplayName": "Access Fabrikam",
+ "value": "user_impersonation"
+ }
+ ],
+ "preAuthorizedApplications": []
+ },
+ "appRoles": [
+ {
+ "allowedMemberTypes": [
+ "User"
+ ],
+ "displayName": "msiam_access",
+ "id": "{appRoleId}",
+ "isEnabled": true,
+ "description": "msiam_access",
+ "value": null,
+ "origin": "Application"
+ }
+ ],
+ "info": {
+ "logoUrl": null,
+ "marketingUrl": null,
+ "privacyStatementUrl": null,
+ "supportUrl": null,
+ "termsOfServiceUrl": null
+ },
+ "keyCredentials": [],
+ "parentalControlSettings": {
+ "countriesBlockedForMinors": [],
+ "legalAgeGroupRule": "Allow"
+ },
+ "passwordCredentials": [],
+ "publicClient": {
+ "redirectUris": []
+ },
+ "requiredResourceAccess": [],
+ "verifiedPublisher": {
+ "displayName": null,
+ "verifiedPublisherId": null,
+ "addedDateTime": null
+ },
+ "web": {
+ "homePageUrl": "https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=aad2aadsync|ISV9.1|primary|z",
+ "redirectUris": [],
+ "logoutUrl": null
+ }
}, "servicePrincipal": {
- "objectId": "{objectId}",
- "deletionTimestamp": null,
+ "id": "{servicePrincipalId}",
+ "deletedDateTime": null,
"accountEnabled": true, "appId": "{appId}",
- "appDisplayName": "Fabrikam",
"applicationTemplateId": "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7",
- "appOwnerTenantId": "{targetTenantId}",
- "appRoleAssignmentRequired": true,
+ "appDisplayName": "Fabrikam",
+ "alternativeNames": [],
+ "appOwnerOrganizationId": "{appOwnerOrganizationId}",
"displayName": "Fabrikam",
- "errorUrl": null,
+ "appRoleAssignmentRequired": true,
"loginUrl": null, "logoutUrl": null,
- "homepage": "{homepage}",
- "samlMetadataUrl": null,
- "microsoftFirstParty": null,
- "publisherName": "{tenantDisplayName}",
+ "homepage": "https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=aad2aadsync|ISV9.1|primary|z",
+ "notificationEmailAddresses": [],
"preferredSingleSignOnMode": null, "preferredTokenSigningKeyThumbprint": null,
- "preferredTokenSigningKeyEndDateTime": null,
"replyUrls": [], "servicePrincipalNames": [ "{appId}" ],
+ "servicePrincipalType": "Application",
"tags": [ "WindowsAzureActiveDirectoryIntegratedApp" ],
- "notificationEmailAddresses": [],
+ "tokenEncryptionKeyId": null,
"samlSingleSignOnSettings": null,
+ "addIns": [],
+ "appRoles": [
+ {
+ "allowedMemberTypes": [
+ "User"
+ ],
+ "displayName": "msiam_access",
+ "id": "{appRoleId}",
+ "isEnabled": true,
+ "description": "msiam_access",
+ "value": null,
+ "origin": "Application"
+ }
+ ],
+ "info": {
+ "logoUrl": null,
+ "marketingUrl": null,
+ "privacyStatementUrl": null,
+ "supportUrl": null,
+ "termsOfServiceUrl": null
+ },
"keyCredentials": [],
- "passwordCredentials": []
+ "oauth2PermissionScopes": [
+ {
+ "adminConsentDescription": "Allow the application to access Fabrikam on behalf of the signed-in user.",
+ "adminConsentDisplayName": "Access Fabrikam",
+ "id": "{id}",
+ "isEnabled": true,
+ "type": "User",
+ "userConsentDescription": "Allow the application to access Fabrikam on your behalf.",
+ "userConsentDisplayName": "Access Fabrikam",
+ "value": "user_impersonation"
+ }
+ ],
+ "passwordCredentials": [],
+ "verifiedPublisher": {
+ "displayName": null,
+ "verifiedPublisherId": null,
+ "addedDateTime": null
+ }
} } ```
+
+1. Save the servicePrincipalId.
+
+ Be sure to use the service principal ID instead of the application ID.
-1. Save the service principal object ID.
+1. Save the appRoleId.
These steps describe how to use Microsoft Graph Explorer (recommended), but you
# [PowerShell](#tab/ms-powershell)
-1. Initialize a variable with the service principal ID from the previous step.
-
- Be sure to use the service principal ID instead of the application ID.
-
- ```powershell
- $ServicePrincipalId = "<ServicePrincipalId>"
- ```
- 1. In the source tenant, use the [Invoke-MgGraphRequest](/powershell/microsoftgraph/authentication-commands?branch=main#using-invoke-mggraphrequest) command to test the connection to the target tenant and validate the credentials. ```powershell
These steps describe how to use Microsoft Graph Explorer (recommended), but you
# [Microsoft Graph](#tab/ms-graph)
-1. Get the service principal object ID from the previous step.
-
- Be sure to use the service principal object ID instead of the application ID.
- 1. In the source tenant, use the [synchronizationJob: validateCredentials](/graph/api/synchronization-synchronizationjob-validatecredentials?branch=main) API to test the connection to the target tenant and validate the credentials. **Request**
In the source tenant, to enable provisioning, create a provisioning job.
nization/jobs/$entity]} ```
-1. Initialize the job ID for a later step.
+1. Initialize a variable for the job ID.
```powershell $JobId = "<JobId>"
In the source tenant, to enable provisioning, create a provisioning job.
POST https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs Content-type: application/json
- {
+ {
"templateId": "Azure2Azure" } ```
In the source tenant, to enable provisioning, create a provisioning job.
} ```
+1. Save the jobId.
+ ## Step 9: Save your credentials
In the source tenant, to enable provisioning, create a provisioning job.
PUT https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/secrets Content-Type: application/json
- {
- "value": [
+ {
+ "value": [
{ "key": "AuthenticationType", "value": "SyncPolicy" },
- {
- "key": "CompanyId",
- "value": "{targetTenantId}"
+ {
+ "key": "CompanyId",
+ "value": "{targetTenantId}"
}, { "key": "SyncNotificationSettings",
For cross-tenant synchronization to work, at least one internal user must be ass
$Params = @{ PrincipalId = "<PrincipalId>" ResourceId = $ServicePrincipalId
- AppRoleId = "<AppRoleId>"
+ AppRoleId = $AppRoleId
} New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $ServicePrincipalId -BodyParameter $Params | Format-List ```
Now that you have a configuration, you can test on-demand provisioning with one
# [PowerShell](#tab/ms-powershell)
-1. In the source tenant, use the [New-MgServicePrincipalSynchronizationJobOnDemand](/powershell/module/microsoft.graph.applications/new-mgserviceprincipalsynchronizationjobondemand?view=graph-powershell-beta&preserve-view=true&branch=main) command to provision a test user on demand.
+1. In the source tenant, use the [Get-MgServicePrincipalSynchronizationJobSchema](/powershell/module/microsoft.graph.applications/get-mgserviceprincipalsynchronizationjobschema?view=graph-powershell-beta&preserve-view=true&branch=main) command to get the schema rule ID.
+
+ ```powershell
+ $SynchronizationSchema = Get-MgServicePrincipalSynchronizationJobSchema -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
+ $SynchronizationSchema.SynchronizationRules | Format-List
+ ```
+
+ ```Output
+ ContainerFilter : Microsoft.Graph.PowerShell.Models.MicrosoftGraphContainerFilter
+ Editable : True
+ GroupFilter : Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroupFilter
+ Id : <RuleId>
+ Metadata : {defaultSourceObjectMappings, supportsProvisionOnDemand}
+ Name : USER_INBOUND_USER
+ ObjectMappings : {Provision Azure Active Directory Users, , , …}
+ Priority : 1
+ SourceDirectoryName : Azure Active Directory
+ TargetDirectoryName : Azure Active Directory (target tenant)
+ AdditionalProperties : {}
+ ```
+
+1. Initialize a variable for the rule ID.
+
+ ```powershell
+ $RuleId = "<RuleId>"
+ ```
+
+1. Use the [New-MgServicePrincipalSynchronizationJobOnDemand](/powershell/module/microsoft.graph.applications/new-mgserviceprincipalsynchronizationjobondemand?view=graph-powershell-beta&preserve-view=true&branch=main) command to provision a test user on demand.
```powershell $Params = @{
Now that you have a configuration, you can test on-demand provisioning with one
ObjectTypeName = "User" } )
- RuleId = "<RuleId>"
+ RuleId = $RuleId
} ) }
Now that you have a configuration, you can test on-demand provisioning with one
# [Microsoft Graph](#tab/ms-graph)
+1. In the source tenant, use the [Get synchronizationSchema](/graph/api/synchronization-synchronizationschema-get?branch=main) API to get the schema rule ID.
+
+ **Request**
+
+ ```http
+ GET https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
+ ```
+
+ **Response**
+
+ ```http
+ {
+ "@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals('{servicePrincipalId}')/synchronization/jobs('{jobId}')/schema/$entity",
+ "id": "{jobId}",
+ "version": "v1.2",
+ "synchronizationRules": [
+ {
+ "containerFilter": null,
+ "editable": true,
+ "groupFilter": null,
+ "id": "{ruleId}",
+ "name": "USER_INBOUND_USER",
+ "priority": 1,
+ "sourceDirectoryName": "Azure Active Directory",
+ "targetDirectoryName": "Azure Active Directory (target tenant)",
+ "metadata": [
+
+ ...
+ ```
+
1. In the source tenant, use the [synchronizationJob: provisionOnDemand](/graph/api/synchronization-synchronizationjob-provision-on-demand?branch=main) API to provision a test user on demand. **Request**
Now that you have a configuration, you can test on-demand provisioning with one
} ```
+ **Response**
+
+ ```http
+ {
+ "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.stringKeyStringValuePair",
+ "key": "Microsoft.Identity.Health.CPP.Common.DataContracts.SyncFabric.StatusInfo",
+ "value": "[{\"provisioningSteps\":[{\"name\":\"EntryImport\",\"type\":\"Import\",\"status\":\"Success\",\"description\":\"Retrieved User 'user1@fabrikam.com' from Azure Active Directory\",\"timestamp\":\"2023-06-19T00:00:16.7866324Z\",\"details\":{\"objectId\":\"{userObjectId}\",\"accountEnabled\":\"True\",\"displayName\":\"User1\",\"mailNickname\":\"user1\",\"userPrincipalName\":\"user1@fabrikam.com\",}
+
+ ...
+ ```
+ ## Step 12: Start the provisioning job
active-directory Groups Approval Workflow https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/groups-approval-workflow.md
-# Approve activation requests for group members and owners
+# Approve activation requests for group members and owners
-With Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), part of Microsoft Entra, you can configure activation of group membership and ownership to require approval, and choose users or groups from your Azure AD organization as delegated approvers. We recommend selecting two or more approvers for each group. Delegated approvers have 24 hours to approve requests. If a request is not approved within 24 hours, then the eligible user must re-submit a new request. The 24 hour approval time window is not configurable.
+With Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), which is part of Microsoft Entra, you can configure activation of group membership and ownership to require approval. You can also choose users or groups from your Azure AD organization as delegated approvers.
+
+We recommend that you select two or more approvers for each group. Delegated approvers have 24 hours to approve requests. If a request isn't approved within 24 hours, the eligible user must resubmit a new request. The 24-hour approval time window isn't configurable.
Follow the steps in this article to approve or deny requests for group membership or ownership. ## View pending requests
-As a delegated approver, you'll receive an email notification when an Azure resource role request is pending your approval. You can view pending requests in Privileged Identity Management.
+As a delegated approver, you receive an email notification when an Azure resource role request is pending your approval. You can view pending requests in Privileged Identity Management.
1. [Sign in to the Azure portal](https://portal.azure.com).
-1. Select **Azure AD Privileged Identity Management -> Approve requests -> Groups**.
+1. Select **Azure AD Privileged Identity Management** > **Approve requests** > **Groups**.
-1. In the **Requests for role activations** section, you'll see a list of requests pending your approval.
+1. In the **Requests for role activations** section, you see a list of requests pending your approval.
- :::image type="content" source="media/pim-for-groups/pim-group-9.png" alt-text="Screenshot of requests for role activations." lightbox="media/pim-for-groups/pim-group-9.png":::
+ :::image type="content" source="media/pim-for-groups/pim-group-9.png" alt-text="Screenshot that shows requests for role activations." lightbox="media/pim-for-groups/pim-group-9.png":::
## Approve requests
As a delegated approver, you'll receive an email notification when an Azure reso
1. In the **Justification** box, enter the business justification.
-1. Select **Confirm**. An Azure notification is generated by your approval.
+1. Select **Confirm**. Your approval generates an Azure notification.
- :::image type="content" source="media/pim-for-groups/pim-group-10.png" alt-text="Screenshot of an Azure notification that is generated by your approval." lightbox="media/pim-for-groups/pim-group-10.png":::
+ :::image type="content" source="media/pim-for-groups/pim-group-10.png" alt-text="Screenshot that shows an Azure notification that's generated by your approval." lightbox="media/pim-for-groups/pim-group-10.png":::
## Deny requests
As a delegated approver, you'll receive an email notification when an Azure reso
1. In the **Justification** box, enter the business justification.
-1. Select **Confirm**. An Azure notification is generated by the denial.
+1. Select **Confirm**. Your denial generates an Azure notification.
## Workflow notifications
Here's some information about workflow notifications:
- Requests are resolved by the first approver who approves or denies. - When an approver responds to the request, all approvers are notified of the action.
->[!Note]
->An administrator who believes that an approved user should not be active can remove the active group assignment in Privileged Identity Management. Although resource administrators are not notified of pending requests unless they are an approver, they can view and cancel pending requests for all users by viewing pending requests in Privileged Identity Management.
+> [!NOTE]
+> An administrator who believes that an approved user shouldn't be active can remove the active group assignment in Privileged Identity Management. Resource administrators aren't notified of pending requests unless they're an approver. But they can view and cancel pending requests for all users by viewing pending requests in Privileged Identity Management.
## Troubleshoot
-### Permissions are not granted after activating a role
+Here's a troubleshooting tip.
+
+### Permissions aren't granted after you activate a role
-When you activate a role in Privileged Identity Management, the activation may not instantly propagate to all portals that require the privileged role. Sometimes, even if the change is propagated, web caching in a portal may result in the change not taking effect immediately. If your activation is delayed, here is what you should do.
+When you activate a role in Privileged Identity Management, the activation might not instantly propagate to all portals that require the privileged role. Sometimes, even if the change is propagated, web caching in a portal might result in the change not taking effect immediately.
+
+If your activation is delayed:
1. Sign out of the Azure portal and then sign back in.
-1. In Privileged Identity Management, verify that you are listed as the member of the role.
+1. In Privileged Identity Management, verify that you're listed as the member of the role.
## Next steps -- [Configure PIM for Groups settings](groups-role-settings.md)-
+[Configure PIM for Groups settings](groups-role-settings.md)
active-directory Groups Role Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/groups-role-settings.md
# Configure PIM for Groups settings
-In Privileged Identity Management (PIM) for groups in Azure Active Directory (Azure AD), part of Microsoft Entra, role settings define membership or ownership assignment properties: MFA and approval requirements for activation, assignment maximum duration, notification settings, etc. Use the following steps to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
+In Privileged Identity Management (PIM) for groups in Azure Active Directory (Azure AD), which is part of Microsoft Entra, role settings define membership or ownership assignment properties. These properties include multifactor authentication and approval requirements for activation, assignment maximum duration, and notification settings. This article shows you how to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
-You will need group management permissions to manage settings. For role-assignable groups, you need to have Global Administrator, Privileged Role Administrator role, or be an Owner of the group. For non-role assignable groups, you need to have Global Administrator, Directory Writer, Groups Administrator, Identity Governance Administrator, User Administrator role, or be an Owner of the group. Role assignments for administrators should be scoped at directory level (not Administrative Unit level).
+You need group management permissions to manage settings. For role-assignable groups, you must have a Global Administrator or Privileged Role Administrator role or be an owner of the group. For non-role assignable groups, you must have a Global Administrator, Directory Writer, Groups Administrator, Identity Governance Administrator, or User Administrator role or be an owner of the group. Role assignments for administrators should be scoped at directory level (not at the administrative unit level).
> [!NOTE]
-> Other roles with permissions to manage groups (such as Exchange Administrators for non-role-assignable M365 groups) and administrators with assignments scoped at administrative unit level can manage groups through Groups API/UX and override changes made in Azure AD PIM.
-
-Role settings are defined per role per group: all assignments for the same role (member or owner) for the same group follow same role settings. Role settings of one group are independent from role settings of another group. Role settings for one role (member) are independent from role settings for another role (owner).
+> Other roles with permissions to manage groups (such as Exchange administrators for non-role-assignable Microsoft 365 groups) and administrators with assignments scoped at the administrative unit level can manage groups through the Groups API/UX and override changes made in Azure AD Privileged Identity Management.
+Role settings are defined per role per group. All assignments for the same role (member or owner) for the same group follow the same role settings. Role settings of one group are independent from the role settings of another group. Role settings for one role (member) are independent from role settings for another role (owner).
## Update role settings
-Follow these steps to open the settings for a group role.
+To open the settings for a group role:
1. [Sign in to the Azure portal](https://portal.azure.com).
-1. Select **Azure AD Privileged Identity Management -> Groups**.
+1. Select **Azure AD Privileged Identity Management** > **Groups**.
-1. Select the group that you want to configure role settings for.
+1. Select the group for which you want to configure role settings.
1. Select **Settings**.
-1. Select the role you need to configure role settings for ΓÇô **Member** or **Owner**.
+1. Select the role for which you need to configure role settings. The options are **Member** or **Owner**.
- :::image type="content" source="media/pim-for-groups/pim-group-17.png" alt-text="Screenshot of where to select the role you need to configure role settings for." lightbox="media/pim-for-groups/pim-group-17.png":::
+ :::image type="content" source="media/pim-for-groups/pim-group-17.png" alt-text="Screenshot that shows where to select the role for which you need to configure role settings." lightbox="media/pim-for-groups/pim-group-17.png":::
1. Review current role settings.
-1. Select **Edit** to update role settings.
+1. Select **Edit** to update role settings.
- :::image type="content" source="media/pim-for-groups/pim-group-18.png" alt-text="Screenshot of where to select Edit to update role settings." lightbox="media/pim-for-groups/pim-group-18.png":::
+ :::image type="content" source="media/pim-for-groups/pim-group-18.png" alt-text="Screenshot that shows where to select Edit to update role settings." lightbox="media/pim-for-groups/pim-group-18.png":::
-1. Once finished, select **Update**.
+1. Select **Update**.
## Role settings
+This section discusses role settings options.
+ ### Activation maximum duration Use the **Activation maximum duration** slider to set the maximum time, in hours, that an activation request for a role assignment remains active before it expires. This value can be from one to 24 hours.
-### On activation, require multi-factor authentication
+### On activation, require multifactor authentication
-You can require users who are eligible for a role to prove who they are using Azure AD Multi-Factor Authentication before they can activate. Multi-factor authentication helps safeguard access to data and applications, providing another layer of security by using a second form of authentication.
+You can require users who are eligible for a role to prove who they are by using the multifactor authentication feature in Azure AD before they can activate. Multifactor authentication helps safeguard access to data and applications. It provides another layer of security by using a second form of authentication.
-> [!NOTE]
-> User may not be prompted for multi-factor authentication if they authenticated with strong credentials, or provided multi-factor authentication earlier in this session. If your goal is to ensure that users have to provide authentication during activation, you can use [On activation, require Azure AD Conditional Access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md) to require users to authenticate during activation using methods different from the one they used to sign-in to the machine. For example, if users sign-in to the machine using Windows Hello for Business, you can use ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥ and Authentication Strengths to require users to do Passwordless sign-in with Microsoft Authenticator when they activate the role. After the user provides Passwordless sign-in with Microsoft Authenticator once in this example, they'll be able to do their next activation in this session without additional authentication because Passwordless sign-in with Microsoft Authenticator will already be part of their token.
->
-> It's recommended to enable Azure AD Multi-Factor Authentication for all users. For more information, see [Plan an Azure Active Directory Multi-Factor Authentication deployment](../authentication/howto-mfa-getstarted.md).
+Users might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in this session. If your goal is to ensure that users have to provide authentication during activation, you can use [On activation, require Azure AD conditional access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md).
-### On activation, require Azure AD Conditional Access authentication context
+Users are required to authenticate during activation by using methods different from the one they used to sign in to the machine. For example, if users sign in to the machine by using Windows Hello for Business, you can use **On activation, require Azure AD conditional access authentication context** and **Authentication Strengths** to require users to do passwordless sign-in with Microsoft Authenticator when they activate the role.
-You can require users who are eligible for a role to satisfy Conditional Access policy requirements: use specific authentication method enforced through Authentication Strengths, elevate the role from Intune compliant device, comply with Terms of Use, and more.
+After the user provides passwordless sign-in with Microsoft Authenticator once in this example, they're able to do their next activation in this session without another authentication. Passwordless sign-in with Microsoft Authenticator is already part of their token.
-To enforce this requirement, you need to:
+We recommend that you enable the multifactor authentication feature in Azure AD for all users. For more information, see [Plan an Azure AD multifactor authentication deployment](../authentication/howto-mfa-getstarted.md).
-1. Create Conditional Access authentication context.
+### On activation, require Azure AD conditional access authentication context
-1. Configure Conditional Access policy that would enforce requirements for this authentication context.
- > [!NOTE]
- > The scope of the Conditional Access policy should include all or eligible users for group membership/ownership. Do not create a Conditional Access policy scoped to authentication context and group at the same time because during activation a user does not have group membership yet, and the Conditional Access policy would not apply.
-1. Configure authentication context in PIM settings for the role.
+You can require users who are eligible for a role to satisfy conditional access policy requirements. For example, you can require users to use a specific authentication method enforced through Authentication Strengths, elevate the role from an Intune-compliant device, and comply with terms of use.
+To enforce this requirement, you create conditional access authentication context.
-> [!NOTE]
-> If PIM settings have ΓÇ£**On activation, require Azure AD Conditional Access authentication context**ΓÇ¥ configured, Conditional Access policies define what conditions user needs to meet in order to satisfy the access requirements. This means that security principals with permissions to manage Conditional Access policies such as Conditional Access Administrators or Security Administrators may change requirements, remove them, or block eligible users from activating their group membership/ownership. Security principals that can manage Conditional Access policies should be considered highly privileged and protected accordingly.
+1. Configure a conditional access policy that would enforce requirements for this authentication context.
-> [!NOTE]
-> We recommend creating and enabling Conditional Access policy for the authentication context before the authentication context is configured in PIM settings. As a backup protection mechanism, if there are no Conditional Access policies in the tenant that target authentication context configured in PIM settings, during group membership/ownership activation, Azure AD Multi-Factor Authentication is required as the [On activation, require multi-factor authentication](groups-role-settings.md#on-activation-require-multi-factor-authentication) setting would be set. This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the Conditional Access policy is created, due to a configuration mistake. This backup protection mechanism will not be triggered if the Conditional Access policy is turned off, in report-only mode, or has eligible users excluded from the policy.
+ The scope of the conditional access policy should include all or eligible users for group membership/ownership. Don't create a conditional access policy scoped to authentication context and group at the same time. During activation, a user doesn't have group membership yet, so the conditional access policy wouldn't apply.
-> [!NOTE]
-> **ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥** setting defines authentication context, requirements for which users will need to satisfy when they activate group membership/ownership. After group membership/ownership is activated, this does not prevent users from using another browsing session, device, location, etc. to use group membership/ownership. For example, user may use Intune compliant device to activate group membership/ownership, then after the role is activated, sign-in to the same user account from another device that is not Intune compliant, and use previously activated group ownership/membership from there. To protect from this situation, you may scope Conditional Access policies enforcing certain requirements to eligible users directly. For example, you can require users eligible to certain group membership/ownership to always use Intune compliant devices.
+1. Configure authentication context in PIM settings for the role.
+
+ :::image type="content" source="media/pim-for-groups/pim-group-21.png" alt-text="Screenshot that shows the Edit role setting - Member page." lightbox="media/pim-for-groups/pim-group-21.png":::
+
+If PIM settings have **On activation, require Azure AD conditional access authentication context** configured, conditional access policies define what conditions users must meet to satisfy the access requirements.
-To learn more about Conditional Access authentication context, see [Conditional Access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
+This means that security principals with permissions to manage conditional access policies, such as conditional access administrators or security administrators, can change requirements, remove them, or block eligible users from activating their group membership/ownership. Security principals that can manage conditional access policies should be considered highly privileged and protected accordingly.
+
+We recommend that you create and enable a conditional access policy for the authentication context before the authentication context is configured in PIM settings. As a backup protection mechanism, if there are no conditional access policies in the tenant that target authentication context configured in PIM settings, during group membership/ownership activation, the multifactor authentication feature in Azure AD is required as the [On activation, require multifactor authentication](groups-role-settings.md#on-activation-require-multifactor-authentication) setting would be set.
+
+This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the conditional access policy was created because of a configuration mistake. This backup protection mechanism isn't triggered if the conditional access policy is turned off, is in report-only mode, or has eligible users excluded from the policy.
+
+The **On activation, require Azure AD conditional access authentication context** setting defines the authentication context requirements that users must satisfy when they activate group membership/ownership. After group membership/ownership is activated, users aren't prevented from using another browsing session, device, or location to use group membership/ownership.
+
+For example, users might use an Intune-compliant device to activate group membership/ownership. Then after the role is activated, they might sign in to the same user account from another device that isn't Intune compliant and use the previously activated group ownership/membership from there.
+
+To prevent this situation, you can scope conditional access policies to enforce certain requirements for eligible users directly. For example, you can require users who are eligible for certain group membership/ownership to always use Intune-compliant devices.
+
+To learn more about conditional access authentication context, see [Conditional access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
### Require justification on activation
-You can require that users enter a business justification when they activate the eligible assignment.
+You can require users to enter a business justification when they activate the eligible assignment.
### Require ticket information on activation
-You can require that users enter a support ticket when they activate the eligible assignment. This is information only field and correlation with information in any ticketing system isn't enforced.
+You can require users to enter a support ticket when they activate the eligible assignment. This option is an information-only field. Correlation with information in any ticketing system isn't enforced.
### Require approval to activate
-You can require approval for activation of eligible assignment. Approver doesnΓÇÖt have to be group member or owner. When using this option, you have to select at least one approver (we recommend selecting at least two approvers), there are no default approvers.
+You can require approval for activation of an eligible assignment. The approver doesn't have to be a group member or owner. When you use this option, you must select at least one approver. We recommend that you select at least two approvers. There are no default approvers.
To learn more about approvals, see [Approve activation requests for PIM for Groups members and owners](groups-approval-workflow.md). ### Assignment duration
-You can choose from two assignment duration options for each assignment type (eligible and active) when you configure settings for a role. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
+When you configure settings for a role, you can choose from two assignment duration options for each assignment type: *eligible* and *active*. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
-You can choose one of these **eligible** assignment duration options:
+You can choose one of these eligible assignment duration options.
-| | Description |
+| Setting | Description |
| | |
-| **Allow permanent eligible assignment** | Resource administrators can assign permanent eligible assignment. |
-| **Expire eligible assignment after** | Resource administrators can require that all eligible assignments have a specified start and end date. |
+| Allow permanent eligible assignment | Resource administrators can assign permanent eligible assignments. |
+| Expire eligible assignment after | Resource administrators can require that all eligible assignments have a specified start and end date. |
-And, you can choose one of these **active** assignment duration options:
+You can also choose one of these active assignment duration options.
-| | Description |
+| Setting | Description |
| | |
-| **Allow permanent active assignment** | Resource administrators can assign permanent active assignment. |
-| **Expire active assignment after** | Resource administrators can require that all active assignments have a specified start and end date. |
+|Allow permanent active assignment | Resource administrators can assign permanent active assignments. |
+| Expire active assignment after | Resource administrators can require that all active assignments have a specified start and end date. |
-> [!NOTE]
-> All assignments that have a specified end date can be renewed by resource administrators. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
+All assignments that have a specified end date can be renewed by resource administrators. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
-### Require multi-factor authentication on active assignment
+### Require multifactor authentication on active assignment
-You can require that administrator or group owner provides multi-factor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multi-factor authentication when the user uses their role assignment because they are already active in the role from the time that it is assigned.
+You can require that an administrator or group owner provides multifactor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multifactor authentication when the user uses their role assignment because they're already active in the role from the time that it's assigned.
-Administrator or group owner may not be prompted for multi-factor authentication if they authenticated with strong credential or provided multi-factor authentication earlier in this session.
+An administrator or group owner might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in this session.
### Require justification on active assignment You can require that users enter a business justification when they create an active (as opposed to eligible) assignment.
-In the **Notifications** tab on the role settings page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive.
+On the **Notifications** tab on the **Role settings** page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive. You have the following options:
-- **Turning off an email**<br>You can turn off specific emails by clearing the default recipient check box and deleting any other recipients. -- **Limit emails to specified email addresses**<br>You can turn off emails sent to default recipients by clearing the default recipient check box. You can then add other email addresses as recipients. If you want to add more than one email address, separate them using a semicolon (;).-- **Send emails to both default recipients and more recipients**<br>You can send emails to both default recipient and another recipient by selecting the default recipient checkbox and adding email addresses for other recipients.-- **Critical emails only**<br>For each type of email, you can select the check box to receive critical emails only. What this means is that Privileged Identity Management will continue to send emails to the specified recipients only when the email requires an immediate action. For example, emails asking users to extend their role assignment will not be triggered while an email requiring admins to approve an extension request will be triggered.
+- **Turning off an email**: You can turn off specific emails by clearing the default recipient checkbox and deleting any other recipients.
+- **Limit emails to specified email addresses**: You can turn off emails sent to default recipients by clearing the default recipient checkbox. You can then add other email addresses as recipients. If you want to add more than one email address, separate them by using a semicolon (;).
+- **Send emails to both default recipients and more recipients**: You can send emails to both the default recipient and another recipient. Select the default recipient checkbox and add email addresses for other recipients.
+- **Critical emails only**: For each type of email, you can select the checkbox to receive critical emails only. Privileged Identity Management continues to send emails to the specified recipients only when the email requires immediate action. For example, emails that ask users to extend their role assignment aren't triggered. Emails that require admins to approve an extension request are triggered.
-## Manage role settings using Microsoft Graph
+## Manage role settings by using Microsoft Graph
-To manage role settings for groups using PIM APIs in Microsoft Graph, use the [unifiedRoleManagementPolicy resource type and its related methods](/graph/api/resources/unifiedrolemanagementpolicy).
+To manage role settings for groups by using PIM APIs in Microsoft Graph, use the [unifiedRoleManagementPolicy resource type and its related methods](/graph/api/resources/unifiedrolemanagementpolicy).
-In Microsoft Graph, role settings are referred to as rules and they're assigned to groups through container policies. You can retrieve all policies that are scoped to a group and for each policy, retrieve the associated collection of rules by using an `$expand` query parameter. The syntax for the request is as follows:
+In Microsoft Graph, role settings are referred to as rules. They're assigned to groups through container policies. You can retrieve all policies that are scoped to a group and for each policy. Retrieve the associated collection of rules by using an `$expand` query parameter. The syntax for the request is as follows:
```http GET https://graph.microsoft.com/beta/policies/roleManagementPolicies?$filter=scopeId eq '{groupId}' and scopeType eq 'Group'&$expand=rules ```
-For more information about managing role settings through PIM APIs in Microsoft Graph, see [Role settings and PIM](/graph/api/resources/privilegedidentitymanagement-for-groups-api-overview#policy-settings-in-pim-for-groups). For examples of updating rules, see [Update rules in PIM using Microsoft Graph](/graph/how-to-pim-update-rules).
+For more information about how to manage role settings through PIM APIs in Microsoft Graph, see [Role settings and PIM](/graph/api/resources/privilegedidentitymanagement-for-groups-api-overview#policy-settings-in-pim-for-groups). For examples of how to update rules, see [Update rules in PIM by using Microsoft Graph](/graph/how-to-pim-update-rules).
## Next steps -- [Assign eligibility for a group in Privileged Identity Management](groups-assign-member-owner.md)
+[Assign eligibility for a group in Privileged Identity Management](groups-assign-member-owner.md)
active-directory Pim How To Change Default Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/pim-how-to-change-default-settings.md
# Configure Azure AD role settings in Privileged Identity Management
-In Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), part of Microsoft Entra, role settings define role assignment properties: MFA and approval requirements for activation, assignment maximum duration, notification settings, and more. Use the following steps to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
+In Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), which is part of Microsoft Entra, role settings define role assignment properties. These properties include multifactor authentication and approval requirements for activation, assignment maximum duration, and notification settings. This article shows you how to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
-You need to have Global Administrator or Privileged Role Administrator role to manage PIM role settings for Azure AD Role. Role settings are defined per role: all assignments for the same role follow the same role settings. Role settings of one role are independent from role settings of another role.
-
-PIM role settings are also known as ΓÇ£PIM PoliciesΓÇ¥.
+You must have the Global Administrator or Privileged Role Administrator role to manage PIM role settings for an Azure AD role. Role settings are defined per role. All assignments for the same role follow the same role settings. Role settings of one role are independent from role settings of another role.
+PIM role settings are also known as PIM policies.
## Open role settings
-Follow these steps to open the settings for an Azure AD role.
+To open the settings for an Azure AD role:
-1. [Sign in to the Azure portal](https://portal.azure.com/)
+1. [Sign in to the Azure portal](https://portal.azure.com/).
-1. Select **Azure AD Privileged Identity Management -> Azure AD Roles -> Roles**. On this page you can see list of Azure AD roles available in the tenant, including built-in and custom roles.
- :::image type="content" source="media/pim-how-to-change-default-settings/role-settings.png" alt-text="Screenshot of the list of Azure AD roles available in the tenant, including built-in and custom roles." lightbox="media/pim-how-to-change-default-settings/role-settings.png":::
+1. Select **Azure AD Privileged Identity Management** > **Azure AD Roles** > **Roles**. This page shows a list of Azure AD roles available in the tenant, including built-in and custom roles.
+ :::image type="content" source="media/pim-how-to-change-default-settings/role-settings.png" alt-text="Screenshot that shows the list of Azure AD roles available in the tenant, including built-in and custom roles." lightbox="media/pim-how-to-change-default-settings/role-settings.png":::
1. Select the role whose settings you want to configure.
-1. Select **Role settings**. On the Role settings page you can view current PIM role settings for the selected role.
+1. Select **Role settings**. On the **Role settings** page, you can view current PIM role settings for the selected role.
+
+ :::image type="content" source="media/pim-how-to-change-default-settings/role-settings-edit.png" alt-text="Screenshot that shows the Role settings page with options to update assignment and activation settings." lightbox="media/pim-how-to-change-default-settings/role-settings-edit.png":::
- :::image type="content" source="media/pim-how-to-change-default-settings/role-settings-edit.png" alt-text="Screenshot of the role settings page with options to update assignment and activation settings." lightbox="media/pim-how-to-change-default-settings/role-settings-edit.png":::
+1. Select **Edit** to update role settings.
-1. Select Edit to update role settings.
+1. Select **Update**.
-1. Once finished, select Update.
+## Role settings
-## Role settings
+This section discusses role settings options.
### Activation maximum duration Use the **Activation maximum duration** slider to set the maximum time, in hours, that an activation request for a role assignment remains active before it expires. This value can be from one to 24 hours.
-### On activation, require multi-factor authentication
+### On activation, require multifactor authentication
+
+You can require users who are eligible for a role to prove who they are by using the multifactor authentication feature in Azure AD before they can activate. Multifactor authentication helps safeguard access to data and applications. It provides another layer of security by using a second form of authentication.
+
+Users might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in the session.
+
+If your goal is to ensure that users must provide authentication during activation, you can use [On activation, require Azure AD conditional access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md). These options require users to authenticate during activation by using methods different from the one they used to sign in to the machine.
+
+For example, if users sign in to the machine by using Windows Hello for Business, you can use **On activation, require Azure AD conditional access authentication context** and **Authentication Strengths**. This option requires users to do passwordless sign-in with Microsoft Authenticator when they activate the role.
+
+After the user provides passwordless sign-in with Microsoft Authenticator once in this example, they can do their next activation in this session without another authentication. Passwordless sign-in with Microsoft Authenticator is already part of their token.
+
+We recommend that you enable the multifactor authentication feature of Azure AD for all users. For more information, see [Plan an Azure AD multifactor authentication deployment](../authentication/howto-mfa-getstarted.md).
+
+### On activation, require Azure AD conditional access authentication context
+
+You can require users who are eligible for a role to satisfy conditional access policy requirements. For example, you can require users to use a specific authentication method enforced through Authentication Strengths, elevate the role from an Intune-compliant device, and comply with terms of use.
+
+To enforce this requirement, you create the conditional access authentication context.
+
+1. Configure a conditional access policy that enforces requirements for this authentication context.
+
+ The scope of the conditional access policy should include all or eligible users for a role. Don't create a conditional access policy scoped to authentication context and a directory role at the same time. During activation, the user doesn't have a role yet, so the conditional access policy wouldn't apply.
-You can require users who are eligible for a role to prove who they are using Azure AD Multi-Factor Authentication before they can activate. Multi-factor authentication helps safeguard access to data and applications, providing another layer of security by using a second form of authentication.
+ See the steps at the end of this section about a situation when you might need two conditional access policies. One must be scoped to the authentication context and another must be scoped to the role.
+1. Configure authentication context in PIM settings for the role.
-> [!NOTE]
-> User may not be prompted for multi-factor authentication if they authenticated with strong credentials, or provided multi-factor authentication earlier in this session. If your goal is to ensure that users have to provide authentication during activation, you can use [On activation, require Azure AD Conditional Access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md) to require users to authenticate during activation using methods different from the one they used to sign-in to the machine. For example, if users sign-in to the machine using Windows Hello for Business, you can use ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥ and Authentication Strengths to require users to do Passwordless sign-in with Microsoft Authenticator when they activate the role. After the user provides Passwordless sign-in with Microsoft Authenticator once in this example, they'll be able to do their next activation in this session without additional authentication because Passwordless sign-in with Microsoft Authenticator will already be part of their token.
->
-> It's recommended to enable Azure AD Multi-Factor Authentication for all users. For more information, see [Plan an Azure Active Directory Multi-Factor Authentication deployment](../authentication/howto-mfa-getstarted.md).
+ :::image type="content" source="media/pim-how-to-change-default-settings/role-settings-page.png" alt-text="Screenshot that shows the Edit role setting - Attribute Definition Administrator page." lightbox="media/pim-how-to-change-default-settings/role-settings-page.png":::
-### On activation, require Azure AD Conditional Access authentication context
+If PIM settings have **On activation, require Azure AD conditional access authentication context** configured, the conditional access policies define conditions a user must meet to satisfy the access requirements.
-You can require users who are eligible for a role to satisfy Conditional Access policy requirements: use specific authentication method enforced through Authentication Strengths, elevate the role from Intune compliant device, comply with Terms of Use, and more.
+This means that security principals with permissions to manage conditional access policies, such as conditional access administrators or security administrators, can change requirements, remove them, or block eligible users from activating the role. Security principals that can manage the conditional access policies should be considered highly privileged and protected accordingly.
-To enforce this requirement, you need to:
+We recommend that you create and enable a conditional access policy for the authentication context before the authentication context is configured in PIM settings. As a backup protection mechanism, if there are no conditional access policies in the tenant that target authentication context configured in PIM settings, during PIM role activation, the multifactor authentication feature in Azure AD is required as the [On activation, require multifactor authentication](pim-how-to-change-default-settings.md#on-activation-require-multifactor-authentication) setting would be set.
-1. Create Conditional Access authentication context.
+This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the conditional access policy was created because of a configuration mistake. This backup protection mechanism isn't triggered if the conditional access policy is turned off, is in report-only mode, or has an eligible user excluded from the policy.
-1. Configure Conditional Access policy that would enforce requirements for this authentication context.
- > [!NOTE]
- > The scope of the Conditional Access policy should include all or eligible users for a role. Do not create a Conditional Access policy scoped to authentication context and directory role at the same time because during activation the user does not have a role yet, and the Conditional Access policy would not apply. See the note at the end of this section about a situation when you may need two Conditional Access policies, one scoped to the authentication context, and another scoped to the role.
-1. Configure authentication context in PIM settings for the role.
+The **On activation, require Azure AD conditional access authentication context** setting defines the authentication context requirements that users must satisfy when they activate the role. After the role is activated, users aren't prevented from using another browsing session, device, or location to use permissions.
+For example, users might use an Intune-compliant device to activate the role. Then after the role is activated, they might sign in to the same user account from another device that isn't Intune compliant and use the previously activated role from there.
-> [!NOTE]
-> If PIM settings have **ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥** configured, the Conditional Access policies define conditions a user needs to meet to satisfy the access requirements. This means that security principals with permissions to manage Conditional Access policies such as Conditional Access Administrators or Security Administrators may change requirements, remove them, or block eligible users from activating the role. Security principals that can manage the Conditional Access policies should be considered highly privileged and protected accordingly.
+To prevent this situation, create two conditional access policies:
+1. The first conditional access policy targets authentication context. It should have all users or eligible users in its scope. This policy specifies the requirements that users must meet to activate the role.
+1. The second conditional access policy targets directory roles. This policy specifies the requirements that users must meet to sign in with the directory role activated.
-> [!NOTE]
-> We recommend creating and enabling a Conditional Access policy for the authentication context before authentication context is configured in PIM settings. As a backup protection mechanism, if there are no Conditional Access policies in the tenant that target authentication context configured in PIM settings, during PIM role activation, Azure AD Multi-Factor Authentication is required as the [On activation, require multi-factor authentication](pim-how-to-change-default-settings.md#on-activation-require-multi-factor-authentication) setting would be set. This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the Conditional Access policy is created, due to a configuration mistake. This backup protection mechanism won't be triggered if the Conditional Access policy is turned off, in report-only mode, or has eligible user excluded from the policy.
+Both policies can enforce the same or different requirements depending on your needs.
-> [!NOTE]
-> **ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥** setting defines authentication context, requirements for which the user will need to satisfy when they activate the role. After the role is activated, this does not prevent users from using another browsing session, device, location, etc. to use permissions. For example, users may use an Intune compliant device to activate the role, then after the role is activated sign-in to the same user account from another device that is not Intune compliant, and use the previously activated role from there.
-> To protect from this situation, create two Conditional Access policies:
->1. The first Conditional Access policy targeted to authentication context. It should have ΓÇ£*All users*ΓÇ¥ or eligible users in its scope. This policy will specify requirements the user needs to meet to activate the role.
->1. The second Conditional Access policy targeted to directory roles. This policy will specify requirements users need to meet to sign-in with directory role activated.
->
->Both policies can enforce the same, or different, requirements depending on your needs.
->
->Another option is to scope Conditional Access policies enforcing certain requirements to eligible users directly. For example you can require users eligible for certain roles to always use Intune compliant devices.
+Another option is to scope conditional access policies that enforce certain requirements to eligible users directly. For example, you can require users who are eligible for certain roles to always use Intune-compliant devices.
-To learn more about Conditional Access authentication context, see [Conditional Access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
+To learn more about conditional access authentication context, see [Conditional access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
### Require justification on activation
You can require users to enter a business justification when they activate the e
### Require ticket information on activation
-You can require users to enter a support ticket number when they activate the eligible assignment. This is information-only field and correlation with information in any ticketing system is not enforced.
+You can require users to enter a support ticket number when they activate the eligible assignment. This option is an information-only field. Correlation with information in any ticketing system isn't enforced.
### Require approval to activate
-You can require approval for activation of eligible assignment. Approver doesnΓÇÖt have to have any roles. When using this option, you have to select at least one approver (we recommend to select at least two approvers), there are no default approvers.
+You can require approval for activation of an eligible assignment. The approver doesn't have to have any roles. When you use this option, you must select at least one approver. We recommend that you select at least two approvers. There are no default approvers.
To learn more about approvals, see [Approve or deny requests for Azure AD roles in Privileged Identity Management](azure-ad-pim-approval-workflow.md). ### Assignment duration
-You can choose from two assignment duration options for each assignment type (eligible and active) when you configure settings for a role. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
+When you configure settings for a role, you can choose from two assignment duration options for each assignment type: *eligible* and *active*. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
-You can choose one of these **eligible** assignment duration options:
+You can choose one of these eligible assignment duration options.
| Setting | Description | | | |
-| Allow permanent eligible assignment | Resource administrators can assign permanent eligible assignment. |
+| Allow permanent eligible assignment | Resource administrators can assign permanent eligible assignments. |
| Expire eligible assignment after | Resource administrators can require that all eligible assignments have a specified start and end date. |
-And, you can choose one of these **active** assignment duration options:
+You can also choose one of these active assignment duration options.
| Setting | Description | | | |
-| Allow permanent active assignment | Resource administrators can assign permanent active assignment. |
+| Allow permanent active assignment | Resource administrators can assign permanent active assignments. |
| Expire active assignment after | Resource administrators can require that all active assignments have a specified start and end date. |
-> [!NOTE]
-> All assignments that have a specified end date can be renewed by Global admins and Privileged role admins. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
+All assignments that have a specified end date can be renewed by Global admins and Privileged Role admins. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
-### Require multi-factor authentication on active assignment
+### Require multifactor authentication on active assignment
-You can require that administrator provides multi-factor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multi-factor authentication when the user uses their role assignment because they are already active in the role from the time that it is assigned.
+You can require that administrators provide multifactor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multifactor authentication when the user uses their role assignment because they're already active in the role from the time that it's assigned.
-Administrator may not be prompted for multi-factor authentication if they authenticated with strong credential or provided multi-factor authentication earlier in this session.
+An administrator might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in this session.
### Require justification on active assignment You can require that users enter a business justification when they create an active (as opposed to eligible) assignment.
-In the **Notifications** tab on the role settings page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive.
+On the **Notifications** tab on the **Role settings** page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive. You have the following options:
-- **Turning off an email**</br>
-You can turn off specific emails by clearing the default recipient check box and deleting any other recipients.
-- **Limit emails to specified email addresses**</br>
-You can turn off emails sent to default recipients by clearing the default recipient check box. You can then add other email addresses as recipients. If you want to add more than one email address, separate them using a semicolon (;).
-- **Send emails to both default recipients and more recipients**</br>
-You can send emails to both default recipient and another recipient by selecting the default recipient checkbox and adding email addresses for other recipients.
-- **Critical emails only**</br>
-For each type of email, you can select the check box to receive critical emails only. What this means is that Privileged Identity Management will continue to send emails to the specified recipients only when the email requires an immediate action. For example, emails asking users to extend their role assignment will not be triggered while emails requiring admins to approve an extension request will be triggered.
+- **Turning off an email**: You can turn off specific emails by clearing the default recipient checkbox and deleting any other recipients.
+- **Limit emails to specified email addresses**: You can turn off emails sent to default recipients by clearing the default recipient checkbox. You can then add other email addresses as recipients. If you want to add more than one email address, separate them by using a semicolon (;).
+- **Send emails to both default recipients and more recipients**: You can send emails to both the default recipient and another recipient. Select the default recipient checkbox and add email addresses for other recipients.
+- **Critical emails only**: For each type of email, you can select the checkbox to receive critical emails only. With this option, Privileged Identity Management continues to send emails to the specified recipients only when the email requires immediate action. For example, emails that ask users to extend their role assignment aren't triggered. Emails that require admins to approve an extension request are triggered.
-## Manage role settings using Microsoft Graph
+## Manage role settings by using Microsoft Graph
-To manage settings for Azure AD roles using PIM APIs in Microsoft Graph, use the [unifiedRoleManagementPolicy resource type and related methods](/graph/api/resources/unifiedrolemanagementpolicy).
+To manage settings for Azure AD roles by using PIM APIs in Microsoft Graph, use the [unifiedRoleManagementPolicy resource type and related methods](/graph/api/resources/unifiedrolemanagementpolicy).
-In Microsoft Graph, role settings are referred to as rules and they're assigned to Azure AD roles through container policies. Each Azure AD role is assigned a specific policy object. You can retrieve all policies that are scoped to Azure AD roles and for each policy, retrieve the associated collection of rules by using an `$expand` query parameter. The syntax for the request is as follows:
+In Microsoft Graph, role settings are referred to as rules. They're assigned to Azure AD roles through container policies. Each Azure AD role is assigned a specific policy object. You can retrieve all policies that are scoped to Azure AD roles. For each policy, you can retrieve the associated collection of rules by using an `$expand` query parameter. The syntax for the request is as follows:
```http GET https://graph.microsoft.com/v1.0/policies/roleManagementPolicies?$filter=scopeId eq '/' and scopeType eq 'DirectoryRole'&$expand=rules ```
-For more information about managing role settings through PIM APIs in Microsoft Graph, see [Role settings and PIM](/graph/api/resources/privilegedidentitymanagementv3-overview#role-settings-and-pim). For examples of updating rules, see [Update rules in PIM using Microsoft Graph](/graph/how-to-pim-update-rules).
+For more information about how to manage role settings through PIM APIs in Microsoft Graph, see [Role settings and PIM](/graph/api/resources/privilegedidentitymanagementv3-overview#role-settings-and-pim). For examples of how to update rules, see [Update rules in PIM by using Microsoft Graph](/graph/how-to-pim-update-rules).
## Next steps
active-directory Pim Resource Roles Configure Role Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/pim-resource-roles-configure-role-settings.md
# Configure Azure resource role settings in Privileged Identity Management
-In Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), part of Microsoft Entra, role settings define role assignment properties: MFA and approval requirements for activation, assignment maximum duration, notification settings, and more. Use the following steps to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
+In Privileged Identity Management (PIM) in Azure Active Directory (Azure AD), which is part of Microsoft Entra, role settings define role assignment properties. These properties include multifactor authentication and approval requirements for activation, assignment maximum duration, and notification settings. This article shows you how to configure role settings and set up the approval workflow to specify who can approve or deny requests to elevate privilege.
-You need to have Owner or User Access Administrator role to manage PIM role settings for the resource. Role settings are defined per role and per resource: all assignments for the same role follow the same role settings. Role settings of one role are independent from role settings of another role. Role settings of one resource are independent from role settings of another resource, and role settings configured on a higher level, such as "Subscription" for example, aren't inherited on a lower level, such as "Resource Group" for example.
+You must have an Owner or User Access Administrator role to manage PIM role settings for the resource. Role settings are defined per role and per resource. All assignments for the same role follow the same role settings. Role settings of one role are independent from role settings of another role. Role settings of one resource are independent from role settings of another resource. Role settings configured on a higher level, such as **Subscription**, for example, aren't inherited on a lower level, such as **Resource Group**.
-PIM role settings are also known as ΓÇ£PIM PoliciesΓÇ¥.
+PIM role settings are also known as PIM policies.
## Open role settings
-Follow these steps to open the settings for an Azure resource role.
+To open the settings for an Azure resource role:
-1. [Sign in to the Azure portal](https://portal.azure.com/)
+1. [Sign in to the Azure portal](https://portal.azure.com/).
-1. Select **Azure AD Privileged Identity Management -> Azure Resources**. On this page you can see list of Azure resources discovered in PIM. Use Resource type filter to select all required resource types.
+1. Select **Azure AD Privileged Identity Management** > **Azure Resources**. This page shows a list of Azure resources discovered in Privileged Identity Management. Use the **Resource type** filter to select all required resource types.
- :::image type="content" source="media/pim-resource-roles-configure-role-settings/resources-list.png" alt-text="Screenshot of the list of Azure resources discovered in PIM." lightbox="media/pim-resource-roles-configure-role-settings/resources-list.png":::
+ :::image type="content" source="media/pim-resource-roles-configure-role-settings/resources-list.png" alt-text="Screenshot that shows the list of Azure resources discovered in Privileged Identity Management." lightbox="media/pim-resource-roles-configure-role-settings/resources-list.png":::
-1. Select the resource that you need to configure PIM role settings for.
+1. Select the resource for which you need to configure PIM role settings.
-1. Select **Settings**. View list of PIM policies for a selected resource.
+1. Select **Settings**. View a list of PIM policies for a selected resource.
- :::image type="content" source="media/pim-resource-roles-configure-role-settings/resources-role-settings.png" alt-text="Screenshot of the list of PIM policies for a selected resource." lightbox="media/pim-resource-roles-configure-role-settings/resources-role-settings.png":::
+ :::image type="content" source="media/pim-resource-roles-configure-role-settings/resources-role-settings.png" alt-text="Screenshot that shows the list of PIM policies for a selected resource." lightbox="media/pim-resource-roles-configure-role-settings/resources-role-settings.png":::
1. Select the role or policy that you want to configure.
-1. Select Edit to update role settings.
+1. Select **Edit** to update role settings.
-1. Once finished, select Update.
+1. Select **Update**.
-## Role settings
+## Role settings
+
+This section discusses options for role settings.
### Activation maximum duration
-Use the **Activation maximum duration** slider to set the maximum time, in hours, that an activation request for a role assignment remains active before it expires. This value can be from one to 24 hours.
+Use the **Activation maximum duration** slider to set the maximum time, in hours, that an activation request for a role assignment remains active before it expires. This value can be from 1 to 24 hours.
+
+### On activation, require multifactor authentication
+
+You can require users who are eligible for a role to prove who they are by using the multifactor authentication feature in Azure AD before they can activate. Multifactor authentication helps safeguard access to data and applications. It provides another layer of security by using a second form of authentication.
+
+Users might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in this session.
+
+If your goal is to ensure that users must provide authentication during activation, you can use [On activation, require Azure AD conditional access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md). These options require users to authenticate during activation by using methods different from the one they used to sign in to the machine.
+
+For example, if users sign in to the machine by using Windows Hello for Business, you can use **On activation, require Azure AD conditional access authentication context** and **Authentication Strengths** to require users to do passwordless sign-in with Microsoft Authenticator when they activate the role.
+
+After the user provides passwordless sign-in with Microsoft Authenticator once in this example, they can do their next activation in this session without another authentication. Passwordless sign-in with Microsoft Authenticator is already part of their token.
+
+We recommend that you enable the multifactor authentication feature of Azure AD for all users. For more information, see [Plan an Azure AD multifactor authentication deployment](../authentication/howto-mfa-getstarted.md).
+
+### On activation, require Azure AD conditional access authentication context
-### On activation, require multi-factor authentication
+You can require users who are eligible for a role to satisfy conditional access policy requirements. For example, you can require users to use a specific authentication method enforced through Authentication Strengths, elevate the role from an Intune-compliant device, and comply with terms of use.
-You can require users who are eligible for a role to prove who they are using Azure AD Multi-Factor Authentication before they can activate. Multi-factor authentication helps safeguard access to data and applications, providing another layer of security by using a second form of authentication.
+To enforce this requirement, you create conditional access authentication context.
-> [!NOTE]
-> User may not be prompted for multi-factor authentication if they authenticated with strong credentials, or provided multi-factor authentication earlier in this session. If your goal is to ensure that users have to provide authentication during activation, you can use [On activation, require Azure AD Conditional Access authentication context](pim-how-to-change-default-settings.md#on-activation-require-azure-ad-conditional-access-authentication-context) together with [Authentication Strengths](../authentication/concept-authentication-strengths.md) to require users to authenticate during activation using methods different from the one they used to sign-in to the machine. For example, if users sign-in to the machine using Windows Hello for Business, you can use ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥ and Authentication Strengths to require users to do Passwordless sign-in with Microsoft Authenticator when they activate the role. After the user provides Passwordless sign-in with Microsoft Authenticator once in this example, they'll be able to do their next activation in this session without additional authentication because Passwordless sign-in with Microsoft Authenticator will already be part of their token.
->
-> It's recommended to enable Azure AD Multi-Factor Authentication for all users. For more information, see [Plan an Azure Active Directory Multi-Factor Authentication deployment](../authentication/howto-mfa-getstarted.md).
+1. Configure a conditional access policy that would enforce requirements for this authentication context.
+1. Configure an authentication context in PIM settings for the role.
-### On activation, require Azure AD Conditional Access authentication context
+ :::image type="content" source="media/pim-resource-roles-configure-role-settings/resources-role-setting-details.png" alt-text="Screenshot that shows the Edit role settings Attestation Reader page." lightbox="media/pim-resource-roles-configure-role-settings/resources-role-setting-details.png":::
-You can require users who are eligible for a role to satisfy Conditional Access policy requirements: use specific authentication method enforced through Authentication Strengths, elevate the role from Intune compliant device, comply with Terms of Use, and more.
+If PIM settings have **On activation, require Azure AD conditional access authentication context** configured, the conditional access policies define conditions a user must meet to satisfy the access requirements.
-To enforce this requirement, you need to:
+This means that security principals with permissions to manage conditional access policies, such as conditional access administrators or security administrators, can change requirements, remove them, or block eligible users from activating the role. Security principals that can manage the conditional access policies should be considered highly privileged and protected accordingly.
-1. Create Conditional Access authentication context.
-1. Configure Conditional Access policy that would enforce requirements for this authentication context.
-1. Configure authentication context in PIM settings for the role.
+We recommend that you create and enable a conditional access policy for the authentication context before the authentication context is configured in PIM settings. As a backup protection mechanism, if there are no conditional access policies in the tenant that target authentication context configured in PIM settings, during PIM role activation, the multifactor authentication feature in Azure AD is required as the [On activation, require multifactor authentication](pim-resource-roles-configure-role-settings.md#on-activation-require-multifactor-authentication) setting would be set.
+This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the conditional access policy was created because of a configuration mistake. This backup protection mechanism isn't triggered if the conditional access policy is turned off, is in report-only mode, or has an eligible user excluded from the policy.
-> [!NOTE]
-> If PIM settings have **ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥** configured, the Conditional Access policies define conditions a user needs to meet to satisfy the access requirements. This means that security principals with permissions to manage Conditional Access policies such as Conditional Access Administrators or Security Administrators may change requirements, remove them, or block eligible users from activating the role. Security principals that can manage the Conditional Access policies should be considered highly privileged and protected accordingly.
+The **On activation, require Azure AD conditional access authentication context** setting defines the authentication context requirements that users must satisfy when they activate the role. After the role is activated, users aren't prevented from using another browsing session, device, or location to use permissions.
-> [!NOTE]
-> We recommend creating and enabling a Conditional Access policy for the authentication context before the authentication context is configured in PIM settings. As a backup protection mechanism, if there are no Conditional Access policies in the tenant that target authentication context configured in PIM settings, during PIM role activation, Azure AD Multi-Factor Authentication is required as the [On activation, require multi-factor authentication](pim-resource-roles-configure-role-settings.md#on-activation-require-multi-factor-authentication) setting would be set. This backup protection mechanism is designed to solely protect from a scenario when PIM settings were updated before the Conditional Access policy is created, due to a configuration mistake. This backup protection mechanism won't be triggered if the Conditional Access policy is turned off, in report-only mode, or has eligible user excluded from the policy.
+For example, users might use an Intune-compliant device to activate the role. Then after the role is activated, they might sign in to the same user account from another device that isn't Intune compliant and use the previously activated role from there.
-> [!NOTE]
-> **ΓÇ£On activation, require Azure AD Conditional Access authentication contextΓÇ¥** setting defines authentication context, requirements for which users will need to satisfy when they activate the role. After the role is activated, this does not prevent user from using another browsing session, device, location, etc. to use permissions. For example, users may use an Intune compliant device to activate the role, then after the role is activated sign-in to the same user account from another device that is not Intune compliant, and use the previously activated role from there. To protect from this situation, you may scope Conditional Access policies enforcing certain requirements to eligible users directly. For example you can require users eligible for certain roles to always use Intune compliant devices.
+To prevent this situation, you can scope conditional access policies to enforce certain requirements for eligible users directly. For example, you can require users who are eligible for certain roles to always use Intune-compliant devices.
-To learn more about Conditional Access authentication context, see [Conditional Access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
+To learn more about conditional access authentication context, see [Conditional access: Cloud apps, actions, and authentication context](../conditional-access/concept-conditional-access-cloud-apps.md#authentication-context).
### Require justification on activation
You can require users to enter a business justification when they activate the e
### Require ticket information on activation
-You can require users to enter a support ticket number when they activate the eligible assignment. This is information-only field and correlation with information in any ticketing system is not enforced.
+You can require users to enter a support ticket number when they activate the eligible assignment. This option is an information-only field. Correlation with information in any ticketing system isn't enforced.
### Require approval to activate
-You can require approval for activation of eligible assignment. Approver doesnΓÇÖt have to have any roles. When using this option, you have to select at least one approver (we recommend to select at least two approvers), there are no default approvers.
+You can require approval for activation of an eligible assignment. The approver doesn't have to have any roles. When you use this option, you must select at least one approver. We recommend that you select at least two approvers. There are no default approvers.
To learn more about approvals, see [Approve or deny requests for Azure AD roles in Privileged Identity Management](azure-ad-pim-approval-workflow.md). ### Assignment duration
-You can choose from two assignment duration options for each assignment type (eligible and active) when you configure settings for a role. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
+When you configure settings for a role, you can choose from two assignment duration options for each assignment type: *eligible* and *active*. These options become the default maximum duration when a user is assigned to the role in Privileged Identity Management.
-You can choose one of these **eligible** assignment duration options:
+You can choose one of these eligible assignment duration options.
| Setting | Description | | | |
-| Allow permanent eligible assignment | Resource administrators can assign permanent eligible assignment. |
+| Allow permanent eligible assignment | Resource administrators can assign permanent eligible assignments. |
| Expire eligible assignment after | Resource administrators can require that all eligible assignments have a specified start and end date. |
-And, you can choose one of these **active** assignment duration options:
+You can also choose one of these active assignment duration options.
| Setting | Description | | | |
-| Allow permanent active assignment | Resource administrators can assign permanent active assignment. |
+| Allow permanent active assignment | Resource administrators can assign permanent active assignments. |
| Expire active assignment after | Resource administrators can require that all active assignments have a specified start and end date. |
-> [!NOTE]
-> All assignments that have a specified end date can be renewed by Global admins and Privileged role admins. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
+All assignments that have a specified end date can be renewed by Global admins and Privileged Role admins. Also, users can initiate self-service requests to [extend or renew role assignments](pim-resource-roles-renew-extend.md).
-### Require multi-factor authentication on active assignment
+### Require multifactor authentication on active assignment
-You can require that administrator provides multi-factor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multi-factor authentication when the user uses their role assignment because they are already active in the role from the time that it is assigned.
+You can require that an administrator provides multifactor authentication when they create an active (as opposed to eligible) assignment. Privileged Identity Management can't enforce multifactor authentication when the user uses their role assignment because they're already active in the role from the time that it's assigned.
-Administrator may not be prompted for multi-factor authentication if they authenticated with strong credential or provided multi-factor authentication earlier in this session.
+An administrator might not be prompted for multifactor authentication if they authenticated with strong credentials or provided multifactor authentication earlier in this session.
### Require justification on active assignment You can require that users enter a business justification when they create an active (as opposed to eligible) assignment.
-In the **Notifications** tab on the role settings page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive.
+On the **Notifications** tab on the **Role settings** page, Privileged Identity Management enables granular control over who receives notifications and which notifications they receive.
-- **Turning off an email**</br>
-You can turn off specific emails by clearing the default recipient check box and deleting any other recipients.
-- **Limit emails to specified email addresses**</br>
-You can turn off emails sent to default recipients by clearing the default recipient check box. You can then add other email addresses as recipients. If you want to add more than one email address, separate them using a semicolon (;).
-- **Send emails to both default recipients and more recipients**</br>
-You can send emails to both default recipient and another recipient by selecting the default recipient checkbox and adding email addresses for other recipients.
-- **Critical emails only**</br>
-For each type of email, you can select the check box to receive critical emails only. What this means is that Privileged Identity Management will continue to send emails to the specified recipients only when the email requires an immediate action. For example, emails asking users to extend their role assignment will not be triggered while emails requiring admins to approve an extension request will be triggered.
+- **Turning off an email**: You can turn off specific emails by clearing the default recipient checkbox and deleting any other recipients.
+- **Limit emails to specified email addresses**: You can turn off emails sent to default recipients by clearing the default recipient checkbox. You can then add other email addresses as recipients. If you want to add more than one email address, separate them by using a semicolon (;).
+- **Send emails to both default recipients and more recipients**: You can send emails to both the default recipient and another recipient. Select the default recipient checkbox and add email addresses for other recipients.
+- **Critical emails only**: For each type of email, you can select the checkbox to receive critical emails only. Privileged Identity Management continues to send emails to the specified recipients only when the email requires immediate action. For example, emails that ask users to extend their role assignment aren't triggered. Emails that require admins to approve an extension request are triggered.
## Next steps
active-directory Chengliye Smart Sms Platform Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/chengliye-smart-sms-platform-tutorial.md
+
+ Title: Azure Active Directory SSO integration with Chengliye Smart SMS Platform
+description: Learn how to configure single sign-on between Azure Active Directory and Chengliye Smart SMS Platform.
++++++++ Last updated : 06/28/2023++++
+# Azure Active Directory SSO integration with Chengliye Smart SMS Platform
+
+In this article, you'll learn how to integrate Chengliye Smart SMS Platform with Azure Active Directory (Azure AD). Chengliye Smart SMS Platform was founded in 2014, the company is primarily engaged in software development and telecommunications value-added services. It specializes in services such as SMS terminals and data transmission. When you integrate Chengliye Smart SMS Platform with Azure AD, you can:
+
+* Control in Azure AD who has access to Chengliye Smart SMS Platform.
+* Enable your users to be automatically signed-in to Chengliye Smart SMS Platform with their Azure AD accounts.
+* Manage your accounts in one central location - the Azure portal.
+
+You'll configure and test Azure AD single sign-on for Chengliye Smart SMS Platform in a test environment. Chengliye Smart SMS Platform supports **IDP** initiated single sign-on and **Just In Time** user provisioning.
+
+## Prerequisites
+
+To integrate Azure Active Directory with Chengliye Smart SMS Platform, you need:
+
+* An Azure AD user account. If you don't already have one, you can [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+* One of the following roles: Global Administrator, Cloud Application Administrator, Application Administrator, or owner of the service principal.
+* An Azure AD subscription. If you don't have a subscription, you can get a [free account](https://azure.microsoft.com/free/).
+* Chengliye Smart SMS Platform single sign-on (SSO) enabled subscription.
+
+## Add application and assign a test user
+
+Before you begin the process of configuring single sign-on, you need to add the Chengliye Smart SMS Platform application from the Azure AD gallery. You need a test user account to assign to the application and test the single sign-on configuration.
+
+### Add Chengliye Smart SMS Platform from the Azure AD gallery
+
+Add Chengliye Smart SMS Platform from the Azure AD application gallery to configure single sign-on with Chengliye Smart SMS Platform. For more information on how to add application from the gallery, see the [Quickstart: Add application from the gallery](../manage-apps/add-application-portal.md).
+
+### Create and assign Azure AD test user
+
+Follow the guidelines in the [create and assign a user account](../manage-apps/add-application-portal-assign-users.md) article to create a test user account in the Azure portal called B.Simon.
+
+Alternatively, you can also use the [Enterprise App Configuration Wizard](https://portal.office.com/AdminPortal/home?Q=Docs#/azureadappintegration). In this wizard, you can add an application to your tenant, add users/groups to the app, and assign roles. The wizard also provides a link to the single sign-on configuration pane in the Azure portal. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides).
+
+## Configure Azure AD SSO
+
+Complete the following steps to enable Azure AD single sign-on in the Azure portal.
+
+1. In the Azure portal, on the **Chengliye Smart SMS Platform** application integration page, find the **Manage** section and select **single sign-on**.
+1. On the **Select a single sign-on method** page, select **SAML**.
+1. On the **Set up single sign-on with SAML** page, select the pencil icon for **Basic SAML Configuration** to edit the settings.
+
+ ![Screenshot shows how to edit Basic SAML Configuration.](common/edit-urls.png "Basic Configuration")
+
+1. On the **Basic SAML Configuration** section, the user does not have to perform any step as the app is already pre-integrated with Azure.
+
+1. On the **Set up single sign-on with SAML** page, in the **SAML Signing Certificate** section, click copy button to copy **App Federation Metadata Url** and save it on your computer.
+
+ ![Screenshot shows the Certificate download link.](common/copy-metadataurl.png "Certificate")
+
+## Configure Chengliye Smart SMS Platform SSO
+
+To configure single sign-on on **Chengliye Smart SMS Platform** side, you need to send the **App Federation Metadata Url** to [Chengliye Smart SMS Platform support team](http://www.cly-chn.com). They set this setting to have the SAML SSO connection set properly on both sides.
+
+### Create Chengliye Smart SMS Platform test user
+
+In this section, a user called B.Simon is created in Chengliye Smart SMS Platform. Chengliye Smart SMS Platform supports just-in-time user provisioning, which is enabled by default. There's no action item for you in this section. If a user doesn't already exist in Chengliye Smart SMS Platform, a new one is commonly created after authentication.
+
+## Test SSO
+
+In this section, you test your Azure AD single sign-on configuration with following options.
+
+* Click on Test this application in Azure portal and you should be automatically signed in to the Chengliye Smart SMS Platform for which you set up the SSO.
+
+* You can use Microsoft My Apps. When you click the Chengliye Smart SMS Platform tile in the My Apps, you should be automatically signed in to the Chengliye Smart SMS Platform for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+
+## Next steps
+
+Once you configure Chengliye Smart SMS Platform you can enforce session control, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session control extends from Conditional Access. [Learn how to enforce session control with Microsoft Cloud App Security](/cloud-app-security/proxy-deployment-aad).
active-directory Fortigate Ssl Vpn Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/fortigate-ssl-vpn-tutorial.md
To configure the integration of FortiGate SSL VPN into Azure AD, you need to add
Alternatively, you can also use the [Enterprise App Configuration Wizard](https://portal.office.com/AdminPortal/home?Q=Docs#/azureadappintegration). In this wizard, you can add an application to your tenant, add users/groups to the app, assign roles, as well as walk through the SSO configuration as well. [Learn more about Microsoft 365 wizards.](/microsoft-365/admin/misc/azure-ad-setup-guides)
-Alternatively, you can also use the [Enterprise App Configuration Wizard](https://portal.office.com/AdminPortal/home?Q=Docs#/azureadappintegration). In this wizard, you can add an application to your tenant, add users/groups to the app, assign roles, as well as walk through the SSO configuration as well. You can learn more about O365 wizards [here](/microsoft-365/admin/misc/azure-ad-setup-guides?view=o365-worldwide&preserve-view=true).
- ## Configure and test Azure AD SSO for FortiGate SSL VPN You'll configure and test Azure AD SSO with FortiGate SSL VPN by using a test user named B.Simon. For SSO to work, you need to establish a link relationship between an Azure AD user and the corresponding SAML SSO user group in FortiGate SSL VPN.
active-directory Github Ae Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/github-ae-tutorial.md
Previously updated : 11/21/2022 Last updated : 06/21/2023
Follow these steps to enable Azure AD SSO in the Azure portal.
1. On the **Basic SAML Configuration** section, if you wish to configure the application in **IDP** initiated mode, perform the following steps: a. In the **Identifier (Entity ID)** text box, type a URL using the following pattern:
- `https://<YOUR-GITHUB-AE-HOSTNAME>`
+ `https://<YOUR-GITHUB-ENTERPRISE-SERVER-HOSTNAME>`
b. In the **Reply URL** text box, type a URL using the following pattern:
- `https://<YOUR-GITHUB-AE-HOSTNAME>/saml/consume`
+ `https://<YOUR-GITHUB-ENTERPRISE-SERVER-HOSTNAME>/saml/consume`
1. Click **Set additional URLs** and perform the following step if you wish to configure the application in **SP** initiated mode: In the **Sign on URL** text box, type a URL using the following pattern:
- `https://<YOUR-GITHUB-AE-HOSTNAME>/sso`
+ `https://<YOUR-GITHUB-ENTERPRISE-SERVER-HOSTNAME>/sso`
> [!NOTE] > These values are not real. Update these values with the actual Identifier, Reply URL and Sign on URL. Contact [GitHub Enterprise Server Client support team](mailto:support@github.com) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
Follow these steps to enable Azure AD SSO in the Azure portal.
1. Expand **Claim conditions** and select **Members** from **User type**.
-1. Click on **Select groups** and search for the **Group** you want to include this claim, where its members should be administrators for GHAE.
+1. Click on **Select groups** and search for the **Group** you want to include this claim, where its members should be administrators for GHES.
1. Select **Attribute** for **Source** and enter **true** (without quotes) for the **Value**.
In this section, you test your Azure AD single sign-on configuration with follow
#### SP initiated:
-* Click on **Test this application** in Azure portal. This will redirect to GitHub Enterprise Server Sign on URL where you can initiate the login flow.
+* Click on **Test this application** in Azure portal. This will redirect to GitHub Enterprise Server Sign-on URL where you can initiate the login flow.
* Go to GitHub Enterprise Server Sign-on URL directly and initiate the login flow from there.
In this section, you test your Azure AD single sign-on configuration with follow
* Click on **Test this application** in Azure portal and you should be automatically signed in to the GitHub Enterprise Server for which you set up the SSO.
-You can also use Microsoft My Apps to test the application in any mode. When you click the GitHub Enterprise Server tile in the My Apps, if configured in SP mode you would be redirected to the application sign on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the GitHub Enterprise Server for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
+You can also use Microsoft My Apps to test the application in any mode. When you click the GitHub Enterprise Server tile in the My Apps, if configured in SP mode you would be redirected to the application sign-on page for initiating the login flow and if configured in IDP mode, you should be automatically signed in to the GitHub Enterprise Server for which you set up the SSO. For more information about the My Apps, see [Introduction to the My Apps](../user-help/my-apps-portal-end-user-access.md).
## Next steps
active-directory Sonarqube Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/sonarqube-tutorial.md
Previously updated : 11/21/2022 Last updated : 06/28/2023
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
h. In **SAML user name attribute** text box, enter the value `http://schemas.microsoft.com/identity/claims/displayname`.
- i. In **SAML user email attribute** text box, enter the value `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`.
+ i. In **SAML user email attribute** text box, enter the value `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`.
j. Click **Save**.
In this section, you test your Azure AD single sign-on configuration with follow
## Next steps
-* Once you configure SonarQube, you can enforce session controls, which protects exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session controls extends from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
+* Once you configure SonarQube, you can enforce session controls, which protect exfiltration and infiltration of your organizationΓÇÖs sensitive data in real time. Session controls extend from Conditional Access. [Learn how to enforce session control with Microsoft Defender for Cloud Apps](/cloud-app-security/proxy-deployment-any-app).
advisor Advisor Reference Cost Recommendations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/advisor/advisor-reference-cost-recommendations.md
We've analyzed the usage patterns of your app service plan over the past 7 days
Learn more about [App Service plans](../app-service/overview-hosting-plans.md).
+### Unused/Empty App Service plans
+
+Your App Service plan has no apps running for at least 3 days. Consider deleting the resource to save costs.
+
+Learn more about [App Service plans](../app-service/overview-hosting-plans.md).
+ ## Azure Monitor For Azure Monitor cost optimization suggestions, please see [Optimize costs in Azure Monitor](../azure-monitor/best-practices-cost.md).
aks Azure Netapp Files Dual Protocol https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-netapp-files-dual-protocol.md
Title: Provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service description: Describes how to statically provision Azure NetApp Files dual-protocol volumes for Azure Kubernetes Service. -+ Last updated 05/08/2023
aks Cluster Extensions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/cluster-extensions.md
Title: Cluster extensions for Azure Kubernetes Service (AKS) description: Learn how to deploy and manage the lifecycle of extensions on Azure Kubernetes Service (AKS)-+ Last updated 05/15/2023
aks Custom Node Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/custom-node-configuration.md
Kubelet custom configuration is supported for Linux and Windows node pools. Supp
## Linux custom OS configuration settings
+> [!IMPORTANT]
+> To simplify search and readability, the OS settings are displayed in this article by their name, but they should be added to the configuration JSON file or AKS API using [camelCase capitalization convention](/dotnet/standard/design-guidelines/capitalization-conventions).
+>
+> For example, if you modify the 'vm.max_map_count setting', you should reformat to 'vmMaxMapCount' in the configuration JSON file.
+>
+ ### File handle limits When serving a lot of traffic, the traffic commonly comes from a large number of local files. You can adjust the below kernel settings and built-in limits to allow you to handle more, at the cost of some system memory.
The settings below can be used to tune the operation of the virtual memory (VM)
| `transparentHugePageEnabled` | `always`, `madvise`, `never` | `always` | [Transparent Hugepages](https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge) is a Linux kernel feature intended to improve performance by making more efficient use of your processorΓÇÖs memory-mapping hardware. When enabled the kernel attempts to allocate `hugepages` whenever possible and any Linux process will receive 2-MB pages if the `mmap` region is 2 MB naturally aligned. In certain cases when `hugepages` are enabled system wide, applications may end up allocating more memory resources. An application may `mmap` a large region but only touch 1 byte of it, in that case a 2-MB page might be allocated instead of a 4k page for no good reason. This scenario is why it's possible to disable `hugepages` system-wide or to only have them inside `MADV_HUGEPAGE madvise` regions. | | `transparentHugePageDefrag` | `always`, `defer`, `defer+madvise`, `madvise`, `never` | `madvise` | This value controls whether the kernel should make aggressive use of memory compaction to make more `hugepages` available. |
-> [!IMPORTANT]
-> For ease of search and readability the OS settings are displayed in this document by their name but should be added to the configuration json file or AKS API using [camelCase capitalization convention](/dotnet/standard/design-guidelines/capitalization-conventions).
+ ## Next steps
aks Deploy Application Az Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/deploy-application-az-cli.md
description: Learn how to deploy an Azure Kubernetes application programmaticall
+ Last updated 05/15/2023
aks Deploy Application Template https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/deploy-application-template.md
description: Learn how to deploy an Azure Kubernetes application by using an ARM
+ Last updated 05/15/2023
Once you've accepted the terms, you can deploy your ARM template. For instructio
- Learn about [Kubernetes applications available through Marketplace](deploy-marketplace.md). - Learn about [cluster extensions](cluster-extensions.md).-
aks Deploy Extensions Az Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/deploy-extensions-az-cli.md
Title: Deploy and manage cluster extensions by using the Azure CLI
description: Learn how to use Azure CLI to deploy and manage extensions for Azure Kubernetes Service clusters. Last updated 05/15/2023 +
az k8s-extension delete --name azureml --cluster-name <clusterName> --resource-g
[use-managed-identity]: ./use-managed-identity.md [workload-identity-overview]: workload-identity-overview.md [use-azure-ad-pod-identity]: use-azure-ad-pod-identity.md-
aks Egress Outboundtype https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/egress-outboundtype.md
Previously updated : 05/12/2023 Last updated : 06/06/2023 #Customer intent: As a cluster operator, I want to define my own egress paths with user-defined routes. Since I define this up front I do not want AKS provided load balancer configurations.
The following tables show the supported migration paths between outbound types f
### Supported Migration Paths for Managed VNet
-| | SLB | Managed NATGateway | BYO NATGateway | userDefinedNATGateway |
-|-|--|--|-|--|
-| SLB | N/A | Supported | Not Supported | Not Supported |
-| Managed NATGateway | Supported | N/A | Not Supported | Not Supported |
-| BYO NATGateway | Supported | Not Supported | N/A | Not Supported |
-| User Defined NATGateway | Supported | Not Supported | Supported | N/A |
+| | loadBalancer | managedNATGateway | userAssignedNATGateway | userDefinedRouting |
+||--|-||--|
+| loadBalancer | N/A | Supported | Not Supported | Not Supported |
+| managedNATGateway | Supported | N/A | Not Supported | Supported |
+| userAssignedNATGateway | Supported | Not Supported | N/A | Not Supported |
+| userDefinedRouting | Supported | Supported | Supported | N/A |
### Supported Migration Paths for BYO VNet
-| | SLB | Managed NATGateway | BYO NATGateway | userDefinedNATGateway |
-|-||--|-|--|
-| SLB | N/A | Supported | Supported | Supported |
-| Managed NATGateway | Supported | N/A | Not Supported | Not Supported |
-| BYO NATGateway | Supported | Not Supported | N/A | Supported |
-| User Defined NATGateway | Not Supported | Not Supported | Not Supported | N/A |
+| | loadBalancer | managedNATGateway | userAssignedNATGateway | userDefinedRouting |
+|||-||--|
+| loadBalancer | N/A | Supported | Supported | Supported |
+| managedNATGateway | Supported | N/A | Not Supported | Not Supported |
+| userAssignedNATGateway | Supported | Not Supported | N/A | Supported |
+| userDefinedRouting | Not Supported | Not Supported | Not Supported | N/A |
Migration is only supported between `loadBalancer`, `managedNATGateway` (if using a managed virtual network), and `userDefinedNATGateway` (if using a custom virtual network).
Migration is only supported between `loadBalancer`, `managedNATGateway` (if usin
* Install and update the `aks-preview` extension.
- ```azurecli
- # Install aks-preview extension
- az extension add --name aks-preview
-
- # Update aks-preview extension
- az extension update --name aks-preview
- ```
+```azurecli
+# Install aks-preview extension
+az extension add --name aks-preview
+# Update aks-preview extension
+az extension update --name aks-preview
+```
### Register the `AKS-OutBoundTypeMigrationPreview` feature flag 1. Register the `AKS-OutBoundTypeMigrationPreview` feature flag using the [`az feature register`][az-feature-register] command. It takes a few minutes for the status to show *Registered*.
- ```azurecli-interactive
- az feature register --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
- ```
+```azurecli-interactive
+az feature register --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
+```
2. Verify the registration status using the [`az feature show`][az-feature-show] command.
- ```azurecli-interactive
- az feature show --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
- ```
+```azurecli-interactive
+az feature show --namespace "Microsoft.ContainerService" --name "AKS-OutBoundTypeMigrationPreview"
+```
3. When the status reflects *Registered*, refresh the registration of the *Microsoft.ContainerService* resource provider using the [`az provider register`][az-provider-register] command.
- ```azurecli-interactive
- az provider register --namespace Microsoft.ContainerService
- ```
+```azurecli-interactive
+az provider register --namespace Microsoft.ContainerService
+```
### Update cluster to use a new outbound type * Update the outbound configuration of your cluster using the [`az aks update`][az-aks-update] command.
- ```azurecli-interactive
- az aks update -g <resourceGroup> -n <clusterName> --outbound-type <loadBalancer|managedNATGateway|userAssignedNATGateway>
- ```
+### Update cluster from loadbalancer to managedNATGateway
+
+```azurecli-interactive
+az aks update -g <resourceGroup> -n <clusterName> --outbound-type managedNATGateway --nat-gateway-managed-outbound-ip-count <number of managed outbound ip>
+```
+
+### Update cluster from managedNATGateway to loadbalancer
+
+```azurecli-interactive
+az aks update -g <resourceGroup> -n <clusterName> \
+--outbound-type loadBalancer \
+<--load-balancer-managed-outbound-ip-count <number of managed outbound ip>| --load-balancer-outbound-ips <outbound ip ids> | --load-balancer-outbound-ip-prefixes <outbound ip prefix ids> >
+```
+
+> [!WARNING]
+> Do not reuse an IP address that is already in use in prior outbound configurations.
+
+### Update cluster from managedNATGateway to userDefinedRouting
+
+- Add route `0.0.0.0/0` to default route table. Please refer to [Customize cluster egress with a user-defined routing table in Azure Kubernetes Service (AKS)](egress-udr.md)
+
+```azurecli-interactive
+az aks update -g <resourceGroup> -n <clusterName> --outbound-type userDefinedRouting
+```
+
+### Update cluster from loadbalancer to userAssignedNATGateway in BYO vnet scenario
+
+- Associate nat gateway with subnet where the workload is associated with. Please refer to [Create a managed or user-assigned NAT gateway](nat-gateway.md)
+
+```azurecli-interactive
+az aks update -g <resourceGroup> -n <clusterName> --outbound-type userAssignedNATGateway
+```
## Next steps
aks Enable Fips Nodes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/enable-fips-nodes.md
description: Learn how to enable Federal Information Process Standard (FIPS) for
Previously updated : 07/19/2022 Last updated : 06/28/2023
The Federal Information Processing Standard (FIPS) 140-2 is a US government stan
## Prerequisites
-You need the Azure CLI version 2.32.0 or later installed and configured. Run `az --version` to find the version. For more information about installing or upgrading the Azure CLI, see [Install Azure CLI][install-azure-cli].
+* Azure CLI version 2.32.0 or later installed and configured. Run `az --version` to find the version. For more information about installing or upgrading the Azure CLI, see [Install Azure CLI][install-azure-cli].
-FIPS-enabled node pools have the following limitations:
+## Limitations
-* FIPS-enabled node pools require Kubernetes version 1.19 and greater.
-* To update the underlying packages or modules used for FIPS, you must use [Node Image Upgrade][node-image-upgrade].
-* Container images on the FIPS nodes haven't been assessed for FIPS compliance.
+* FIPS-enabled node pools have the following limitations:
+ * FIPS-enabled node pools require Kubernetes version 1.19 and greater.
+ * To update the underlying packages or modules used for FIPS, you must use [Node Image Upgrade][node-image-upgrade].
+ * Container images on the FIPS nodes haven't been assessed for FIPS compliance.
> [!IMPORTANT] > The FIPS-enabled Linux image is a different image than the default Linux image used for Linux-based node pools. To enable FIPS on a node pool, you must create a new Linux-based node pool. You can't enable FIPS on existing node pools.
->
-> FIPS-enabled node images may have different version numbers, such as kernel version, than images that are not FIPS-enabled. Also, the update cycle for FIPS-enabled node pools and node images may differ from node pools and images that are not FIPS-enabled.
+>
+> FIPS-enabled node images may have different version numbers, such as kernel version, than images that aren't FIPS-enabled. The update cycle for FIPS-enabled node pools and node images may differ from node pools and images that aren't FIPS-enabled.
## Create a FIPS-enabled Linux node pool
-To create a FIPS-enabled Linux node pool, use the [az aks nodepool add][az-aks-nodepool-add] command with the `--enable-fips-image` parameter when creating a node pool.
+1. Create a FIPS-enabled Linux node pool using the [`az aks nodepool add`][az-aks-nodepool-add] command with the `--enable-fips-image` parameter.
-```azurecli-interactive
-az aks nodepool add \
- --resource-group myResourceGroup \
- --cluster-name myAKSCluster \
- --name fipsnp \
- --enable-fips-image
-```
+ ```azurecli-interactive
+ az aks nodepool add \
+ --resource-group myResourceGroup \
+ --cluster-name myAKSCluster \
+ --name fipsnp \
+ --enable-fips-image
+ ```
-> [!NOTE]
-> You can also use the `--enable-fips-image` parameter with [az aks create][az-aks-create] when creating a cluster to enable FIPS on the default node pool. When adding node pools to a cluster created in this way, you still must use the `--enable-fips-image` parameter when adding node pools to create a FIPS-enabled node pool.
+ > [!NOTE]
+ > You can also use the `--enable-fips-image` parameter with the [`az aks create`][az-aks-create] command when creating a cluster to enable FIPS on the default node pool. When adding node pools to a cluster created in this way, you still must use the `--enable-fips-image` parameter when adding node pools to create a FIPS-enabled node pool.
-To verify your node pool is FIPS-enabled, use [az aks show][az-aks-show] to check the *enableFIPS* value in *agentPoolProfiles*.
+2. Verify your node pool is FIPS-enabled using the [`az aks show`][az-aks-show] command and query for the *enableFIPS* value in *agentPoolProfiles*.
-```azurecli-interactive
-az aks show \
- --resource-group myResourceGroup \
- --name myAKSCluster \
- --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
- -o table
-```
+ ```azurecli-interactive
+ az aks show \
+ --resource-group myResourceGroup \
+ --name myAKSCluster \
+ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
+ -o table
+ ```
-The following example output shows the *fipsnp* node pool is FIPS-enabled and *nodepool1* isn't.
+ The following example output shows the *fipsnp* node pool is FIPS-enabled:
-```output
-Name enableFips
-
-fipsnp True
-nodepool1 False
-```
+ ```output
+ Name enableFips
+
+ fipsnp True
+ nodepool1 False
+ ```
-You can also verify deployments have access to the FIPS cryptographic libraries using `kubectl debug` on a node in the FIPS-enabled node pool. Use `kubectl get nodes` to list the nodes:
+3. List the nodes using the `kubectl get nodes` command.
-```output
-$ kubectl get nodes
-NAME STATUS ROLES AGE VERSION
-aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9
-aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9
-aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9
-aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
-```
+ ```azurecli-interactive
+ kubectl get nodes
+ ```
-In the above example, the nodes starting with `aks-fipsnp` are part of the FIPS-enabled node pool. Use `kubectl debug` to run a deployment with an interactive session on one of those nodes in the FIPS-enabled node pool.
+ The following example output shows a list of the nodes in the cluster. The nodes starting with `aks-fipsnp` are part of the FIPS-enabled node pool.
-```azurecli-interactive
-kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
-```
+ ```output
+ NAME STATUS ROLES AGE VERSION
+ aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9
+ aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9
+ aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9
+ aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
+ ```
-From the interactive session, you can verify the FIPS cryptographic libraries are enabled:
+4. Run a deployment with an interactive session on one of the nodes in the FIPS-enabled node pool using the `kubectl debug` command.
-```output
-root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
-1
-```
+ ```azurecli-interactive
+ kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
+ ```
-FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which can be used by deployments to target those node pools.
+5. From the interactive session output, verify the FIPS cryptographic libraries are enabled. Your output should look similar to the following example output:
-## Create a FIPS-enabled Windows node pool
+ ```output
+ root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
+ 1
+ ```
+
+FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which deployments can use to target those node pools.
-To create a FIPS-enabled Windows node pool, use the [az aks nodepool add][az-aks-nodepool-add] command with the `--enable-fips-image` parameter when creating a node pool. Unlike Linux-based node pools, Windows node pools share the same image set.
+## Create a FIPS-enabled Windows node pool
-```azurecli-interactive
-az aks nodepool add \
- --resource-group myResourceGroup \
- --cluster-name myAKSCluster \
- --name fipsnp \
- --enable-fips-image \
- --os-type Windows
-```
+1. Create a FIPS-enabled Windows node pool using the [`az aks nodepool add`][az-aks-nodepool-add] command with the `--enable-fips-image` parameter. Unlike Linux-based node pools, Windows node pools share the same image set.
-To verify your node pool is FIPS-enabled, use [az aks show][az-aks-show] to check the *enableFIPS* value in *agentPoolProfiles*.
+ ```azurecli-interactive
+ az aks nodepool add \
+ --resource-group myResourceGroup \
+ --cluster-name myAKSCluster \
+ --name fipsnp \
+ --enable-fips-image \
+ --os-type Windows
+ ```
-```azurecli-interactive
-az aks show \
- --resource-group myResourceGroup \
- --name myAKSCluster \
- --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
- -o table
-```
+2. Verify your node pool is FIPS-enabled using the [`az aks show`][az-aks-show] command and query for the *enableFIPS* value in *agentPoolProfiles*.
-To verify Windows node pools have access to the FIPS cryptographic libraries, [create an RDP connection to a Windows node][aks-rdp] in a FIPS-enabled node pool and check the registry.
+ ```azurecli-interactive
+ az aks show \
+ --resource-group myResourceGroup \
+ --name myAKSCluster \
+ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
+ -o table
+ ```
-1. From the **Run** application, enter `regedit`.
-1. Look for `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy` in the registry.
-1. If `Enabled` is set to 1, then FIPS is enabled.
+3. Verify Windows node pools have access to the FIPS cryptographic libraries by [creating an RDP connection to a Windows node][aks-rdp] in a FIPS-enabled node pool and check the registry. From the **Run** application, enter `regedit`.
+4. Look for `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy` in the registry.
+5. If `Enabled` is set to *1*, then FIPS is enabled.
:::image type="content" source="./media/enable-fips-nodes/enable-fips-nodes-windows.png" alt-text="Screenshot shows a picture of the registry editor to the FIPS Algorithm Policy, and it being enabled.":::
-FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which can be used by deployments to target those node pools.
+FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which deployments can use to target those node pools.
## Next steps
To learn more about AKS security, see [Best practices for cluster security and u
<!-- LINKS - Internal --> [az-aks-nodepool-add]: /cli/azure/aks/nodepool#az-aks-nodepool-add [az-aks-show]: /cli/azure/aks#az_aks_show
+[az-aks-create]: /cli/azure/aks#az_aks_create
[aks-best-practices-security]: operator-best-practices-cluster-security.md [aks-rdp]: rdp.md [fips]: /azure/compliance/offerings/offering-fips-140-2 [install-azure-cli]: /cli/azure/install-azure-cli
-[node-image-upgrade]: node-image-upgrade.md
+[node-image-upgrade]: node-image-upgrade.md
aks Howto Deploy Java Liberty App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/howto-deploy-java-liberty-app.md
description: Deploy a Java application with Open Liberty/WebSphere Liberty on an
Last updated 12/21/2022 keywords: java, jakartaee, javaee, microprofile, open-liberty, websphere-liberty, aks, kubernetes-+ # Deploy a Java application with Open Liberty or WebSphere Liberty on an Azure Kubernetes Service (AKS) cluster
aks Quick Kubernetes Deploy Bicep https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/learn/quick-kubernetes-deploy-bicep.md
Title: Quickstart - Create an Azure Kubernetes Service (AKS) cluster by using Bi
description: Learn how to quickly create a Kubernetes cluster using a Bicep file and deploy an application in Azure Kubernetes Service (AKS) Last updated 11/01/2022-+ #Customer intent: As a developer or cluster operator, I want to quickly create an AKS cluster and deploy an application so that I can see how to run applications using the managed Kubernetes service in Azure.
aks Quick Kubernetes Deploy Rm Template https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/learn/quick-kubernetes-deploy-rm-template.md
Title: Quickstart - Create an Azure Kubernetes Service (AKS) cluster
description: Learn how to quickly create a Kubernetes cluster using an Azure Resource Manager template and deploy an application in Azure Kubernetes Service (AKS) Last updated 11/01/2022-+ #Customer intent: As a developer or cluster operator, I want to quickly create an AKS cluster and deploy an application so that I can see how to run applications using the managed Kubernetes service in Azure.
aks Quick Windows Container Deploy Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/learn/quick-windows-container-deploy-cli.md
The following example output shows the resource group created successfully:
## Create an AKS cluster
-To run an AKS cluster that supports node pools for Windows Server containers, your cluster needs to use a network policy that uses [Azure CNI][azure-cni-about] (advanced) network plugin. For more detailed information to help plan out the required subnet ranges and network considerations, see [configure Azure CNI networking][use-advanced-networking]. Use the [az aks create][az-aks-create] command to create an AKS cluster named *myAKSCluster*. This command will create the necessary network resources if they don't exist.
+To run an AKS cluster that supports node pools for Windows Server containers, your cluster needs to use a network policy that uses [Azure CNI][azure-cni-about] (advanced) network plugin. Use the [az aks create][az-aks-create] command to create an AKS cluster named *myAKSCluster*. This command will create the necessary network resources if they don't exist.
* The cluster is configured with two nodes. * The `--windows-admin-password` and `--windows-admin-username` parameters set the administrator credentials for any Windows Server nodes on the cluster and must meet [Windows Server password requirements][windows-server-password].
To learn more about AKS, and walk through a complete code to deployment example,
[az-group-delete]: /cli/azure/group#az_group_delete [az-provider-register]: /cli/azure/provider#az_provider_register [azure-cli-install]: /cli/azure/install-azure-cli
-[azure-cni-about]: ../concepts-network.md#azure-cni-advanced-networking
[sp-delete]: ../kubernetes-service-principal.md#additional-considerations [azure-portal]: https://portal.azure.com [kubernetes-deployment]: ../concepts-clusters-workloads.md#deployments-and-yaml-manifests [kubernetes-service]: ../concepts-network.md#services [restricted-vm-sizes]: ../quotas-skus-regions.md#restricted-vm-sizes
-[use-advanced-networking]: ../configure-azure-cni.md
[aks-support-policies]: ../support-policies.md [aks-faq]: faq.md [az-extension-add]: /cli/azure/extension#az-extension-add
aks Network Observability Managed Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/network-observability-managed-cli.md
az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
> [!NOTE] > The following section requires deployments of Azure managed Prometheus and Grafana.
-1. Use the following example to create a yaml file named **`ama-cilium-configmap.yaml`**. Copy the code in the example into the file created.
+1. Use the following example to create a file named **`prometheus-config`**. Copy the code in the example into the file created.
```yaml
+ global:
+ scrape_interval: 30s
scrape_configs:
- - job_name: "cilium-pods"
+ - job_name: "cilium-pods"
kubernetes_sd_configs:
- - role: pod
+ - role: pod
relabel_configs:
- - source_labels: [__meta_kubernetes_pod_container_name]
+ - source_labels: [__meta_kubernetes_pod_container_name]
action: keep
- regex: cilium(.*)
- - source_labels:
- [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
+ regex: cilium-agent
+ - source_labels:
+ [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
separator: ":" regex: ([^:]+)(?::\d+)? target_label: __address__ replacement: ${1}:${2} action: replace
- - source_labels: [__meta_kubernetes_pod_node_name]
+ - source_labels: [__meta_kubernetes_pod_node_name]
action: replace target_label: instance
- - source_labels: [__meta_kubernetes_pod_label_k8s_app]
- action: keep
- regex: cilium
- - source_labels: [__meta_kubernetes_pod_name]
+ - source_labels: [__meta_kubernetes_pod_label_k8s_app]
+ action: replace
+ target_label: k8s_app
+ - source_labels: [__meta_kubernetes_pod_name]
action: replace regex: (.*) target_label: pod metric_relabel_configs:
- - source_labels: [__name__]
+ - source_labels: [__name__]
action: keep regex: (.*) ```
az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
1. To create the `configmap`, use the following example: ```azurecli-interactive
- kubectl create configmap ama-metrics-prometheus-config-node \
- --from-file=./ama-cilium-configmap.yaml \
- --name kube-system
+ kubectl create configmap ama-metrics-prometheus-config \
+ --from-file=./prometheus-config \
+ --namespace kube-system
+ ```
+
+1. Azure Monitor pods should restart themselves, if they do not please rollout restart with following command:
+ ```azurecli-interactive
+ kubectl rollout restart deploy -n kube-system ama-metrics
``` 1. Once the Azure Monitor pods have been deployed on the cluster, port forward to the `ama` pod to verify the pods are being scraped. Use the following example to port forward to the pod: ```azurecli-interactive
- k port-forward $(k get po -l dsName=ama-metrics-node -oname | head -n 1) 9090:9090
+ kubectl port-forward -n kube-system $(kubectl get po -n kube-system -l rsName=ama-metrics -oname | head -n 1) 9090:9090
``` 1. In **Targets** of prometheus, verify the **cilium-pods** are present.
aks Node Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/node-access.md
You also need the Azure CLI version 2.0.64 or later installed and configured. Ru
## Create an interactive shell connection to a Linux node
-To create an interactive shell connection to a Linux node, use the `kubectl debug` command to run a privileged container on your node. To list your nodes, use the `kubectl get nodes` command:
+To create an interactive shell connection to a Linux node, use the `kubectl debug` command to run a privileged container on your node.
-```bash
-kubectl get nodes -o wide
-```
+1. To list your nodes, use the `kubectl get nodes` command:
-The following example resembles output from the command:
-
-```output
-NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
-aks-nodepool1-12345678-vmss000000 Ready agent 13m v1.19.9 10.240.0.4 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
-aks-nodepool1-12345678-vmss000001 Ready agent 13m v1.19.9 10.240.0.35 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
-aksnpwin000000 Ready agent 87s v1.19.9 10.240.0.67 <none> Windows Server 2019 Datacenter 10.0.17763.1935 docker://19.3.1
-```
-
-Use the `kubectl debug` command to run a container image on the node to connect to it. The following command starts a privileged container on your node and connects to it.
-
-```bash
-kubectl debug node/aks-nodepool1-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
-```
+ ```bash
+ kubectl get nodes -o wide
+ ```
+
+ The following example resembles output from the command:
+
+ ```output
+ NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE
+ KERNEL-VERSION CONTAINER-RUNTIME
+ aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS 5.15.0-1039-azure containerd://1.7.1+azure-1
+ aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS 5.15.0-1039-azure containerd://1.7.1+azure-1
+ aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.1787 containerd://1.6.21+azure
+ ```
-The following example resembles output from the command:
+2. Use the `kubectl debug` command to run a container image on the node to connect to it. The following command starts a privileged container on your node and connects to it.
-```output
-Creating debugging pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx with container debugger on node aks-nodepool1-12345678-vmss000000.
-If you don't see a command prompt, try pressing enter.
-root@aks-nodepool1-12345678-vmss000000:/#
-```
+ ```bash
+ kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
+ ```
-This privileged container gives access to the node.
+ The following example resembles output from the command:
-> [!NOTE]
-> You can interact with the node session by running `chroot /host` from the privileged container.
+ ```output
+ Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000.
+ If you don't see a command prompt, try pressing enter.
+ root@aks-nodepool1-37663765-vmss000000:/#
+ ```
+
+ This privileged container gives access to the node.
+
+ > [!NOTE]
+ > You can interact with the node session by running `chroot /host` from the privileged container.
### Remove Linux node access
-When done, `exit` the interactive shell session. After the interactive container session closes, delete the pod used for access with `kubectl delete pod`.
+When you are done with a debugging pod, enter the `exit` command to end the interactive shell session. After the interactive container session closes, delete the pod used for access with `kubectl delete pod`.
```bash
-kubectl delete pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx
+kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
``` ## Create the SSH connection to a Windows node
To create the SSH connection to the Windows Server node from another node, use t
> > 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, 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)
-Open a new terminal window and use the `kubectl get pods` command to get the name of the pod started by `kubectl debug`.
-
-```bash
-kubectl get pods
-```
-
-The following example resembles output from the command:
-
-```output
-NAME READY STATUS RESTARTS AGE
-node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx 1/1 Running 0 21s
-```
+1. Open a new terminal window and use the `kubectl get pods` command to get the name of the pod started by `kubectl debug`.
-In the above example, *node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx* is the name of the pod started by `kubectl debug`.
+ ```bash
+ kubectl get pods
+ ```
-Use the `kubectl port-forward` command to open a connection to the deployed pod:
+ The following example resembles output from the command:
-```bash
-kubectl port-forward node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx 2022:22
-```
+ ```output
+ NAME READY STATUS RESTARTS AGE
+ node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21s
+ ```
-The following example resembles output from the command:
+ In the previous example, *node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx* is the name of the pod started by `kubectl debug`.
-```output
-Forwarding from 127.0.0.1:2022 -> 22
-Forwarding from [::1]:2022 -> 22
-```
+2. Use the `kubectl port-forward` command to open a connection to the deployed pod:
-The above example begins forwarding network traffic from port 2022 on your development computer to port 22 on the deployed pod. When using `kubectl port-forward` to open a connection and forward network traffic, the connection remains open until you stop the `kubectl port-forward` command.
-
-Open a new terminal and run the command `kubectl get nodes` to show the internal IP address of the Windows Server node:
+ ```bash
+ kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22
+ ```
-```bash
-kubectl get nodes -o wide
-```
+ The following example resembles output from the command:
-The following example resembles output from the command:
+ ```output
+ Forwarding from 127.0.0.1:2022 -> 22
+ Forwarding from [::1]:2022 -> 22
+ ```
-```output
-NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
-aks-nodepool1-12345678-vmss000000 Ready agent 13m v1.19.9 10.240.0.4 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
-aks-nodepool1-12345678-vmss000001 Ready agent 13m v1.19.9 10.240.0.35 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
-aksnpwin000000 Ready agent 87s v1.19.9 10.240.0.67 <none> Windows Server 2019 Datacenter 10.0.17763.1935 docker://19.3.1
-```
+ The previous example begins forwarding network traffic from port `2022` on your development computer to port `22` on the deployed pod. When using `kubectl port-forward` to open a connection and forward network traffic, the connection remains open until you stop the `kubectl port-forward` command.
-In the above example, *10.240.0.67* is the internal IP address of the Windows Server node.
+3. Open a new terminal and run the command `kubectl get nodes` to show the internal IP address of the Windows Server node:
-Create an SSH connection to the Windows Server node using the internal IP address, and connect to port 22 through port 2022 on your development computer. The default username for AKS nodes is *azureuser*. Accept the prompt to continue with the connection. You're then provided with the bash prompt of your Windows Server node:
+ ```bash
+ kubectl get nodes -o wide
+ ```
-```bash
-ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.67
-```
+ The following example resembles output from the command:
-The following example resembles output from the command:
+ ```output
+ NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE
+ KERNEL-VERSION CONTAINER-RUNTIME
+ aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS 5.15.0-1039-azure containerd://1.7.1+azure-1
+ aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS 5.15.0-1039-azure containerd://1.7.1+azure-1
+ aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.1787 containerd://1.6.21+azure
+ ```
-```output
-The authenticity of host '10.240.0.67 (10.240.0.67)' can't be established.
-ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG.
-Are you sure you want to continue connecting (yes/no)? yes
+ In the previous example, *10.224.0.62* is the internal IP address of the Windows Server node.
-[...]
+4. Create an SSH connection to the Windows Server node using the internal IP address, and connect to port `22` through port `2022` on your development computer. The default username for AKS nodes is *azureuser*. Accept the prompt to continue with the connection. You're then provided with the bash prompt of your Windows Server node:
-Microsoft Windows [Version 10.0.17763.1935]
-(c) 2018 Microsoft Corporation. All rights reserved.
+ ```bash
+ ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62
+ ```
-azureuser@aksnpwin000000 C:\Users\azureuser>
-```
+ The following example resembles output from the command:
+
+ ```output
+ The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established.
+ ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG.
+ Are you sure you want to continue connecting (yes/no)? yes
+
+ [...]
+
+ Microsoft Windows [Version 10.0.17763.1935]
+ (c) 2018 Microsoft Corporation. All rights reserved.
+
+ azureuser@aksnpwin000000 C:\Users\azureuser>
+ ```
-> [!NOTE]
-> If you prefer to use password authentication, include the parameter `-o PreferredAuthentications=password`. For example:
->
-> ```console
-> ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.240.0.67
-> ```
+ > [!NOTE]
+ > If you prefer to use password authentication, include the parameter `-o PreferredAuthentications=password`. For example:
+ >
+ > ```console
+ > ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
+ > ```
### Create the SSH connection to a Windows node using a password
-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:
+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. Replace `<nodeRG>` with a resource group name and `<vmssName>` with the scale set name in that resource group.
1. Create a root user called `azureuser`.
If you didn't create your AKS cluster using the Azure CLI and the `--generate-ss
kubectl port-forward <debugPodName> 2022:22 ```
-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.
+7. Open a third terminal to get the IP address of the affected node to initiate the SSH connection. You can get this IP address with `kubectl get nodes -o wide`. The IP address is listed in the **INTERNAL-IP** column. After you have it, use the following command to connect:
```azurecli ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@<affectedNodeIp>
If you didn't create your AKS cluster using the Azure CLI and the `--generate-ss
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. ```bash
-kubectl delete pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx
+kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
```
-## Update SSH key on an existing AKS cluster (preview)
+## Update SSH public key on an existing AKS cluster (preview)
### Prerequisites
-* 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].
-* 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].
+* Ensure the Azure CLI is installed and configured. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli].
+* Ensure that 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].
> [!NOTE] > Updating of the SSH key is supported on Azure virtual machine scale sets with AKS clusters.
-Use the [az aks update][az-aks-update] command to update the SSH key on the cluster. This operation updates the key on all node pools. You can either specify the key or a key file using the `--ssh-key-value` argument.
+Use the [az aks update][az-aks-update] command to update the SSH public key on the cluster. This operation updates the key on all node pools. You can either specify the key or a key file using the `--ssh-key-value` argument.
```azurecli az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value <new SSH key value or SSH key file> ```
-Examples:
-In the following example, you can specify the new SSH key value for the `--ssh-key-value` argument.
+The following examples demonstrate possible usage of this command:
-```azurecli
-az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
-```
+* You can specify the new SSH public key value for the `--ssh-key-value` argument:
-In the following example, you specify a SSH key file.
+ ```azurecli
+ az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
+ ```
+
+* You specify an SSH public key file:
-```azurecli
-az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value .ssh/id_rsa.pub
-```
+ ```azurecli
+ az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
+ ```
> [!IMPORTANT]
-> During this operation, all virtual machine scale set instances are upgraded and re-imaged to use the new SSH key.
+> During this operation, all virtual machine scale set instances are upgraded and re-imaged to use the new SSH public key.
## Next steps
If you need more troubleshooting data, you can [view the kubelet logs][view-kube
[az-aks-update]: /cli/azure/aks#az-aks-update [how-to-install-azure-extensions]: /cli/azure/azure-cli-extensions-overview#how-to-install-extensions
-
+
aks Node Problem Detector https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/node-problem-detector.md
Last updated 05/31/2023
# Node Problem Detector (NPD)
-[Node Problem Detector (NPD)](https://github.com/kubernetes/node-problem-detector) is a Kubernetes add-on that detects node-related problems and reports on them. It runs as a systemd serviced on each node in the cluster and collects various metrics and system information, such as CPU usage, disk usage, and network connectivity. When it detects a problem, it generates an Events and/or Node Conditions. NPD is used in AKS (Azure Kubernetes Service) to monitor and manage nodes in a Kubernetes cluster running on the Azure cloud platform. NPD is enabled by default as part of the AKS Linux Extension.
+[Node Problem Detector (NPD)](https://github.com/kubernetes/node-problem-detector) is an open source Kubernetes component that detects node-related problems and reports on them. It runs as a systemd serviced on each node in the cluster and collects various metrics and system information, such as CPU usage, disk usage, and network connectivity. When it detects a problem, it generates an Events and/or Node Conditions. NPD is used in AKS (Azure Kubernetes Service) to monitor and manage nodes in a Kubernetes cluster running on the Azure cloud platform. NPD is enabled by default as part of the AKS Linux Extension.
-
-## Node Conditions
+## Node conditions
AKS uses the following Node conditions from NPD to expose permanent problems on the node. In addition to these node conditions, corresponding kubernetes events are also emitted. Node conditions indicate a permanent problem that makes the node unavailable. |Problem Daemon type| NodeCondition | Reason |
In few temporary scenarios, Events are emitted with relevant information to be a
|SystemLogMonitor|DockerStart| |SystemLogMonitor|ContainerdStart|
+In certain instances, AKS will automatically cordon and drain the node to minimize disruption to workloads. You can learn more about the events and actions [here](/azure/aks/node-auto-repair#node-auto-drain).
+ ## Check the node conditions and events+ ```azurecli-interactive kubectl describe node my-aks-node ```
Events:
``` These events are also available in [Container Insights](/azure/azure-monitor/containers/container-insights-overview) through [KubeEvents](/azure/azure-monitor/reference/tables/kubeevents).++
+## Metrics
+
+NPD also exposes Prometheus metrics based on the node problems which can be used for monitoring and alerting. These are exposed on port 20257 of the Node IP and can be scraped by Prometheus. Below is an example of a scrape config that can be used with the [Azure Managed Prometheus add on as a DaemonSet](/azure/azure-monitor/essentials/prometheus-metrics-scrape-configuration#advanced-setup-configure-custom-prometheus-scrape-jobs-for-the-daemonset)
+
+```yaml
+kind: ConfigMap
+apiVersion: v1
+metadata:
+ name: ama-metrics-prometheus-config-node
+ namespace: kube-system
+data:
+ prometheus-config: |-
+ global:
+ scrape_interval: 1m
+ scrape_configs:
+ - job_name: node-problem-detector
+ scrape_interval: 1m
+ scheme: http
+ metrics_path: /metrics
+ relabel_configs:
+ - source_labels: [__metrics_path__]
+ regex: (.*)
+ target_label: metrics_path
+ - source_labels: [__address__]
+ replacement: '$NODE_NAME'
+ target_label: instance
+ static_configs:
+ - targets: ['$NODE_IP:20257']
+```
+
+Below is a sample of the metrics scraped
+
+```
+problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
+problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
+```
aks Private Clusters https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/private-clusters.md
Title: Create a private Azure Kubernetes Service (AKS) cluster description: Learn how to create a private Azure Kubernetes Service (AKS) cluster Previously updated : 01/25/2023 Last updated : 06/28/2023
Create a private AKS cluster with a custom private DNS zone and subdomain using
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain> ```
+### Update a private cluster from a private DNS zone to public
+
+> [!NOTE]
+> This feature requires the `aks-preview` extension version >= 0.5.97
+
+Update a private cluster from `byo` or `system` to `none` using the [`az aks update`][az-aks-update] command with the following flags:
+
+```azurecli-interactive
+az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --private-dns-zone none
+```
+
+> [!NOTE]
+> You can only update from `byo` or `system` to `none`. No other combination of update values is supported.
+ ## Options for connecting to the private cluster The API server endpoint has no public IP address. To manage the API server, you'll need to use a VM that has access to the AKS cluster's Azure Virtual Network (VNet). There are several options for establishing network connectivity to the private cluster:
aks Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Kubernetes Service (AKS) description: Lists Azure Policy Regulatory Compliance controls available for Azure Kubernetes Service (AKS). These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
api-management Api Management Features https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-features.md
Previously updated : 04/17/2023 Last updated : 06/27/2023
Each API Management [pricing tier](https://aka.ms/apimpricing) offers a distinct
| [Backup and restore](api-management-howto-disaster-recovery-backup-restore.md) | No | Yes | Yes | Yes | Yes | | [Management over Git](api-management-configuration-repository-git.md) | No | Yes | Yes | Yes | Yes | | Direct management API | No | Yes | Yes | Yes | Yes |
-| Azure Monitor logs and metrics | No | Yes | Yes | Yes | Yes |
+| Azure Monitor metrics | Yes | Yes | Yes | Yes | Yes |
+| Azure Monitor and Log Analytics request logs | No | Yes | Yes | Yes | Yes |
+| Application Insights request logs | Yes | Yes | Yes | Yes | Yes |
| Static IP | No | Yes | Yes | Yes | Yes | | [Pass-through WebSocket APIs](websocket-api.md) | No | Yes | Yes | Yes | Yes | | [Pass-through GraphQL APIs](graphql-apis-overview.md) | Yes | Yes | Yes | Yes | Yes |
api-management Api Management Gateways Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-gateways-overview.md
Previously updated : 02/22/2023 Last updated : 06/27/2023
For details about monitoring options, see [Observability in Azure API Management
| [API analytics](howto-use-analytics.md) | ✔️ | ❌ | ❌ | | [Application Insights](api-management-howto-app-insights.md) | ✔️ | ✔️ | ✔️ | | [Logging through Event Hubs](api-management-howto-log-event-hubs.md) | ✔️ | ✔️ | ✔️ |
-| [Metrics in Azure Monitor](api-management-howto-use-azure-monitor.md#view-metrics-of-your-apis) | ✔️ | ❌ | ✔️ |
+| [Metrics in Azure Monitor](api-management-howto-use-azure-monitor.md#view-metrics-of-your-apis) | ✔️ | ✔️ | ✔️ |
| [OpenTelemetry Collector](how-to-deploy-self-hosted-gateway-kubernetes-opentelemetry.md) | ❌ | ❌ | ✔️ |
-| [Request logs in Azure Monitor](api-management-howto-use-azure-monitor.md#resource-logs) | ✔️ | ❌ | ❌<sup>1</sup> |
+| [Request logs in Azure Monitor and Log Analytics](api-management-howto-use-azure-monitor.md#resource-logs) | ✔️ | ❌ | ❌<sup>1</sup> |
| [Local metrics and logs](how-to-configure-local-metrics-logs.md) | ❌ | ❌ | ✔️ | | [Request tracing](api-management-howto-api-inspector.md) | ✔️ | ✔️ | ✔️ |
api-management Api Management Get Started Publish Versions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-get-started-publish-versions.md
description: Follow the steps of this tutorial to learn how to publish multiple
-+ Last updated 02/10/2021
api-management Api Management Howto Aad https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-howto-aad.md
Last updated 04/18/2023 -+ # Authorize developer accounts by using Azure Active Directory in Azure API Management
api-management Api Management Howto Use Azure Monitor https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-howto-use-azure-monitor.md
Previously updated : 11/02/2022 Last updated : 06/27/2023 # Tutorial: Monitor published APIs
In this tutorial, you learn how to:
+ Complete the following quickstart: [Create an Azure API Management instance](get-started-create-service-instance.md). + Also, complete the following tutorial: [Import and publish your first API](import-and-publish.md). - ## View metrics of your APIs API Management emits [metrics](../azure-monitor/essentials/data-platform-metrics.md) every minute, giving you near real-time visibility into the state and health of your APIs. The following are the two most frequently used metrics. For a list of all available metrics, see [supported metrics](../azure-monitor/essentials/metrics-supported.md#microsoftapimanagementservice).
To view the activity log:
## Resource logs
-Resource logs provide rich information about operations and errors that are important for auditing and troubleshooting purposes. Resource logs differ from activity logs. The activity log provides insights into the operations run on your Azure resources. Resource logs provide insight into operations that your resource ran.
+Resource logs (Azure Monitor logs) provide rich information about API Management operations and errors that are important for auditing and troubleshooting purposes. When enabled through a diagnostic setting, the logs collect information about the API requests that are received and processed by the API Management gateway.
+
+> [!NOTE]
+> The Consumption tier doesn't support the collection of resource logs.
To configure resource logs:
api-management Diagnostic Logs Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/diagnostic-logs-reference.md
This reference describes settings for API diagnostics logging from an API Manage
| Verbosity | | Specifies the verbosity of the logs and whether custom traces that are configured in [trace](trace-policy.md) policies are logged. <br/><br/>* Error - failed requests, and custom traces of severity `error`<br/>* Information - failed and successful requests, and custom traces of severity `error` and `information`<br/> * Verbose - failed and successful requests, and custom traces of severity `error`, `information`, and `verbose`<br/><br/>Default: Information | | Correlation protocol | | Specifies the protocol used to correlate telemetry sent by multiple components to Application Insights. Default: Legacy <br/><br/>For information, see [Telemetry correlation in Application Insights](../azure-monitor/app/distributed-tracing-telemetry-correlation.md). | | Headers to log | list | Specifies the headers that are logged for requests and responses. Default: no headers are logged. |
-| Number of payload bytes to log | integer | Specifies the number of initial bytes of the body that are logged for requests and responses. Default: 0 |
+| Number of payload bytes to log | integer | Specifies the number of initial bytes of the body that are logged for requests and responses. Maximum: 8,192. Default: 0 |
| Frontend Request | | Specifies whether and how *frontend requests* (requests incoming to the API Management gateway) are logged.<br/><br/> If this setting is enabled, specify **Headers to log**, **Number of payload bytes to log**, or both. | | Frontend Response | | Specifies whether and how *frontend responses* (responses outgoing from the API Management gateway) are logged.<br/><br/> If this setting is enabled, specify **Headers to log**, **Number of payload bytes to log**, or both. | | Backend Request | | Specifies whether and how *backend requests* (requests outgoing from the API Management gateway) are logged.<br/><br/> If this setting is enabled, specify **Headers to log**, **Number of payload bytes to log**, or both. |
api-management How To Event Grid https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/how-to-event-grid.md
Last updated 11/2/2021-+ # Send events from API Management to Event Grid
api-management Migrate Stv1 To Stv2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/migrate-stv1-to-stv2.md
description: Follow the steps in this article to migrate your Azure API Manageme
+ Last updated 04/17/2023 - # Migrate an API Management instance hosted on the stv1 platform to stv2
api-management Mitigate Owasp Api Threats https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/mitigate-owasp-api-threats.md
The OWASP [API Security Project](https://owasp.org/www-project-api-security/) fo
API objects that aren't protected with the appropriate level of authorization may be vulnerable to data leaks and unauthorized data manipulation through weak object access identifiers. For example, an attacker could exploit an integer object identifier, which can be iterated.
-More information about this threat: [API1:2019 Broken Object Level Authorization](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa1-broken-object-level-authorization.md)
+More information about this threat: [API1:2019 Broken Object Level Authorization](https://github.com/OWASP/API-Security/blob/master/editions/2023/en/0xa1-broken-object-level-authorization.md)
### Recommendations
More information about this threat: [API1:2019 Broken Object Level Authorization
Authentication mechanisms are often implemented incorrectly or missing, allowing attackers to exploit implementation flaws to access data.
-More information about this threat: [API2:2019 Broken User Authentication](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa2-broken-user-authentication.md)
+More information about this threat: [API2:2019 Broken User Authentication](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa2-broken-user-authentication.md)
### Recommendations
Good API interface design is deceptively challenging. Often, particularly with l
A bad actor could attempt to access the API directly (perhaps by replaying a valid request), or sniff the traffic between server and API. Analysis of the API actions and the data available could yield sensitive data to the attacker, which isn't surfaced to, or used by, the frontend application.
-More information about this threat: [API3:2019 Excessive Data Exposure](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa3-excessive-data-exposure.md)
+More information about this threat: [API3:2019 Excessive Data Exposure](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa3-excessive-data-exposure.md)
### Recommendations
More information about this threat: [API3:2019 Excessive Data Exposure](https://
Lack of rate limiting may lead to data exfiltration or successful DDoS attacks on backend services, causing an outage for all consumers.
-More information about this threat: [API4:2019 Lack of resources and rate limiting](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa4-lack-of-resources-and-rate-limiting.md)
+More information about this threat: [API4:2019 Lack of resources and rate limiting](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa4-lack-of-resources-and-rate-limiting.md)
### Recommendations
More information about this threat: [API4:2019 Lack of resources and rate limiti
Complex access control policies with different hierarchies, groups, and roles, and an unclear separation between administrative and regular functions lead to authorization flaws. By exploiting these issues, attackers gain access to other usersΓÇÖ resources or administrative functions.
-More information about this threat: [API5:2019 Broken function level authorization](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa5-broken-function-level-authorization.md)
+More information about this threat: [API5:2019 Broken function level authorization](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa5-broken-function-level-authorization.md)
### Recommendations
More information about this threat: [API5:2019 Broken function level authorizati
If an API offers more fields than the client requires for a given action, an attacker may inject excessive properties to perform unauthorized operations on data. Attackers may discover undocumented properties by inspecting the format of requests and responses or other APIs, or guessing them. This vulnerability is especially applicable if you donΓÇÖt use strongly typed programming languages.
-More information about this threat: [API6:2019 Mass assignment](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa6-mass-assignment.md)
+More information about this threat: [API6:2019 Mass assignment](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa6-mass-assignment.md)
### Recommendations
Attackers may attempt to exploit security misconfiguration vulnerabilities such
* Use of weak protocols or ciphers * Other settings or endpoints that may allow unauthorized access to the system
-More information about this threat: [API7:2019 Security misconfiguration](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa7-security-misconfiguration.md)
+More information about this threat: [API7:2019 Security misconfiguration](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa7-security-misconfiguration.md)
### Recommendations
Any endpoint accepting user data is potentially vulnerable to an injection explo
* [SQL injection](https://owasp.org/www-community/attacks/SQL_Injection), where a bad actor attempts to alter the API request to execute commands and queries against the database an API depends on
-More information about this threat: [API8:2019 Injection](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa8-injection.md)
+More information about this threat: [API8:2019 Injection](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa8-injection.md)
### Recommendations
Vulnerabilities related to improper assets management include:
* Excessive numbers of older API versions, which may be missing security fixes
-More information about this threat: [API9:2019 Improper assets management](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xa9-improper-assets-management.md)
+More information about this threat: [API9:2019 Improper assets management](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xa9-improper-assets-management.md)
### Recommendations
More information about this threat: [API9:2019 Improper assets management](https
Insufficient logging and monitoring, coupled with missing or ineffective integration with incident response, allows attackers to further attack systems, maintain persistence, pivot to more systems to tamper with, and extract or destroy data. Most breach studies demonstrate that the time to detect a breach is over 200 days, typically detected by external parties rather than internal processes or monitoring.
-More information about this threat: [API10:2019 Insufficient logging and monitoring](https://github.com/OWASP/API-Security/blob/master/2019/en/src/0xaa-insufficient-logging-monitoring.md)
+More information about this threat: [API10:2019 Insufficient logging and monitoring](https://github.com/OWASP/API-Security/blob/master/editions/2019/en/0xaa-insufficient-logging-monitoring.md)
### Recommendations
api-management Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure API Management description: Lists Azure Policy Regulatory Compliance controls available for Azure API Management. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
api-management Sql Data Source Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/sql-data-source-policy.md
Enable Azure Active Directory authentication to SQL Database by assigning an Azu
## Examples
+### Example schema
+
+The examples in this section are resolvers for the following GraphQL schema:
+
+```GraphQL
+type Family {
+ id: Int!
+ name: String!
+}
+
+type Person {
+ id: Int!
+ name: String!
+}
+
+type PersonQueryResult {
+ items: [Person]
+}
+
+type Query {
+ familyById(familyId: Int!): Family
+ familyMembers(familyId: Int!): PersonQueryResult
+}
+
+type Mutation {
+ createFamily(familyId: Int!, familyName: String!): Family
+}
+```
+ ### Resolver for GraphQL query using single-result T-SQL request The following example resolves a GraphQL query by making a single-result T-SQL request to a backend Azure SQL database. The connection string uses SQL authentication with username and password and is provided using a named value. The response is returned as a single JSON object representing a single row.
The query parameter is accessed using the `context.GraphQL.Arguments` context va
<set-body template="liquid"> { ΓÇ» ΓÇ» "items": [
- ΓÇ» ΓÇ» ΓÇ» ΓÇ» {% JSONArray For person in body.results %}
+ ΓÇ» ΓÇ» ΓÇ» ΓÇ» {% JSONArray For person in body.items %}
ΓÇ» ΓÇ» ΓÇ» ΓÇ» ΓÇ» ΓÇ» "id": "{{ person.id }}" ΓÇ» ΓÇ» ΓÇ» ΓÇ» ΓÇ» ΓÇ» "name": "{{ person.firstName }} + "" "" + {{body.lastName}}" ΓÇ» ΓÇ» ΓÇ» ΓÇ» {% endJSONArrayFor %}
The query parameter is accessed using the `context.GraphQL.Arguments` context va
### Resolver for GraphQL mutation
-The following example resolves a GraphQL mutation using a T-SQL INSERT statement to insert a row an Azure SQL database. The connection to the database uses the API Management instance's system-assigned managed identity. The identity must be [configured](#configure-managed-identity-integration-with-azure-sql) to access the Azure SQL
+The following example resolves a GraphQL mutation using a T-SQL INSERT statement to insert a row an Azure SQL database. The connection to the database uses the API Management instance's system-assigned managed identity. The identity must be [configured](#configure-managed-identity-integration-with-azure-sql) to access the Azure SQL database.
```xml <sql-data-source>
The following example resolves a GraphQL mutation using a T-SQL INSERT statement
<connection-string use-managed-identity="true"> Server=tcp:{your_server_name}.database.windows.net,1433;Initial Catalog={your_database_name};</connection-string> </connection-info>
-ΓÇ» <request>
+ΓÇ» <request single-result="true">
ΓÇ» ΓÇ» <sql-statement> INSERT INTO [dbo].[Family] ([Id]
app-service Private Endpoint https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/networking/private-endpoint.md
For pricing details, see [Azure Private Link pricing](https://azure.microsoft.co
* Remote Debugging functionality isn't available through the private endpoint. The recommendation is to deploy the code to a slot and remote debug it there. * FTP access is provided through the inbound public IP address. Private endpoint doesn't support FTP access to the app. * IP-Based SSL isn't supported with private endpoints.
-* Apps that you configure with private endpoints are only accessible through private endpoint from clients in subnets that are configured with the `Microsoft.Web` service endpoint.
+* Apps that you configure with private endpoints cannot use [service endpoint-based access restriction rules](../overview-access-restrictions.md#access-restriction-rules-based-on-service-endpoints).
We're improving Azure Private Link feature and private endpoint regularly, check [this article](../../private-link/private-endpoint-overview.md#limitations) for up-to-date information about limitations.
app-service Scenario Secure App Access Microsoft Graph As User https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/scenario-secure-app-access-microsoft-graph-as-user.md
Previously updated : 03/08/2022 Last updated : 06/28/2023 ms.devlang: csharp
Open the project/solution in Visual Studio, and open the console by using the **
Run the install commands. ```powershell
-Install-Package Microsoft.Identity.Web.MicrosoftGraph
+Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Identity.Web ``` ### Startup.cs
-In the *Startup.cs* file, the ```AddMicrosoftIdentityWebApp``` method adds Microsoft.Identity.Web to your web app. The ```AddMicrosoftGraph``` method adds Microsoft Graph support.
+In the *Startup.cs* file, the ```AddMicrosoftIdentityWebApp``` method adds Microsoft.Identity.Web to your web app. The ```AddMicrosoftGraph``` method adds Microsoft Graph support. For info on managing incremental consent and conditional access, [read this](https://github.com/AzureAD/microsoft-identity-web/wiki/Managing-incremental-consent-and-conditional-access).
```csharp using Microsoft.AspNetCore.Builder;
public class Startup
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) {
- services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
- .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
- .EnableTokenAcquisitionToCallDownstreamApi()
- .AddMicrosoftGraph(Configuration.GetSection("Graph"))
- .AddInMemoryTokenCaches();
-
- services.AddRazorPages();
+ services.AddOptions();
+ string[] initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
+
+ services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
+ .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
+ .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
+ .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
+ .AddInMemoryTokenCaches();
+
+ services.AddAuthorization(options =>
+ {
+ // By default, all incoming requests will be authorized according to the default policy
+ options.FallbackPolicy = options.DefaultPolicy;
+ });
+ services.AddRazorPages()
+ .AddMvcOptions(options => {})
+ .AddMicrosoftIdentityUI();
+
+ services.AddControllersWithViews()
+ .AddMicrosoftIdentityUI();
} }
public class Startup
{ "AzureAd": { "Instance": "https://login.microsoftonline.com/",
- "Domain": "fourthcoffeetest.onmicrosoft.com",
- "TenantId": "[tenant-id]",
- "ClientId": "[client-id]",
- // To call an API
- "ClientSecret": "[secret-from-portal]", // Not required by this scenario
+ "Domain": "[Enter the domain of your tenant, e.g. contoso.onmicrosoft.com]",
+ "TenantId": "[Enter 'common', or 'organizations' or the Tenant Id (Obtained from the Azure portal. Select 'Endpoints' from the 'App registrations' blade and use the GUID in any of the URLs), e.g. da41245a5-11b3-996c-00a8-4d99re19f292]",
+ "ClientId": "[Enter the Client Id (Application ID obtained from the Azure portal), e.g. ba74781c2-53c2-442a-97c2-3d60re42f403]",
+ "ClientSecret": "[Copy the client secret added to the app from the Azure portal]",
+ "ClientCertificates": [
+ ],
+ // the following is required to handle Continuous Access Evaluation challenges
+ "ClientCapabilities": [ "cp1" ],
"CallbackPath": "/signin-oidc" },
+ "DownstreamApis": {
+ "MicrosoftGraph": {
+ // Specify BaseUrl if you want to use Microsoft graph in a national cloud.
+ // See https://learn.microsoft.com/graph/deployments#microsoft-graph-and-graph-explorer-service-root-endpoints
+ // "BaseUrl": "https://graph.microsoft.com/v1.0",
+
+ // Set RequestAppToken this to "true" if you want to request an application token (to call graph on
+ // behalf of the application). The scopes will then automatically
+ // be ['https://graph.microsoft.com/.default'].
+ // "RequestAppToken": false
- "Graph": {
- "BaseUrl": "https://graph.microsoft.com/v1.0",
- "Scopes": "user.read"
+ // Set Scopes to request (unless you request an app token).
+ "Scopes": [ "User.Read" ]
+
+ // See https://aka.ms/ms-id-web/downstreamApiOptions for all the properties you can set.
+ }
}, "Logging": { "LogLevel": {
using Microsoft.Extensions.Logging;
// Some code omitted for brevity.
-[AuthorizeForScopes(Scopes = new[] { "user.read" })]
+[AuthorizeForScopes(Scopes = new[] { "User.Read" })]
public class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger;
public class IndexModel : PageModel
{ try {
- var user = await _graphServiceClient.Me.Request().GetAsync();
+ var user = await _graphServiceClient.Me.GetAsync();
ViewData["Me"] = user; ViewData["name"] = user.DisplayName;
- using (var photoStream = await _graphServiceClient.Me.Photo.Content.Request().GetAsync())
+ using (var photoStream = await _graphServiceClient.Me.Photo.Content.GetAsync())
{ byte[] photoByte = ((MemoryStream)photoStream).ToArray(); ViewData["photo"] = Convert.ToBase64String(photoByte);
app-service Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure App Service description: Lists Azure Policy Regulatory Compliance controls available for Azure App Service. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
app-service Troubleshoot Intermittent Outbound Connection Errors https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/troubleshoot-intermittent-outbound-connection-errors.md
Title: Troubleshooting intermittent outbound connection errors in Azure App Service description: Troubleshoot intermittent connection errors and related performance issues in Azure App Service-- Previously updated : 11/19/2020- Last updated : 06/28/2023 # Troubleshooting intermittent outbound connection errors in Azure App Service
-This article helps you troubleshoot intermittent connection errors and related performance issues in [Azure App Service](./overview.md). This topic will provide more information on, and troubleshooting methodologies for, exhaustion of source network address translation (SNAT) ports. If you require more help at any point in this article, contact the Azure experts at the [MSDN Azure and the Stack Overflow forums](https://azure.microsoft.com/support/forums/). Alternatively, file an Azure support incident. Go to the [Azure Support site](https://azure.microsoft.com/support/options/) and select **Get Support**.
+This article helps you troubleshoot intermittent connection errors and related performance issues in [Azure App Service](./overview.md). It provides more information on, and troubleshooting methodologies for, exhaustion of source network address translation (SNAT) ports. If you require more help at any point in this article, contact the Azure experts at the [MSDN Azure and the Stack Overflow forums](https://azure.microsoft.com/support/forums/). Alternatively, file an Azure support incident. Go to the [Azure Support site](https://azure.microsoft.com/support/options/) and select **Get Support**.
## Symptoms
Applications and Functions hosted on Azure App service may exhibit one or more o
* Slow response times on all or some of the instances in a service plan. * Intermittent 5xx or **Bad Gateway** errors * Timeout error messages
-* Could not connect to external endpoints (like SQLDB, Service Fabric, other App services etc.)
+* Couldn't connect to external endpoints (like SQLDB, Service Fabric, other App services etc.)
## Cause The major cause for intermittent connection issues is hitting a limit while making new outbound connections. The limits you can hit include:
-* TCP Connections: There is a limit on the number of outbound connections that can be made. The limit on outbound connections is associated with the size of the worker used.
-* SNAT ports: [Outbound connections in Azure](../load-balancer/load-balancer-outbound-connections.md) describes SNAT port restrictions and how they affect outbound connections. Azure uses source network address translation (SNAT) and Load Balancers (not exposed to customers) to communicate with public IP addresses. Each instance on Azure App service is initially given a pre-allocated number of **128** SNAT ports. The SNAT port limit affects opening connections to the same address and port combination. If your app creates connections to a mix of address and port combinations, you will not use up your SNAT ports. The SNAT ports are used up when you have repeated calls to the same address and port combination. Once a port has been released, the port is available for reuse as needed. The Azure Network load balancer reclaims SNAT port from closed connections only after waiting for 4 minutes.
+* TCP Connections: There's a limit on the number of outbound connections that can be made. The limit on outbound connections is associated with the size of the worker used.
+* SNAT ports: [Outbound connections in Azure](../load-balancer/load-balancer-outbound-connections.md) describes SNAT port restrictions and how they affect outbound connections. Azure uses source network address translation (SNAT) and Load Balancers (not exposed to customers) to communicate with public IP addresses. Each instance on Azure App service is initially given a preallocated number of **128** SNAT ports. The SNAT port limit affects opening connections to the same address and port combination. If your app creates connections to a mix of address and port combinations, you won't use up your SNAT ports. The SNAT ports are used up when you have repeated calls to the same address and port combination. Once a port has been released, the port is available for reuse as needed. The Azure Network load balancer reclaims SNAT port from closed connections only after waiting for 4 minutes.
-When applications or functions rapidly open a new connection, they can quickly exhaust their pre-allocated quota of the 128 ports. They are then blocked until a new SNAT port becomes available, either through dynamically allocating additional SNAT ports, or through reuse of a reclaimed SNAT port. If your app runs out of SNAT ports, it will have intermittent outbound connectivity issues.
+When applications or functions rapidly open a new connection, they can quickly exhaust their preallocated quota of the 128 ports. They're then blocked until a new SNAT port becomes available, either through dynamically allocating more SNAT ports, or through reuse of a reclaimed SNAT port. If your app runs out of SNAT ports, it will have intermittent outbound connectivity issues.
## Avoiding the problem
There are a few solutions that let you avoid SNAT port limitations. They include
* private endpoints: You don't have a SNAT port restriction to services secured with private endpoints. * NAT gateway: With a NAT gateway, you have 64k outbound SNAT ports that are usable by the resources sending traffic through it.
-Avoiding the SNAT port problem means avoiding the creation of new connections repetitively to the same host and port. Connection pools are one of the more obvious ways to solve that problem.
+To avoid the SNAT port problem, you prevent the creation of new connections repetitively to the same host and port. Connection pools are one of the more obvious ways to solve that problem.
-If your destination is an Azure service that supports service endpoints, you can avoid SNAT port exhaustion issues by using [regional VNet Integration](./overview-vnet-integration.md) and service endpoints or private endpoints. When you use regional VNet Integration and place service endpoints on the integration subnet, your app outbound traffic to those services will not have outbound SNAT port restrictions. Likewise, if you use regional VNet Integration and private endpoints, you will not have any outbound SNAT port issues to that destination.
+If your destination is an Azure service that supports service endpoints, you can avoid SNAT port exhaustion issues by using [regional VNet Integration](./overview-vnet-integration.md) and service endpoints or private endpoints. When you use regional VNet Integration and place service endpoints on the integration subnet, your app outbound traffic to those services won't have outbound SNAT port restrictions. Likewise, if you use regional VNet Integration and private endpoints, you won't have any outbound SNAT port issues to that destination.
If your destination is an external endpoint outside of Azure, [using a NAT gateway](./networking/nat-gateway-integration.md) gives you 64k outbound SNAT ports. It also gives you a dedicated outbound address that you don't share with anybody.
General strategies for mitigating SNAT port exhaustion are discussed in the [Pro
* For pooling HTTP connections, review [Pool HTTP connections with HttpClientFactory](/aspnet/core/performance/performance-best-practices#pool-http-connections-with-httpclientfactory). * For information on SQL Server connection pooling, review [SQL Server Connection Pooling (ADO.NET)](/dotnet/framework/data/adonet/sql-server-connection-pooling).
-* For implementing pooling with entity framework applications, review [DbContext pooling](/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling).
-Here is a collection of links for implementing Connection pooling by different solution stack.
+Here's a collection of links for implementing Connection pooling by different solution stack.
#### Node
-By default, connections for NodeJS are not kept alive. Below are the popular databases and packages for connection pooling which contain examples for how to implement them.
+By default, connections for NodeJS aren't kept alive. Below are the popular databases and packages for connection pooling which contain examples for how to implement them.
* [MySQL](https://github.com/mysqljs/mysql#pooling-connections) * [MongoDB](https://blog.mlab.com/2017/05/mongodb-connection-pooling-for-express-applications/)
HTTP Connection Pooling
#### PHP
-Although PHP does not support connection pooling, you can try using persistent database connections to your back-end server.
+Although PHP doesn't support connection pooling, you can try using persistent database connections to your back-end server.
* MySQL server
HTTP Connection Pooling
### Modify the application to reuse connections
-* For additional pointers and examples on managing connections in Azure functions, review [Manage connections in Azure Functions](../azure-functions/manage-connections.md).
+* For more pointers and examples on managing connections in Azure functions, review [Manage connections in Azure Functions](../azure-functions/manage-connections.md).
### Modify the application to use less aggressive retry logic
-* For additional guidance and examples, review [Retry pattern](/azure/architecture/patterns/retry).
+* For more guidance and examples, review [Retry pattern](/azure/architecture/patterns/retry).
### Use keepalives to reset the outbound idle timeout * For implementing keepalives for Node.js apps, review [My node application is making excessive outbound calls](./app-service-web-nodejs-best-practices-and-troubleshoot-guide.md#my-node-application-is-making-excessive-outbound-calls).
-### Additional guidance specific to App Service:
+### More guidance specific to App Service:
* A [load test](/azure/devops/test/load-test/app-service-web-app-performance-test) should simulate real world data in a steady feeding speed. Testing apps and functions under real world stress can identify and resolve SNAT port exhaustion issues ahead of time. * Ensure that the back-end services can return responses quickly. For troubleshooting performance issues with Azure SQL Database, review [Troubleshoot Azure SQL Database performance issues with Intelligent Insights](/azure/azure-sql/database/intelligent-insights-troubleshoot-performance#recommended-troubleshooting-flow). * Scale out the App Service plan to more instances. For more information on scaling, see [Scale an app in Azure App Service](./manage-scale-up.md). Each worker instance in an app service plan is allocated a number of SNAT ports. If you spread your usage across more instances, you might get the SNAT port usage per instance below the recommended limit of 100 outbound connections, per unique remote endpoint.
-* Consider moving to [App Service Environment (ASE)](./environment/using-an-ase.md), where you are allotted a single outbound IP address, and the limits for connections and SNAT ports are much higher. In an ASE, the number of SNAT ports per instance is based on the [Azure load balancer preallocation table](../load-balancer/load-balancer-outbound-connections.md#snatporttable) - so for example an ASE with 1-50 worker instances has 1024 preallocated ports per instance, while an ASE with 51-100 worker instances has 512 preallocated ports per instance.
+* Consider moving to [App Service Environment (ASE)](./environment/using-an-ase.md), where you're allotted a single outbound IP address, and the limits for connections and SNAT ports are higher. In an ASE, the number of SNAT ports per instance is based on the [Azure load balancer preallocation table](../load-balancer/load-balancer-outbound-connections.md#snatporttable). For example, an ASE with 1-50 worker instances has 1024 preallocated ports per instance, while an ASE with 51-100 worker instances has 512 preallocated ports per instance.
Avoiding the outbound TCP limits is easier to solve, as the limits are set by the size of your worker. You can see the limits in [Sandbox Cross VM Numerical Limits - TCP Connections](https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#cross-vm-numerical-limits)
To avoid outbound TCP limits, you can either increase the size of your workers,
## Troubleshooting
-Knowing the two types of outbound connection limits, and what your app does, should make it easier to troubleshoot. If you know that your app makes many calls to the same storage account, you might suspect a SNAT limit. If your app creates a great many calls to endpoints all over the internet, you would suspect you are reaching the VM limit.
+Knowing the two types of outbound connection limits, and what your app does, should make it easier to troubleshoot. If you know that your app makes many calls to the same storage account, you might suspect a SNAT limit. If your app creates a great many calls to endpoints all over the internet, you would suspect you're reaching the VM limit.
-If you do not know the application behavior enough to determine the cause quickly, there are some tools and techniques available in App Service to help with that determination.
+If you don't know the application behavior enough to determine the cause quickly, there are some tools and techniques available in App Service to help with that determination.
### Find SNAT port allocation information
You can use [App Service Diagnostics](./overview-diagnostics.md) to find SNAT po
1. To access App Service diagnostics, navigate to your App Service web app or App Service Environment in the [Azure portal](https://portal.azure.com/). In the left navigation, select **Diagnose and solve problems**. 2. Select Availability and Performance Category 3. Select SNAT Port Exhaustion tile in the list of available tiles under the category. The practice is to keep it below 128.
-If you do need it, you can still open a support ticket and the support engineer will get the metric from back-end for you.
+If you do need it, you can still open a support ticket, and the support engineer will get the metric from back-end for you.
-Since SNAT port usage is not available as a metric, it is not possible to either autoscale based on SNAT port usage, or to configure auto scale based on SNAT ports allocation metric.
+Since SNAT port usage isn't available as a metric, it isn't possible to either autoscale based on SNAT port usage, or to configure auto scale based on SNAT ports allocation metric.
### TCP Connections and SNAT Ports
-TCP connections and SNAT ports are not directly related. A TCP connections usage detector is included in the Diagnose and Solve Problems blade of any App Service site. Search for the phrase "TCP connections" to find it.
+TCP connections and SNAT ports aren't directly related. A TCP connections usage detector is included in the Diagnose and Solve Problems management page of any App Service app. Search for the phrase "TCP connections" to find it.
* The SNAT Ports are only used for external network flows, while the total TCP Connections includes local loopback connections. * A SNAT port can be shared by different flows, if the flows are different in either protocol, IP address or port. The TCP Connections metric counts every TCP connection. * The TCP connections limit happens at the worker instance level. The Azure Network outbound load balancing doesn't use the TCP Connections metric for SNAT port limiting. * The TCP connections limits are described in [Sandbox Cross VM Numerical Limits - TCP Connections](https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#cross-vm-numerical-limits)
-* Existing TCP sessions will fail when new outbound TCP sessions are added from Azure App Service source port. You can either use a single IP or reconfigure backend pool members to avoid conflicts.
+* Existing TCP sessions fail when new outbound TCP sessions are added from Azure App Service source port. You can either use a single IP or reconfigure backend pool members to avoid conflicts.
|Limit name|Description|Small (A1)|Medium (A2)|Large (A3)|Isolated tier (ASE)| |||||||
TCP connections and SNAT ports are not directly related. A TCP connections usage
### WebJobs and Database connections
-If SNAT ports are exhausted, where WebJobs are unable to connect to SQL Database, there is no metric to show how many connections are opened by each individual web application process. To find the problematic WebJob, move several WebJobs out to another App Service plan to see if the situation improves, or if an issue remains in one of the plans. Repeat the process until you find the problematic WebJob.
+If SNAT ports are exhausted, and WebJobs are unable to connect to SQL Database, there's no metric to show how many connections are opened by each individual web application process. To find the problematic WebJob, move several WebJobs out to another App Service plan to see if the situation improves, or if an issue remains in one of the plans. Repeat the process until you find the problematic WebJob.
## Additional information
application-gateway Tutorial Ingress Controller Add On New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/application-gateway/tutorial-ingress-controller-add-on-new.md
Last updated 06/22/2023 -+ # Tutorial: Enable the ingress controller add-on for a new AKS cluster with a new application gateway instance
automation Change Tracking Data Collection Rule Creation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/automation/change-tracking/change-tracking-data-collection-rule-creation.md
Title: Script sample - Create a data collection rule in change tracking. description: Learn about how to create a data collection rule Previously updated : 02/06/2023 Last updated : 06/28/2023
This script helps you to create a data collection rule in Change tracking and in
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {
- "dataCollectionRuleName": {
- "type": "string",
- "metadata": {
- "description": "Specifies the name of the data collection rule to create."
+ "dataCollectionRuleName": {
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the name of the data collection rule to create."
+ },
+ "defaultValue": "Microsoft-CT-DCR"
},
- "defaultValue": "Microsoft-CT-DCR"
- },
- "workspaceResourceId": {
- "type": "string",
- "metadata": {
- "description": "Specifies the Azure resource ID of the Log Analytics workspace to use to store change tracking data."
+ "workspaceResourceId": {
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the Azure resource ID of the Log Analytics workspace to use to store change tracking data."
+ }
}
- }
+ },
+ "variables": {
+ "subscriptionId": "[substring(parameters('workspaceResourceId'), 15, sub(indexOf(parameters('workspaceResourceId'), '/resourceGroups/'), 15))]",
+ "resourceGroupName": "[substring(parameters('workspaceResourceId'), add(indexOf(parameters('workspaceResourceId'), '/resourceGroups/'), 16), sub(sub(indexOf(parameters('workspaceResourceId'), '/providers/'), indexOf(parameters('workspaceResourceId'), '/resourceGroups/')),16))]",
+ "workspaceName": "[substring(parameters('workspaceResourceId'), add(lastIndexOf(parameters('workspaceResourceId'), '/'), 1), sub(length(parameters('workspaceResourceId')), add(lastIndexOf(parameters('workspaceResourceId'), '/'), 1)))]"
}, "resources": [
- {
- "type": "microsoft.resources/deployments",
- "name": "get-workspace-region",
- "apiVersion": "2020-08-01",
- "properties": {
- "mode": "Incremental",
- "template": {
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "resources": [],
- "outputs": {
- "workspaceLocation": {
- "type": "string",
- "value": "[reference(parameters('workspaceResourceId'), '2020-08-01', 'Full').location]"
+ {
+ "type": "microsoft.resources/deployments",
+ "name": "get-workspace-region",
+ "apiVersion": "2020-08-01",
+ "properties": {
+ "mode": "Incremental",
+ "template": {
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "resources": [],
+ "outputs": {
+ "workspaceLocation": {
+ "type": "string",
+ "value": "[reference(parameters('workspaceResourceId'), '2020-08-01', 'Full').location]"
+ }
+ }
}
- }
- }
- }
- },
- {
- "type": "microsoft.resources/deployments",
- "name": "CtDcr-Deployment",
- "apiVersion": "2020-08-01",
- "properties": {
- "mode": "Incremental",
- "parameters": {
- "workspaceRegion": {
- "value": "[reference('get-workspace-region').outputs.workspaceLocation.value]"
}
- },
- "template": {
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "workspaceRegion": {
- "type": "string"
- }
- },
- "resources": [
- {
- "type": "Microsoft.Insights/dataCollectionRules",
- "apiVersion": "2021-04-01",
- "name": "[parameters('dataCollectionRuleName')]",
- "location": "[[parameters('workspaceRegion')]",
- "properties": {
- "description": "Data collection rule for CT.",
- "dataSources": {
- "extensions": [
- {
- "streams": [
- "Microsoft-ConfigurationChange"
- ],
- "extensionName": "ChangeTracking-Windows",
- "extensionSettings": {
- "enableFiles": true,
- "enableSoftware": true,
- "enableRegistry": true,
- "enableServices": false,
- "enableInventory": true,
- "registrySettings": {
- "registryCollectionFrequency": 3000,
- "registryInfo": [
- {
- "name": "Registry_1",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Startup",
- "valueName": ""
- },
- {
- "name": "Registry_2",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Shutdown",
- "valueName": ""
- },
- {
- "name": "Registry_3",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run",
- "valueName": ""
- },
- {
- "name": "Registry_4",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components",
- "valueName": ""
- },
- {
- "name": "Registry_5",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\ShellEx\\ContextMenuHandlers",
- "valueName": ""
- },
- {
- "name": "Registry_6",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Background\\ShellEx\\ContextMenuHandlers",
- "valueName": ""
- },
- {
- "name": "Registry_7",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Shellex\\CopyHookHandlers",
- "valueName": ""
- },
- {
- "name": "Registry_8",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers",
- "valueName": ""
- },
- {
- "name": "Registry_9",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers",
- "valueName": ""
- },
- {
- "name": "Registry_10",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects",
- "valueName": ""
- },
- {
- "name": "Registry_11",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects",
- "valueName": ""
- },
- {
- "name": "Registry_12",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer\\Extensions",
- "valueName": ""
- },
- {
- "name": "Registry_13",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Extensions",
- "valueName": ""
- },
- {
- "name": "Registry_14",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32",
- "valueName": ""
- },
- {
- "name": "Registry_15",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32",
- "valueName": ""
- },
- {
- "name": "Registry_16",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\KnownDlls",
- "valueName": ""
- },
- {
- "name": "Registry_17",
- "groupTag": "Recommended",
- "enabled": false,
- "recurse": true,
- "description": "",
- "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify",
- "valueName": ""
- }
- ]
- },
- "fileSettings": {
- "fileCollectionFrequency": 2700
- },
- "softwareSettings": {
- "softwareCollectionFrequency": 1800
- },
- "inventorySettings": {
- "inventoryCollectionFrequency": 36000
- },
- "servicesSettings": {
- "serviceCollectionFrequency": 1800
- }
- },
- "name": "CTDataSource-Windows"
- },
- {
- "streams": [
- "Microsoft-ConfigurationChange"
- ],
- "extensionName": "ChangeTracking-Linux",
- "extensionSettings": {
- "enableFiles": true,
- "enableSoftware": true,
- "enableRegistry": false,
- "enableServices": false,
- "enableInventory": true,
- "fileSettings": {
- "fileCollectionFrequency": 900,
- "fileInfo": [
- {
- "name": "ChangeTrackingLinuxPath_default",
- "enabled": true,
- "destinationPath": "/etc/*.conf",
- "useSudo": true,
- "recurse": true,
- "maxContentsReturnable": 5000000,
- "pathType": "File",
- "type": "File",
- "links": "Follow",
- "maxOutputSize": 500000,
- "groupTag": "Recommended"
- }
- ]
- },
- "softwareSettings": {
- "softwareCollectionFrequency": 300
- },
- "inventorySettings": {
- "inventoryCollectionFrequency": 36000
- },
- "servicesSettings": {
- "serviceCollectionFrequency": 1800
- }
+ },
+ {
+ "type": "microsoft.resources/deployments",
+ "name": "CtDcr-Deployment",
+ "apiVersion": "2020-08-01",
+ "properties": {
+ "mode": "Incremental",
+ "parameters": {
+ "workspaceRegion": {
+ "value": "[reference('get-workspace-region').outputs.workspaceLocation.value]"
+ }
+ },
+ "template": {
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "workspaceRegion": {
+ "type": "string"
+ }
+ },
+ "resources": [
+ {
+ "type": "Microsoft.Insights/dataCollectionRules",
+ "apiVersion": "2021-04-01",
+ "name": "[parameters('dataCollectionRuleName')]",
+ "location": "[[parameters('workspaceRegion')]",
+ "properties": {
+ "description": "Data collection rule for CT.",
+ "dataSources": {
+ "extensions": [
+ {
+ "streams": [
+ "Microsoft-ConfigurationChange",
+ "Microsoft-ConfigurationChangeV2",
+ "Microsoft-ConfigurationData"
+ ],
+ "extensionName": "ChangeTracking-Windows",
+ "extensionSettings": {
+ "enableFiles": true,
+ "enableSoftware": true,
+ "enableRegistry": true,
+ "enableServices": true,
+ "enableInventory": true,
+ "registrySettings": {
+ "registryCollectionFrequency": 3000,
+ "registryInfo": [
+ {
+ "name": "Registry_1",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Startup",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_2",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\Scripts\\Shutdown",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_3",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_4",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_5",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\ShellEx\\ContextMenuHandlers",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_6",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Background\\ShellEx\\ContextMenuHandlers",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_7",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Classes\\Directory\\Shellex\\CopyHookHandlers",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_8",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_9",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_10",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_11",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_12",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer\\Extensions",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_13",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Extensions",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_14",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_15",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_16",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\KnownDlls",
+ "valueName": ""
+ },
+ {
+ "name": "Registry_17",
+ "groupTag": "Recommended",
+ "enabled": false,
+ "recurse": true,
+ "description": "",
+ "keyName": "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify",
+ "valueName": ""
+ }
+ ]
+ },
+ "fileSettings": {
+ "fileCollectionFrequency": 2700
+ },
+ "softwareSettings": {
+ "softwareCollectionFrequency": 1800
+ },
+ "inventorySettings": {
+ "inventoryCollectionFrequency": 36000
+ },
+ "servicesSettings": {
+ "serviceCollectionFrequency": 1800
+ }
+ },
+ "name": "CTDataSource-Windows"
+ },
+ {
+ "streams": [
+ "Microsoft-ConfigurationChange",
+ "Microsoft-ConfigurationChangeV2",
+ "Microsoft-ConfigurationData"
+ ],
+ "extensionName": "ChangeTracking-Linux",
+ "extensionSettings": {
+ "enableFiles": true,
+ "enableSoftware": true,
+ "enableRegistry": false,
+ "enableServices": true,
+ "enableInventory": true,
+ "fileSettings": {
+ "fileCollectionFrequency": 900,
+ "fileInfo": [
+ {
+ "name": "ChangeTrackingLinuxPath_default",
+ "enabled": true,
+ "destinationPath": "/etc/.*.conf",
+ "useSudo": true,
+ "recurse": true,
+ "maxContentsReturnable": 5000000,
+ "pathType": "File",
+ "type": "File",
+ "links": "Follow",
+ "maxOutputSize": 500000,
+ "groupTag": "Recommended"
+ }
+ ]
+ },
+ "softwareSettings": {
+ "softwareCollectionFrequency": 300
+ },
+ "inventorySettings": {
+ "inventoryCollectionFrequency": 36000
+ },
+ "servicesSettings": {
+ "serviceCollectionFrequency": 300
+ }
+ },
+ "name": "CTDataSource-Linux"
+ }
+ ]
+ },
+ "destinations": {
+ "logAnalytics": [
+ {
+ "workspaceResourceId": "[parameters('workspaceResourceId')]",
+ "name": "Microsoft-CT-Dest"
+ }
+ ]
+ },
+ "dataFlows": [
+ {
+ "streams": [
+ "Microsoft-ConfigurationChange",
+ "Microsoft-ConfigurationChangeV2",
+ "Microsoft-ConfigurationData"
+ ],
+ "destinations": [
+ "Microsoft-CT-Dest"
+ ]
+ }
+ ]
+ }
},
- "name": "CTDataSource-Linux"
- }
+ {
+ "type": "Microsoft.OperationsManagement/solutions",
+ "name": "[Concat('ChangeTracking', '(', variables('workspaceName'), ')')]",
+ "location": "[[parameters('workspaceRegion')]",
+ "apiVersion": "2015-11-01-preview",
+ "id": "[Concat('/subscriptions/', variables('subscriptionId'), '/resourceGroups/', variables('resourceGroupName'), '/providers/Microsoft.OperationsManagement/solutions/ChangeTracking', '(', variables('workspaceName'), ')')]",
+ "properties": {
+ "workspaceResourceId": "[parameters('workspaceResourceId')]"
+ },
+ "plan": {
+ "name": "[Concat('ChangeTracking', '(', variables('workspaceName'), ')')]",
+ "product": "OMSGallery/ChangeTracking",
+ "promotionCode": "",
+ "publisher": "Microsoft"
+ }
+ }
]
- },
- "destinations": {
- "logAnalytics": [
- {
- "workspaceResourceId": "[parameters('workspaceResourceId')]",
- "name": "Microsoft-CT-Dest"
- }
- ]
- },
- "dataFlows": [
- {
- "streams": [
- "Microsoft-ConfigurationChange"
- ],
- "destinations": [
- "Microsoft-CT-Dest"
- ]
- }
- ]
}
- }
- ]
- }
+ }
}
- }
] } ```
automation Enable Vms Monitoring Agent https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/automation/change-tracking/enable-vms-monitoring-agent.md
Title: Enable Azure Automation Change Tracking for single machine and multiple m
description: This article tells how to enable the Change Tracking feature for single machine and multiple machines at scale from the Azure portal. Previously updated : 05/18/2023 Last updated : 06/28/2023
automation Default Python Packages https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/automation/default-python-packages.md
Title: Default Python packages in Azure Automation
description: List of default Python packages in Automation service. Last updated 03/15/2023 -+ # Default Python packages
azure_mgmt_billing |ΓÇ» 0.2.0 |
|sqlite_bro |ΓÇ» 0.9.1 | |urllib3 |ΓÇ» 1.25.7 | |wheel |ΓÇ» 0.34.2 |-
automation Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/automation/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Automation description: Lists Azure Policy Regulatory Compliance controls available for Azure Automation. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-app-configuration Howto Leverage Json Content Type https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-app-configuration/howto-leverage-json-content-type.md
ms.devlang: azurecli Last updated 03/27/2023-+ -- #Customer intent: I want to store JSON key-values in App Configuration store without losing the data type of each setting.
azure-app-configuration Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-app-configuration/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure App Configuration description: Lists Azure Policy Regulatory Compliance controls available for Azure App Configuration. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-arc Monitor Grafana Kibana https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/data/monitor-grafana-kibana.md
description: View logs and metrics using Kibana and Grafana
+
azure-arc Tutorial Use Gitops Flux2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/kubernetes/tutorial-use-gitops-flux2.md
Title: "Tutorial: Deploy applications using GitOps with Flux v2" description: "This tutorial shows how to use GitOps with Flux v2 to manage configuration and application deployment in Azure Arc and AKS clusters." Previously updated : 04/27/2023 Last updated : 06/29/2023
Before you dive in, take a moment to [learn how GitOps with Flux works conceptua
## Prerequisites
-To deploy applications using GitOps with Flux v2, you need the following:
+To deploy applications using GitOps with Flux v2, you need:
### [Azure CLI](#tab/azure-cli) #### For Azure Arc-enabled Kubernetes clusters
-* An Azure Arc-enabled Kubernetes connected cluster that's up and running. Starting with [`microsoft.flux` version 1.7.0](extensions-release.md#170-march-2023), ARM64-based clusters are supported.
+* An Azure Arc-enabled Kubernetes connected cluster that's up and running. ARM64-based clusters are supported starting with [`microsoft.flux` version 1.7.0](extensions-release.md#170-march-2023).
[Learn how to connect a Kubernetes cluster to Azure Arc](./quickstart-connect-cluster.md). If you need to connect through an outbound proxy, then assure you [install the Arc agents with proxy settings](./quickstart-connect-cluster.md?tabs=azure-cli#connect-using-an-outbound-proxy-server).
To deploy applications using GitOps with Flux v2, you need the following:
az provider register --namespace Microsoft.KubernetesConfiguration ```
- Registration is an asynchronous process and should finish within ten minutes. To monitor the registration process, use the following command:
+ Registration is an asynchronous process and should finish within 10 minutes. To monitor the registration process, use the following command:
```azurecli az provider show -n Microsoft.KubernetesConfiguration -o table
False whl k8s-extension C:\Users\somename\.azure\c
#### For Azure Arc-enabled Kubernetes clusters
-* An Azure Arc-enabled Kubernetes connected cluster that's up and running. Starting with [`microsoft.flux` version 1.7.0](extensions-release.md#170-march-2023), ARM64-based clusters are supported.
+* An Azure Arc-enabled Kubernetes connected cluster that's up and running. ARM64-based clusters are supported starting with [`microsoft.flux` version 1.7.0](extensions-release.md#170-march-2023).
[Learn how to connect a Kubernetes cluster to Azure Arc](./quickstart-connect-cluster.md). If you need to connect through an outbound proxy, then assure you [install the Arc agents with proxy settings](./quickstart-connect-cluster.md?tabs=azure-cli#connect-using-an-outbound-proxy-server).
The GitOps agents require outbound (egress) TCP to the repo source on either por
## Apply a Flux configuration
-Use the `k8s-configuration` Azure CLI extension (or the Azure portal) to enable GitOps in an AKS or Arc-enabled Kubernetes cluster. For a demonstration, use the public [gitops-flux2-kustomize-helm-mt](https://github.com/Azure/gitops-flux2-kustomize-helm-mt) repository.
+Use the `k8s-configuration` Azure CLI extension or the Azure portal to enable GitOps in an AKS or Arc-enabled Kubernetes cluster. For a demonstration, use the public [gitops-flux2-kustomize-helm-mt](https://github.com/Azure/gitops-flux2-kustomize-helm-mt) repository.
> [!IMPORTANT] > The demonstration repo is designed to simplify your use of this tutorial and illustrate some key principles. To keep up to date, the repo can get breaking changes occasionally from version upgrades. These changes won't affect your new application of this tutorial, only previous tutorial applications that have not been deleted. To learn how to handle these changes please see the [breaking change disclaimer](https://github.com/Azure/gitops-flux2-kustomize-helm-mt#breaking-change-disclaimer-%EF%B8%8F). ### [Azure CLI](#tab/azure-cli)
-The following example applies a Flux configuration to a cluster, using the following values and settings:
+The following example uses the `az k8s-configuration create` command to apply a Flux configuration to a cluster, using the following values and settings:
* The resource group that contains the cluster is `flux-demo-rg`. * The name of the Azure Arc cluster is `flux-demo-arc`.
The following example applies a Flux configuration to a cluster, using the follo
* The namespace for configuration installation is `cluster-config`. * The URL for the public Git repository is `https://github.com/Azure/gitops-flux2-kustomize-helm-mt`. * The Git repository branch is `main`.
-* The scope of the configuration is `cluster`. This gives the operators permissions to make changes throughout cluster. To use `namespace` scope with this tutorial, [see the changes needed](conceptual-gitops-flux2.md#multi-tenancy).
+* The scope of the configuration is `cluster`. This scope gives the operators permissions to make changes throughout cluster. To use `namespace` scope with this tutorial, [see the changes needed](conceptual-gitops-flux2.md#multi-tenancy).
* Two kustomizations are specified with names `infra` and `apps`. Each is associated with a path in the repository. * The `apps` kustomization depends on the `infra` kustomization. (The `infra` kustomization must finish before the `apps` kustomization runs.)
-* Set `prune=true` on both kustomizations. This setting ensures that the objects that Flux deployed to the cluster will be cleaned up if they're removed from the repository or if the Flux configuration or kustomizations are deleted.
+* Set `prune=true` on both kustomizations. This setting ensures that the objects that Flux deployed to the cluster will be cleaned up if they're removed from the repository, or if the Flux configuration or kustomizations are deleted.
```azurecli az k8s-configuration flux create -g flux-demo-rg \
az k8s-configuration flux create -g flux-demo-rg \
The `microsoft.flux` extension will be installed on the cluster (if it hasn't already been installed due to a previous GitOps deployment).
+> [!TIP]
+> The `az k8s-configuration create` command deploys the `microsoft.flux` extension to the cluster and creates the configuration. In some scenarios, you may want to create the flux extension instance separately before you create your configuration resources. To do so, use the `az k8s-extension create` command to [create an instance of the extension on your cluster](extensions.md#create-extension-instance).
+ When the flux configuration is first installed, the initial compliance state may be `Pending` or `Non-compliant` because reconciliation is still ongoing. After a minute or so, query the configuration again to see the final compliance state. ```azurecli
az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connec
#### Using Kubelet identity as authentication method for AKS clusters
-When working with AKS clusters, one of the authentication options to use is kubelet identity. By default, AKS creates its own kubelet identity in the managed resource group. If you prefer, you can use a [pre-created kubelet managed identity](../../aks/use-managed-identity.md#use-a-pre-created-kubelet-managed-identity). To do so, add the parameter `--config useKubeletIdentity=true` at the time of Flux extension installation.
+For AKS clusters, one of the authentication options to use is kubelet identity. By default, AKS creates its own kubelet identity in the managed resource group. If you prefer, you can use a [pre-created kubelet managed identity](../../aks/use-managed-identity.md#use-a-pre-created-kubelet-managed-identity). To do so, add the parameter `--config useKubeletIdentity=true` at the time of Flux extension installation.
```azurecli az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller ```
-For more information on OpenShift guidance for onboarding Flux, refer to the [Flux documentation](https://fluxcd.io/docs/use-cases/openshift/#openshift-setup).
+For more information on OpenShift guidance for onboarding Flux, see the [Flux documentation](https://fluxcd.io/docs/use-cases/openshift/#openshift-setup).
### [Azure portal](#tab/azure-portal)
The Azure portal is useful for managing GitOps configurations and the Flux exten
> [!NOTE] > Some options are not currently supported in the Azure portal. See the Azure CLI steps for additional options, including suspending continuous reconciliation, controlling which controllers are deployed with the Flux cluster extension, and using Kubelet identity as authentication method for AKS clusters.
-Follow these steps to apply a sample Flux configuration to a cluster. As part of this process, Azure will install the `microsoft.flux` extension on the cluster, if it hasn't already been installed due to a previous deployment.
+Follow these steps to apply a sample Flux configuration to a cluster. As part of this process, Azure installs the `microsoft.flux` extension on the cluster, if it hasn't already been installed due to a previous deployment.
1. Navigate to your cluster in the Azure portal. 1. In the left pane, under **Settings**, select **GitOps**.
Follow these steps to apply a sample Flux configuration to a cluster. As part of
:::image type="content" source="media/tutorial-use-gitops-flux2/portal-configuration-source.png" alt-text="Screenshow showing the Source options for a GitOps configuration in the Azure portal." lightbox="media/tutorial-use-gitops-flux2/portal-configuration-source.png":::
-1. In the **Kustomizations** section, you will create two kustomizations: `infrastructure` and `staging`. These are Flux resources, each associated with a path in the repository, representing the set of manifests that Flux should reconcile to the cluster.
+1. In the **Kustomizations** section, create two kustomizations: `infrastructure` and `staging`. These kustomizations are Flux resources, each associated with a path in the repository, that represent the set of manifests that Flux should reconcile to the cluster.
1. Select **Create**. 1. In the **Create a Kustomization** screen:
For more information about available parameters and how to use them, see [GitOps
The [Flux Kustomize controller](https://fluxcd.io/docs/components/kustomize/) is installed as part of the `microsoft.flux` cluster extension. It allows the declarative management of cluster configuration and application deployment by using Kubernetes manifests synced from a Git repository. These Kubernetes manifests can optionally include a *kustomize.yaml* file.
-For usage details, see the following:
+For usage details, see the following resiyrces:
* [Flux Kustomize controller](https://fluxcd.io/docs/components/kustomize/) * [Kustomize reference documents](https://kubectl.docs.kubernetes.io/references/kustomize/)
For usage details, see the following:
The Flux Helm controller is installed as part of the `microsoft.flux` cluster extension. It allows you to declaratively manage Helm chart releases with Kubernetes manifests that you maintain in your Git repository.
-For usage details, see the following:
+For usage details, see the following resources:
* [Flux for Helm users](https://fluxcd.io/docs/use-cases/helm/) * [Manage Helm releases](https://fluxcd.io/docs/guides/helmreleases/)
spec:
... ```
-By using this annotation, the HelmRelease that is deployed will be patched with the reference to the configured source. Currently, only `GitRepository` source is supported.
+When you use this annotation, the deployed HelmRelease is patched with the reference to the configured source. Currently, only `GitRepository` source is supported.
## Delete the Flux configuration and extension
Use the following commands to delete your Flux configuration and, if desired, th
#### Delete the Flux configuration
-The command below deletes both the `fluxConfigurations` resource in Azure and the Flux configuration objects in the cluster. Because the Flux configuration was originally created with the `prune=true` parameter for the kustomization, all of the objects created in the cluster based on manifests in the Git repository will be removed when the Flux configuration is removed. However, this command does not remove the Flux extension itself.
+The following command deletes both the `fluxConfigurations` resource in Azure and the Flux configuration objects in the cluster. Because the Flux configuration was originally created with the `prune=true` parameter for the kustomization, all of the objects created in the cluster based on manifests in the Git repository will be removed when the Flux configuration is removed. However, this command doesn't remove the Flux extension itself.
```azurecli az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClu
To delete a Flux configuration, navigate to the cluster where the configuration was created and select **GitOps** in the left pane. Select the configuration you want to delete. From the top of the page, select **Delete**, then select **Delete** again when prompted to confirm.
-When you delete a Flux configuration, all of the Flux configuration objects in the cluster will also be deleted. However, this action does not delete the `microsoft.flux` extension itself.
+When you delete a Flux configuration, all of the Flux configuration objects in the cluster will also be deleted. However, this action doesn't delete the `microsoft.flux` extension itself.
#### Delete the Flux cluster extension
azure-arc System Requirements https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/resource-bridge/system-requirements.md
These minimum requirements enable most scenarios. However, a partner product may
## IP address prefix (subnet) requirements
-The IP address prefix (subnet) where Arc resource bridge will be deployed requires a minimum prefix of /29. The IP address prefix must have enough available IP addresses for the gateway IP, control plane IP, appliance VM IP, and reserved appliance VM IP.
+The IP address prefix (subnet) where Arc resource bridge will be deployed requires a minimum prefix of /29. The IP address prefix must have enough available IP addresses for the gateway IP, control plane IP, appliance VM IP, and reserved appliance VM IP. Please work with your network engineer to ensure that there is an available subnet with the required available IP addresses and IP address prefix for Arc resource bridge.
The IP address prefix is the subnet's IP address range for the virtual network and subnet mask (IP Mask) in CIDR notation, for example `192.168.7.1/24`. You provide the IP address prefix (in CIDR notation) during the creation of the configuration files for Arc resource bridge.
-Consult your system or network administrator to obtain the IP address prefix in CIDR notation. An IP Subnet CIDR calculator may be used to obtain this value.
+Consult your network engineer to obtain the IP address prefix in CIDR notation. An IP Subnet CIDR calculator may be used to obtain this value.
## Static configuration
By default, these files are generated in the current CLI directory when `createc
### Kubeconfig
-The appliance VM hosts a management Kubernetes cluster. The kubeconfig is a low-privilege Kubernetes configuration file that is used to maintain the appliance VM. By default, it's generated in the current CLI directory when the `deploy` command completes. The kubeconfig should be saved in a secure location to the management machine, because it's required for maintaining the appliance VM.
+The appliance VM hosts a management Kubernetes cluster. The kubeconfig is a low-privilege Kubernetes configuration file that is used to maintain the appliance VM. By default, it's generated in the current CLI directory when the `deploy` command completes. The kubeconfig should be saved in a secure location to the management machine, because it's required for maintaining the appliance VM.
### HCI login configuration file (Azure Stack HCI only)
For instructions to deploy Arc resource bridge on AKS Hybrid, see [How to instal
- Learn about [security configuration and considerations for Azure Arc resource bridge (preview)](security-overview.md). +
azure-arc Manage Vm Extensions Ansible https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/manage-vm-extensions-ansible.md
Title: Enable VM extension using Red Hat Ansible
description: This article describes how to deploy virtual machine extensions to Azure Arc-enabled servers running in hybrid cloud environments using Red Hat Ansible Automation. Last updated 05/15/2023 + # Enable Azure VM extensions using Red Hat Ansible automation
azure-arc Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Arc-enabled servers (preview) description: Lists Azure Policy Regulatory Compliance controls available for Azure Arc-enabled servers (preview). These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-arc Disaster Recovery https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/vmware-vsphere/disaster-recovery.md
Title: Perform disaster recovery operations description: Learn how to perform recovery operations for the Azure Arc resource bridge VM in Azure Arc-enabled VMware vSphere disaster scenarios. -+ Last updated 08/16/2022
azure-cache-for-redis Cache How To Functions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-cache-for-redis/cache-how-to-functions.md
zone_pivot_groups: cache-redis-zone-pivot-group
+ Last updated 05/24/2023- # Serverless event-based architectures with Azure Cache for Redis and Azure Functions (preview)
class RedisMessageModel:
- [Introduction to Azure Functions](/azure/azure-functions/functions-overview) - [Get started with Azure Functions triggers in Azure Cache for Redis](cache-tutorial-functions-getting-started.md)-- [Using Azure Functions and Azure Cache for Redis to create a write-behind cache](cache-tutorial-write-behind.md)
+- [Using Azure Functions and Azure Cache for Redis to create a write-behind cache](cache-tutorial-write-behind.md)
azure-cache-for-redis Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-cache-for-redis/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Cache for Redis description: Lists Azure Policy Regulatory Compliance controls available for Azure Cache for Redis. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-functions Create First Function Arc Custom Container https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/create-first-function-arc-custom-container.md
Title: Create your first containerized Azure Functions on Azure Arc
description: Get started with Azure Functions on Azure Arc by deploying your first function app in a custom Linux container. Last updated 06/05/2023-+ ms.devlang: azurecli zone_pivot_groups: programming-languages-set-functions
azure-functions Durable Functions Node Model Upgrade https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/durable/durable-functions-node-model-upgrade.md
Last updated 04/06/2023 ms.devlang: javascript, typescript+ zone_pivot_groups: programming-languages-set-functions-nodejs
azure-functions Functions Bindings Azure Data Explorer Input https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-bindings-azure-data-explorer-input.md
Title: Azure Data Explorer input bindings for Azure Functions (preview)
description: Understand usage of Azure Data Explorer input bindings for Azure Functions (Query data from Azure Data Explorer) -+ Last updated 05/04/2023
azure-functions Functions Bindings Azure Data Explorer Output https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-bindings-azure-data-explorer-output.md
Title: Azure Data Explorer output bindings for Azure Functions (preview)
description: Understand usage of Azure Data Explorer output bindings for Azure Functions (Ingest data to Azure Data Explorer) -+ Last updated 05/04/2023
azure-functions Functions Bindings Azure Data Explorer https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-bindings-azure-data-explorer.md
Title: Azure Data Explorer bindings for Azure Functions overview (preview)
description: Learn how to use Azure Data Explorer bindings in Azure Functions. -+ Last updated 05/04/2023
azure-functions Functions Bindings Azure Sql https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-bindings-azure-sql.md
To use a preview version of the Microsoft.Azure.WebJobs.Extensions.Sql package f
dotnet add package Microsoft.Azure.WebJobs.Extensions.Sql --prerelease ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the SQL extension package.
+ # [Isolated process](#tab/isolated-process) Functions execute in an isolated C# worker process. To learn more, see [Guide for running C# Azure Functions in an isolated worker process](dotnet-isolated-process-guide.md).
To use a preview version of the Microsoft.Azure.Functions.Worker.Extensions.Sql
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql --prerelease ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the SQL extension package.
+ # [C# script](#tab/csharp-script) Functions run as C# script, which is supported primarily for C# portal editing. The SQL bindings extension is part of the v4 [extension bundle], which is specified in your host.json project file.
You can add the preview extension bundle to use the [SQL trigger](functions-bind
} ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the extension bundle.
+
You can add the preview extension bundle by adding or replacing the following co
} ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the extension bundle.
You can add the preview extension bundle by adding or replacing the following co
} ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the extension bundle.
+ ::: zone-end
You can add the preview extension bundle by adding or replacing the following co
} ```
+> [!NOTE]
+> Breaking changes between preview releases of the Azure SQL trigger for Functions requires that all Functions targeting the same database use the same version of the extension bundle.
+ ## Update packages
azure-functions Functions Deploy Container Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-deploy-container-apps.md
Title: Create your first containerized Azure Functions on Azure Container Apps
description: Get started with Azure Functions on Azure Container Apps by deploying your first function app from a Linux image in a container registry. Last updated 05/25/2023 -+ zone_pivot_groups: programming-languages-set-functions
azure-functions Functions Deploy Container https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-deploy-container.md
Title: Create your first containerized Azure Functions
description: Get started by deploying your first function app from a Linux image in a container registry to Azure Functions. Last updated 05/08/2023 -+ zone_pivot_groups: programming-languages-set-functions
azure-functions Functions How To Github Actions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-how-to-github-actions.md
Title: Use GitHub Actions to make code updates in Azure Functions
description: Learn how to use GitHub Actions to define a workflow to build and deploy Azure Functions projects in GitHub. Last updated 05/16/2023-+ zone_pivot_groups: github-actions-deployment-options
Keep the following considerations in mind when using the Azure Functions action:
> [!div class="nextstepaction"] > [Learn more about Azure and GitHub integration](/azure/developer/github/)
-[Azure portal]: https://portal.azure.com
+[Azure portal]: https://portal.azure.com
azure-functions Functions Scenarios https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-scenarios.md
Title: Azure Functions Scenarios description: Identify key scenarios that use Azure Functions to provide serverless compute resources in aa Azure cloud-based topology. + Last updated 05/15/2023 zone_pivot_groups: programming-languages-set-functions-lang-workers
And these articles show how to trigger from an Azure Service Bus queue or topic.
## Next steps > [!div class="nextstepaction"]
-> [Getting started with Azure Functions](./functions-get-started.md)
+> [Getting started with Azure Functions](./functions-get-started.md)
azure-functions Ip Addresses https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/ip-addresses.md
Title: IP addresses in Azure Functions
description: Learn how to find inbound and outbound IP addresses for function apps, and what causes them to change. Previously updated : 12/03/2018 Last updated : 06/08/2023 # IP addresses in Azure Functions
IP addresses are associated with function apps, not with individual functions. I
## Function app inbound IP address
-Each function app has a single inbound IP address. To find that IP address:
-
-# [Azure Portal](#tab/portal)
-
-1. Sign in to the [Azure portal](https://portal.azure.com).
-2. Navigate to the function app.
-3. Under **Settings**, select **Properties**. The inbound IP address appears under **Virtual IP address**.
-
-# [Azure CLI](#tab/azurecli)
-
-Use the `nslookup` utility from your local client computer:
+Each function app starts out by using a single inbound IP address. When running in a Consumption or Premium plan, additional inbound IP addresses may be added as event-driven scale-out occurs. To find the inbound IP address or addresses being used by your app, use the `nslookup` utility from your local computer, as in the following example:
```command nslookup <APP_NAME>.azurewebsites.net ```
-# [Azure PowerShell](#tab/azure-powershell)
-
-Use the `nslookup` utility from your local client computer:
-
-```powershell
-nslookup <APP_NAME>.azurewebsites.net
-```
--
+In this example, replace `<APP_NAME>` with your function app name. If your app uses a [custom domain name](../app-service/app-service-web-tutorial-custom-domain.md), use `nslookup` for that custom domain name instead.
## <a name="find-outbound-ip-addresses"></a>Function app outbound IP addresses
azure-government Documentation Government Csp List https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-government/documentation-government-csp-list.md
Below you can find a list of all the authorized Cloud Solution Providers (CSPs),
|[Turnkey Technologies, Inc.](https://www.turnkeytec.com)| |[Tyto Athene LLC](https://gotyto.com/)| |[U2Cloud LLC](https://www.u2cloud.com)|
-|[UDRI - SSG](https://udayton.edu/udri/_resources/docs/ssg_v8.pdf)|
+|[UDRI - SSG](https://udayton.edu/)|
|[Unisys Corp / Blue Bell](https://www.unisys.com)| |[United Data Technologies, Inc.](https://udtonline.com)| |[VALCOM COMPUTER CENTER](https://www.vlcmtech.com/)|
azure-linux Quickstart Azure Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-linux/quickstart-azure-cli.md
description: Learn how to quickly create an Azure Linux Container Host for AKS c
-+ Last updated 04/18/2023
az group delete --name testAzureLinuxCluster --yes --no-wait
In this quickstart, you deployed an Azure Linux Container Host cluster. To learn more about the Azure Linux Container Host, and walk through a complete cluster deployment and management example, continue to the Azure Linux Container Host tutorial. > [!div class="nextstepaction"]
-> [Azure Linux Container Host tutorial](./tutorial-azure-linux-create-cluster.md)
+> [Azure Linux Container Host tutorial](./tutorial-azure-linux-create-cluster.md)
azure-linux Quickstart Azure Resource Manager Template https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-linux/quickstart-azure-resource-manager-template.md
description: Learn how to quickly create an Azure Linux Container Host for AKS c
+ Last updated 04/18/2023
azure-linux Quickstart Terraform https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-linux/quickstart-terraform.md
+
+ Title: 'Quickstart: Deploy an Azure Linux Container Host for AKS cluster by using Terraform'
+description: Learn how to quickly create an Azure Linux Container Host for AKS cluster using Terraform.
+++
+ms.editor: schaffererin
+ Last updated : 06/27/2023++
+# Quickstart: Deploy an Azure Linux Container Host for AKS cluster using Terraform
+
+Get started with the Azure Linux Container Host using Terraform to deploy an Azure Linux Container Host cluster. After installing the prerequisites, you implement the Terraform code, initialize Terraform, and create and apply a Terraform execution plan.
+
+[Terraform](https://www.terraform.io/) enables the definition, preview, and deployment of cloud infrastructure. With Terraform, you create configuration files using [HCL syntax](https://developer.hashicorp.com/terraform/language/syntax/configuration). The HCL syntax allows you to specify the cloud provider and elements that make up your cloud infrastructure. After you create your configuration files, you create an execution plan that allows you to preview your infrastructure changes before they're deployed. Once you verify the changes, you apply the execution plan to deploy the infrastructure.
+
+> [!NOTE]
+> The example code in this article is located in the [Microsoft Terraform GitHub repo](https://github.com/Azure/terraform/tree/master/quickstart/201-k8s-cluster-with-tf-and-aks).
+
+## Prerequisites
+
+- [!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)]
+
+- If you haven't already configured Terraform, you can do so using one of the following options:
+ - [Azure Cloud Shell with Bash](/azure/developer/terraform/get-started-cloud-shell-bash?tabs=bash)
+ - [Azure Cloud Shell with PowerShell](/azure/developer/terraform/get-started-cloud-shell-powershell?tabs=bash)
+ - [Windows with Bash](/azure/developer/terraform/get-started-windows-bash?tabs=bash)
+ - [Windows with PowerShell](/azure/developer/terraform/get-started-windows-powershell?tabs=bash)
+- If you don't have an Azure service principal, [create a service principal](/azure/developer/terraform/authenticate-to-azure?tabs=bash#create-a-service-principal). Make note of the `appId`, `display_name`, `password`, and `tenant`.
+- You need the Kubernetes command-line tool `kubectl`. If you don't have it, [download kubectl](https://kubernetes.io/releases/download/).
+
+### Create an SSH key pair
+
+To access AKS nodes, you connect using an SSH key pair (public and private), which you generate using the `ssh-keygen` command. By default, these files are created in the *~/.ssh* directory. Running the `ssh-keygen` command overwrites any SSH key pair with the same name already existing in the given location.
+
+1. Go to [https://shell.azure.com](https://shell.azure.com) to open Cloud Shell in your browser.
+2. Run the `ssh-keygen` command. The following example creates an SSH key pair using RSA encryption and a bit length of 4096:
+
+ ```console
+ ssh-keygen -t rsa -b 4096
+ ```
+
+For more information about creating SSH keys, see [Create and manage SSH keys for authentication in Azure](../../articles/virtual-machines/linux/create-ssh-keys-detailed.md).
+
+## Implement the Terraform code
+
+1. Create a directory in which to test the sample Terraform code and make it the current directory.
+2. Create a file named `providers.tf` and insert the following code:
+
+ ```terraform
+ terraform {
+ required_version = ">=1.0"
+
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "~>3.0"
+ }
+ random = {
+ source = "hashicorp/random"
+ version = "~>3.0"
+ }
+ }
+ }
+
+ provider "azurerm" {
+ features {}
+ }
+ ```
+
+3. Create a file named `main.tf` and insert the following code:
+
+ ```terraform
+ # Generate random resource group name
+ resource "random_pet" "rg_name" {
+ prefix = var.resource_group_name_prefix
+ }
+
+ resource "azurerm_resource_group" "rg" {
+ location = var.resource_group_location
+ name = random_pet.rg_name.id
+ }
+
+ resource "random_id" "log_analytics_workspace_name_suffix" {
+ byte_length = 8
+ }
+
+ resource "azurerm_log_analytics_workspace" "test" {
+ location = var.log_analytics_workspace_location
+ # The WorkSpace name has to be unique across the whole of azure;
+ # not just the current subscription/tenant.
+ name = "${var.log_analytics_workspace_name}-${random_id.log_analytics_workspace_name_suffix.dec}"
+ resource_group_name = azurerm_resource_group.rg.name
+ sku = var.log_analytics_workspace_sku
+ }
+
+ resource "azurerm_log_analytics_solution" "test" {
+ location = azurerm_log_analytics_workspace.test.location
+ resource_group_name = azurerm_resource_group.rg.name
+ solution_name = "ContainerInsights"
+ workspace_name = azurerm_log_analytics_workspace.test.name
+ workspace_resource_id = azurerm_log_analytics_workspace.test.id
+
+ plan {
+ product = "OMSGallery/ContainerInsights"
+ publisher = "Microsoft"
+ }
+ }
+
+ resource "azurerm_kubernetes_cluster" "k8s" {
+ location = azurerm_resource_group.rg.location
+ name = var.cluster_name
+ resource_group_name = azurerm_resource_group.rg.name
+ dns_prefix = var.dns_prefix
+ tags = {
+ Environment = "Development"
+ }
+
+ default_node_pool {
+ name = "azurelinuxpool"
+ vm_size = "Standard_D2_v2"
+ node_count = var.agent_count
+ os_sku = "AzureLinux"
+ }
+ linux_profile {
+ admin_username = "azurelinux"
+
+ ssh_key {
+ key_data = file(var.ssh_public_key)
+ }
+ }
+ network_profile {
+ network_plugin = "kubenet"
+ load_balancer_sku = "standard"
+ }
+ service_principal {
+ client_id = var.aks_service_principal_app_id
+ client_secret = var.aks_service_principal_client_secret
+ }
+ }
+ ```
+
+ Similarly, you can specify the Azure Linux `os_sku` in [azurerm_kubernetes_cluster_node_pool](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster_node_pool#os_sku).
+
+4. Create a file named `variables.tf` and insert the following code:
+
+ ```terraform
+ variable "agent_count" {
+ default = 3
+ }
+
+ # The following two variable declarations are placeholder references.
+ # Set the values for these variable in terraform.tfvars
+ variable "aks_service_principal_app_id" {
+ default = ""
+ }
+
+ variable "aks_service_principal_client_secret" {
+ default = ""
+ }
+
+ variable "cluster_name" {
+ default = "k8stest"
+ }
+
+ variable "dns_prefix" {
+ default = "k8stest"
+ }
+
+ # Refer to https://azure.microsoft.com/global-infrastructure/services/?products=monitor for available Log Analytics regions.
+ variable "log_analytics_workspace_location" {
+ default = "eastus"
+ }
+
+ variable "log_analytics_workspace_name" {
+ default = "testLogAnalyticsWorkspaceName"
+ }
+
+ # Refer to https://azure.microsoft.com/pricing/details/monitor/ for Log Analytics pricing
+ variable "log_analytics_workspace_sku" {
+ default = "PerGB2018"
+ }
+
+ variable "resource_group_location" {
+ default = "eastus"
+ description = "Location of the resource group."
+ }
+
+ variable "resource_group_name_prefix" {
+ default = "rg"
+ description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
+ }
+
+ variable "ssh_public_key" {
+ default = "~/.ssh/id_rsa.pub"
+ }
+ ```
+
+5. Create a file named `outputs.tf` and insert the following code:
+
+ ```terraform
+ output "client_certificate" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate
+ sensitive = true
+ }
+
+ output "client_key" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_key
+ sensitive = true
+ }
+
+ output "cluster_ca_certificate" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate
+ sensitive = true
+ }
+
+ output "cluster_password" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].password
+ sensitive = true
+ }
+
+ output "cluster_username" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].username
+ sensitive = true
+ }
+
+ output "host" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config[0].host
+ sensitive = true
+ }
+
+ output "kube_config" {
+ value = azurerm_kubernetes_cluster.k8s.kube_config_raw
+ sensitive = true
+ }
+
+ output "resource_group_name" {
+ value = azurerm_resource_group.rg.name
+ }
+ ```
+
+6. Create a file named `terraform.tfvars` and insert the following code:
+
+ ```terraform
+ aks_service_principal_app_id = "<service_principal_app_id>"
+ aks_service_principal_client_secret = "<service_principal_password>"
+ ```
+
+## Initialize Terraform and create an execution plan
+
+1. Initialize Terraform and download the Azure modules required to manage your Azure resources using the [`terraform init`](https://developer.hashicorp.com/terraform/cli/commands/init) command.
+
+ ```console
+ terraform init
+ ```
+
+2. Create a Terraform execution plan using the [`terraform plan`](https://developer.hashicorp.com/terraform/cli/commands/plan) command.
+
+ ```console
+ terraform plan -out main.tfplan
+ ```
+
+ The `terraform plan` command creates an execution plan, but doesn't execute it. Instead, it determines what actions are necessary to create the configuration specified in your configuration files. This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
+
+ The optional `-out` parameter allows you to specify an output file for the plan. Using the `-out` parameter ensures that the plan you reviewed is exactly what is applied.
+
+ To read more about persisting execution plans and security, see the [security warnings](https://developer.hashicorp.com/terraform/cli/commands/plan#security-warning).
+
+3. Apply the Terraform execution plan using the [`terraform apply`](https://developer.hashicorp.com/terraform/cli/commands/apply) command.
+
+ ```console
+ terraform apply main.tfplan
+ ```
+
+ The `terraform apply` command above assumes you previously ran `terraform plan -out main.tfplan`. If you specified a different file name for the `-out` parameter, use that same file name in the call to `terraform apply`. If you didn't use the `-out` parameter, call `terraform apply` without any parameters.
+
+## Verify the results
+
+1. Get the resource group name using the following `echo` command.
+
+ ```console
+ echo "$(terraform output resource_group_name)"
+ ```
+
+2. Browse to the [Azure portal](https://portal.azure.com).
+3. Under **Azure services**, select **Resource groups** and locate your new resource group to see the following resources created in this demo:
+ - **Solution:** By default, the demo names this solution **ContainerInsights**. The portal shows the solution's workspace name in parenthesis.
+ - **Kubernetes service:** By default, the demo names this service **k8stest**. (A managed Kubernetes cluster is also known as an AKS/Azure Kubernetes Service.)
+ - **Log Analytics Workspace:** By default, the demo names this workspace with a prefix of **TestLogAnalyticsWorkspaceName-** followed by a random number.
+4. Get the Kubernetes configuration from the Terraform state and store it in a file that kubectl can read using the following `echo` command.
+
+ ```console
+ echo "$(terraform output kube_config)" > ./azurek8s
+ ```
+
+5. Verify the previous command didn't add an ASCII EOT character using the following `cat` command.
+
+ ```console
+ cat ./azurek8s
+ ```
+
+ If you see `<< EOT` at the beginning and `EOT` at the end, remove these characters from the file. Otherwise, you could receive the following error message: `error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context`.
+
+6. Set an environment variable so kubectl picks up the correct config using the following `export` command.
+
+ ```console
+ export KUBECONFIG=./azurek8s
+ ```
+
+7. Verify the health of the cluster using the `kubectl get nodes` command.
+
+ ```console
+ kubectl get nodes
+ ```
+
+ When the Azure Linux Container Host cluster was created, monitoring was enabled to capture health metrics for both the cluster nodes and pods. These health metrics are available in the Azure portal. For more information on container health monitoring, see [Monitor Azure Kubernetes Service health](/azure/azure-monitor/insights/container-insights-overview).
+
+ Several key values were output when you applied the Terraform execution plan. For example, the host address, Azure Linux Container Host cluster username, and Azure Linux Container Host cluster password are output.
+
+ To view all of the output values, run `terraform output`. To view a specific output value, run `echo "$(terraform output <output_value_name>)"`.
+
+## Clean up resources
+
+### Delete AKS resources
+
+When you no longer need the resources created with Terraform, you can remove them using the following steps.
+
+1. Run the [`terraform plan`](https://developer.hashicorp.com/terraform/cli/commands/plan) command and specify the `destroy` flag.
+
+ ```console
+ terraform plan -destroy -out main.destroy.tfplan
+ ```
+
+2. Remove the execution plan using the [`terraform apply`](https://www.terraform.io/docs/commands/apply.html) command.
+
+ ```console
+ terraform apply main.destroy.tfplan
+ ```
+
+### Delete service principal
+
+> [!CAUTION]
+> Delete the service principal you used in this demo only if you're not using it for anything else.
+
+1. Get the object ID of the service principal using the [`az ad sp list`][az-ad-sp-list] command
+
+ ```azurecli
+ az ad sp list --display-name "<display_name>" --query "[].{\"Object ID\":id}" --output table
+ ```
+
+2. Delete the service principal using the [`az ad sp delete`][az-ad-sp-delete] command.
+
+ ```azurecli
+ az ad sp delete --id <service_principal_object_id>
+ ```
+
+## Troubleshoot Terraform on Azure
+
+[Troubleshoot common problems when using Terraform on Azure](/azure/developer/terraform/troubleshoot).
+
+## Next steps
+
+In this quickstart, you deployed an Azure Linux Container Host cluster. To learn more about the Azure Linux Container Host and walk through a complete cluster deployment and management example, continue to the Azure Linux Container Host tutorial.
+
+> [!div class="nextstepaction"]
+> [Azure Linux Container Host tutorial](./tutorial-azure-linux-create-cluster.md)
+
+<!-- LINKS - internal -->
+[az-ad-sp-list]: /cli/azure/ad/sp#az_ad_sp_list
+[az-ad-sp-delete]: /cli/azure/ad/sp#az_ad_sp_delete
azure-maps How To Use Services Module https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/how-to-use-services-module.md
The Azure Maps Web SDK provides a *services module*. This module is a helper lib
import * as service from "azure-maps-rest"; ```
-1. Create an authentication pipeline. The pipeline must be created before you can initialize a service URL client endpoint. Use your own Azure Maps account key or Azure Active Directory (Azure AD) credentials to authenticate an Azure Maps Search service client. In this example, the Search service URL client will be created.
+1. Create an authentication pipeline. The pipeline must be created before you can initialize a service URL client endpoint. Use your own Azure Maps account key or Azure Active Directory (Azure AD) credentials to authenticate an Azure Maps Search service client. In this example, the Search service URL client is created.
If you use a subscription key for authentication:
The Azure Maps Web SDK provides a *services module*. This module is a helper lib
} ```
- For more information, see [Authentication with Azure Maps](azure-maps-authentication.md).
+ For more information, see [Authentication with Azure Maps].
1. The following code uses the newly created Azure Maps Search service URL client to geocode an address: "1 Microsoft Way, Redmond, WA". The code uses the `searchAddress` function and displays the results as a table in the body of the page.
The following image is a screenshot showing the results of this sample code, a t
## Azure Government cloud support
-The Azure Maps Web SDK supports the Azure Government cloud. All JavaScript and CSS URLs used to access the Azure Maps Web SDK remain the same, however the following tasks will need to be done to connect to the Azure Government cloud version of the Azure Maps platform.
+The Azure Maps Web SDK supports the Azure Government cloud. All JavaScript and CSS URLs used to access the Azure Maps Web SDK remain the same, however the following tasks need to be done to connect to the Azure Government cloud version of the Azure Maps platform.
When using the interactive map control, add the following line of code before creating an instance of the `Map` class.
atlas.setDomain('atlas.azure.us');
Be sure to use an Azure Maps authentication details from the Azure Government cloud platform when authenticating the map and services.
-When using the services module, the domain for the services needs to be set when creating an instance of an API URL endpoint. For example, the following code creates an instance of the `SearchURL` class and points the domain to the Azure Government cloud.
+The domain for the services needs to be set when creating an instance of an API URL endpoint. For example, the following code creates an instance of the `SearchURL` class and points the domain to the Azure Government cloud.
```javascript var searchURL = new atlas.service.SearchURL(pipeline, 'atlas.azure.us');
For more code samples that use the services module, see these articles:
> [!div class="nextstepaction"] > [Show directions from A to B](./map-route.md)+
+[Authentication with Azure Maps]: azure-maps-authentication.md
azure-maps Map Add Popup https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/map-add-popup.md
var popup = new atlas.Popup({
When the Popup template isn't defined to be a String template, a PropertyInfo template, or a combination of both, then it uses the default settings. When the `title` and `description` are the only assigned properties, the popup template shows a white background, a close button in the top-right corner. And, on small and medium screens, it shows an arrow at the bottom. The default settings show inside a table for all properties other than the `title` and the `description`. Even when falling back to the default settings, the popup template can still be manipulated programmatically. For example, users can turn off hyperlink detection and the default settings would still apply to other properties.
-Click the points on the map in the CodePen. There is a point on the map for each of the following popup templates: String template, PropertyInfo template, and Multiple content template. There are also three points to show how templates render using the defaulting settings.
+Once running, you can select the points on the map to see the popup. There is a point on the map for each of the following popup templates: String template, PropertyInfo template, and Multiple content template. There are also three points to show how templates render using the defaulting settings.
```javascript function InitMap()
function InitMap()
--> ## Reuse popup template
-Similar to reusing popup, you can reuse popup templates. This approach is useful when you only want to show one popup template at a time, for multiple points. By reusing the popup template, the number of DOM elements created by the application is reduced, which then improves your application performance. The following sample uses the same popup template for three points. If you click on any of them, a popup will be displayed with the content for that point feature.
+Similar to reusing a popup, you can reuse popup templates. This approach is useful when you only want to show one popup template at a time, for multiple points. By reusing the popup template, the number of DOM elements created by the application is reduced, which then improves your application performance. The following sample uses the same popup template for three points. If you click on any of them, a popup will be displayed with the content for that point feature.
For a fully functional sample that shows hot to reuse a single popup template with multiple features that share a common set of property fields, see [Reuse a popup template] in the [Azure Maps Samples]. For the source code for this sample, see [Reuse a popup template source code].
azure-monitor Azure Monitor Agent Extension Versions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/agents/azure-monitor-agent-extension-versions.md
We strongly recommended to update to the latest version at all times, or opt in
## Version details | Release Date | Release notes | Windows | Linux | |:|:|:|:|
+| June 2023| **Linux** <ul><li>Add the forwarder/collector's identifier (hostname)</li><li>Link OpenSSL dynamically</li><li>Support Arc-Enabled Servers proxy configuration file</li><li>**Fixes**<ul><li>Allow uploads soon after AMA startup</li><li>Run LocalSink GC on a dedicated thread to avoid threadpool scheduling issues</li><li>Fix upgrade restart of disabled services</li><li>Handle Linux Hardening where sudo on root is blocked</li><li>CEF processing fixes for non-strictly RFC compliant devices</li><li>ASA tenant can fail to startup due to config-cache directory permissions</li><li>Fix auth proxy in AMA</li></ul></li></ul>| |1.27.0|
| May 2023 | **Windows** <ul><li>Enable Large Event support for all regions.</li><li>Update to TroubleShooter 1.4.0.</li><li>Fixed issue when Event Log subscription become invalid; will resubscribe.</li><li>AMA: Fixed issue with Large Event sending too large data. Also affecting Custom Log.</li></ul> **Linux** <ul><li>Support for CIS and SELinux [hardening](https://learn.microsoft.com/azure/azure-monitor/agents/agents-overview#linux-hardening-standards)</li><li>Include Ubuntu 22.04 (jammy) in azure-mdsd package publishing</li><li>Move storage SDK patch to build container</li><li>Add system telegraf counters to AMA</li><li>Drop msgpack and syslog data if not configured in active configuration</li><li>Limit the events sent to Public ingestion pipeline</li><li>**Fixes** <ul><li>Fix mdsd crash in init when in persistent mode </li><li>Remove FdClosers from ProtocolListeners to avoid a race condition</li><li>Fix sed regex special character escaping issue in rpm macro for Centos 7.3.Maipo</li><li>Fix latency and future timestamp issue for 3P</li><li>Install AMA syslog configs only if customer is opted in for syslog in DCR</li><li>Fix heartbeat time check</li><li>Skip unnecessary cleanup in fatal signal handler</li><li>Fix case where fast-forwarding may cause intervals to be skipped</li><li>Fix comma separated custom log paths with fluent</li></ul></li><ul> | 1.16.0 | 1.26.2 | | Apr 2023 | **Windows** <ul><li>AMA: Enable Large Event support based on Region.</li><li>AMA: Upgrade to FluentBit version 2.0.9</li><li>Update Troubleshooter to 1.3.1</li><li>Update ME version to 2.2023.331.1521</li><li>Updating package version for AzSecPack 4.26 release</li></ul>|1.15.0.0| Coming soon| | Mar 2023 | **Windows** <ul><li>Text file collection improvements to handle high rate of logging and for continuous tailing in case of longer lines</li><li>VM Insights fixes for collecting metrics from non-English OS</li></ul> | 1.14.0.0 | Coming soon |
azure-monitor Alerts Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/alerts/alerts-overview.md
This table provides a brief description of each alert type. For more information
|[Log alerts](alerts-types.md#log-alerts)|Log alerts allow users to use a Log Analytics query to evaluate resource logs at a predefined frequency.| |[Activity log alerts](alerts-types.md#activity-log-alerts)|Activity log alerts are triggered when a new activity log event occurs that matches defined conditions. Resource Health alerts and Service Health alerts are activity log alerts that report on your service and resource health.| |[Smart detection alerts](alerts-types.md#smart-detection-alerts)|Smart detection on an Application Insights resource automatically warns you of potential performance problems and failure anomalies in your web application. You can migrate smart detection on your Application Insights resource to create alert rules for the different smart detection modules.|
-|[Prometheus alerts (preview)](alerts-types.md#prometheus-alerts-preview)|Prometheus alerts are used for alerting on the performance and health of Kubernetes clusters, including Azure Kubernetes Service (AKS). The alert rules are based on PromQL, which is an open-source query language.|
+|[Prometheus alerts](alerts-types.md#prometheus-alerts)|Prometheus alerts are used for alerting on the performance and health of Kubernetes clusters, including Azure Kubernetes Service (AKS). The alert rules are based on PromQL, which is an open-source query language.|
## Recommended alert rules If you don't have alert rules defined for the selected resource, you can [enable recommended out-of-the-box alert rules in the Azure portal](alerts-manage-alert-rules.md#enable-recommended-alert-rules-in-the-azure-portal).
azure-monitor Alerts Types https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/alerts/alerts-types.md
The types of alerts are:
- [Service Health alerts](#service-health-alerts) - [Resource Health alerts](#resource-health-alerts) - [Smart detection alerts](#smart-detection-alerts)-- [Prometheus alerts](#prometheus-alerts-preview) (preview)
+- [Prometheus alerts](#prometheus-alerts)
## Choose the right alert type
Although metric alerts tell you there might be a problem, smart detection starts
Smart detection works for web apps hosted in the cloud or on your own servers that generate application requests or dependency data.
-## Prometheus alerts (preview)
+## Prometheus alerts
-Prometheus alerts are based on metric values stored in [Azure Monitor managed services for Prometheus](../essentials/prometheus-metrics-overview.md). They fire when the result of a PromQL query resolves to true. Prometheus alerts are displayed and managed like other alert types when they fire, but they're configured with a Prometheus rule group. For more information, see [Rule groups in Azure Monitor managed service for Prometheus](../essentials/prometheus-rule-groups.md).
+Prometheus alerts are based on Prometheus metric values stored in [Azure Monitor managed services for Prometheus](../essentials/prometheus-metrics-overview.md). Prometheus alert rules are configured as part of [Prometheus rule groups](/azure/azure-monitor/essentials/prometheus-rule-groups). They fire when the result of a PromQL expression resolves to true. Fired Prometheus alerts are displayed and managed like other alert types.
## Next steps - Get an [overview of alerts](alerts-overview.md).
Prometheus alerts are based on metric values stored in [Azure Monitor managed se
- Learn more about [smart detection](proactive-failure-diagnostics.md). +
azure-monitor Opentelemetry Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/app/opentelemetry-configuration.md
description: This article provides configuration guidance for .NET, Java, Node.j
Last updated 06/23/2023 ms.devlang: csharp, javascript, typescript, python+
azure-monitor Opentelemetry Nodejs Exporter https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/app/opentelemetry-nodejs-exporter.md
description: This article provides guidance on how to enable the Azure Monitor O
Last updated 05/10/2023 ms.devlang: javascript+
azure-monitor Usage Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/app/usage-overview.md
In the Application Insights portal, filter and split your data on the property v
To do this step, [set up a telemetry initializer](./api-filtering-sampling.md#addmodify-properties-itelemetryinitializer):
-**ASP.NET apps**
- ```csharp // Telemetry initializer class public class MyTelemetryInitializer : ITelemetryInitializer
To do this step, [set up a telemetry initializer](./api-filtering-sampling.md#ad
} ```
-In the web app initializer, such as Global.asax.cs:
+# [NET 6.0+](#tab/aspnetcore)
+
+For [ASP.NET Core](asp-net-core.md#add-telemetryinitializers) applications, add a new telemetry initializer to the Dependency Injection service collection in the `Program.cs` class.
+
+```csharp
+using Microsoft.ApplicationInsights.Extensibility;
+
+builder.Services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
+```
+
+# [.NET Framework 4.8](#tab/aspnet-framework)
+
+In the web app initializer, such as `Global.asax.cs`:
```csharp
In the web app initializer, such as Global.asax.cs:
} ```
-**ASP.NET Core apps**
-
-> [!NOTE]
-> Adding an initializer by using `ApplicationInsights.config` or `TelemetryConfiguration.Active` isn't valid for ASP.NET Core applications.
-
-For [ASP.NET Core](asp-net-core.md#add-telemetryinitializers) applications, adding a new telemetry initializer is done by adding it to the Dependency Injection container, as shown here. This step is done in the `ConfigureServices` method of your `Startup.cs` class.
-
-```csharp
-using Microsoft.ApplicationInsights.Extensibility;
-
-public void ConfigureServices(IServiceCollection services)
-{
- services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
-}
-```
+ ## Next steps
azure-monitor Container Insights Logging V2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/containers/container-insights-logging-v2.md
Azure Monitor - Container insights now supports multiline logging. With this fea
Additionally, the feature also adds support for .NET and Go stack traces, which appear as single entries instead of being split into multiple entries in ContainerLogV2 table. ### Pre-requisites + Customers must enable *ContainerLogV2* for multi-line logging to work. Go here to [enable ContainerLogV2](./container-insights-logging-v2.md#enable-the-containerlogv2-schema) in Container Insights. ### How to enable - This is currently a preview feature
azure-monitor Container Insights Metric Alerts https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/containers/container-insights-metric-alerts.md
There are two types of metric rules used by Container insights based on either P
| Alert rule type | Description | |:|:|
-| [Prometheus rules](#prometheus-alert-rules) | Alert rules that use metrics stored in [Azure Monitor managed service for Prometheus (preview)](../essentials/prometheus-metrics-overview.md). There are two sets of Prometheus alert rules that you can choose to enable.<br><br>- *Community alerts* are handpicked alert rules from the Prometheus community. Use this set of alert rules if you don't have any other alert rules enabled.<br>- *Recommended alerts* are the equivalent of the custom metric alert rules. Use this set if you're migrating from custom metrics to Prometheus metrics and want to retain identical functionality.
+| [Prometheus rules](#prometheus-alert-rules) | Alert rules that use metrics stored in [Azure Monitor managed service for Prometheus](../essentials/prometheus-metrics-overview.md). There are two sets of Prometheus alert rules that you can choose to enable.<br><br>- *Community alerts* are handpicked alert rules from the Prometheus community. Use this set of alert rules if you don't have any other alert rules enabled.<br>- *Recommended alerts* are the equivalent of the custom metric alert rules. Use this set if you're migrating from custom metrics to Prometheus metrics and want to retain identical functionality.
| [Metric rules](#metric-alert-rules) | Alert rules that use [custom metrics collected for your Kubernetes cluster](container-insights-custom-metrics.md). Use these alert rules if you're not ready to move to Prometheus metrics yet or if you want to manage your alert rules in the Azure portal. Metric rules will be retired on March 14, 2026. | ## Prometheus alert rules
-[Prometheus alert rules](../alerts/alerts-types.md#prometheus-alerts-preview) use metric data from your Kubernetes cluster sent to [Azure Monitor managed service for Prometheus](../essentials/prometheus-metrics-overview.md).
+[Prometheus alert rules](../alerts/alerts-types.md#prometheus-alerts) use metric data from your Kubernetes cluster sent to [Azure Monitor managed service for Prometheus](../essentials/prometheus-metrics-overview.md).
### Prerequisites
azure-monitor Integrate Keda https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/essentials/integrate-keda.md
+ Last updated 05/31/2023
kubectl logs -n keda keda-operator-5d9f7d975-mgv7r
``` Ensure the identity has the `Monitoring Data Reader` role on the Azure Monitor workspace.--
azure-monitor Prometheus Metrics Enable https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/essentials/prometheus-metrics-enable.md
Deploy the template with the parameter file by using any valid method for deploy
## Enable Windows metrics collection
+> [!NOTE]
+> There is no CPU/Memory limit in windows-exporter-daemonset.yaml so it may over-provision the Windows nodes
+> For more details see [Resource reservation](https://kubernetes.io/docs/concepts/configuration/windows-resource-management/#resource-reservation)
+>
+> As you deploy workloads, set resource memory and CPU limits on containers. This also subtracts from NodeAllocatable and helps the cluster-wide scheduler in determining which pods to place on which nodes.
+> Scheduling pods without limits may over-provision the Windows nodes and in extreme cases can cause the nodes to become unhealthy.
++ As of version 6.4.0-main-02-22-2023-3ee44b9e of the Managed Prometheus addon container (prometheus_collector), Windows metric collection has been enabled for the AKS clusters. Onboarding to the Azure Monitor Metrics add-on enables the Windows DaemonSet pods to start running on your node pools. Both Windows Server 2019 and Windows Server 2022 are supported. Follow these steps to enable the pods to collect metrics from your Windows node pools. 1. Manually install windows-exporter on AKS nodes to access Windows metrics.
azure-monitor Prometheus Rule Groups https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/essentials/prometheus-rule-groups.md
The `rules` section contains the following properties for alerting rules.
| `rules.resolveConfigurations.timeToResolve` | False | string | Alert auto resolution timeout. Default = "PT5M" | | `rules.action[].actionGroupId` | false | string | One or more action group resource IDs. Each is activated when an alert is fired. |
+### Converting Prometheus rules file to a Prometheus rule group ARM template
+
+If you have a [Prometheus rules configuration file](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#configuring-rules) (in YAML format), you can now convert it to an Azure Prometheus rule group ARM template, using the [az-prom-rules-converter utility](https://github.com/Azure/prometheus-collector/tree/main/tools/az-prom-rules-converter#az-prom-rules-converter). The rules file can contain definition of one or more rule groups.
+
+In addition to the rules file, you can provide the utility with additional properties that are needed to create the Azure Prometheus rule groups, including: subscription, resource group, location, target Azure Monitor workspace, target cluster name, and action groups (used for alert rules). The utility creates a template file that can be deployed directly or within a deployment pipe providing some of these properties as parameters. Note that properties provided to the utility are used for all the rule groups in the template, e.g., all rule groups in the file will be created in the same subscription/resource group/location, using the same Azure Monitor workspace, etc. If an action group is provided as a parameter to the utility, the same action group will be used in all the alert rules in the template. If you want to change this default configuration (e.g., use different action groups in different rules) you can edit the resulting template according to your needs, before deploying it.
+
+> [!NOTE]
+> !The az-prom-convert-utility is provided as a courtesy tool. We recommend that you review the resulting template and verify it matches your intended configuration.
+ ### Creating Prometheus rule group using Azure CLI You can use Azure CLI to create and configure Prometheus rule groups, alert rules, and recording rules. The following code examples use [Azure Cloud Shell](../../cloud-shell/overview.md).
azure-monitor Rest Api Walkthrough https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/essentials/rest-api-walkthrough.md
Title: Azure monitoring REST API walkthrough
-description: How to authenticate requests and use the Azure Monitor REST API to retrieve available metric definitions and metric values.
+description: How to authenticate requests and use the Azure Monitor REST API to retrieve available metric definitions, metric values, and activity logs.
Previously updated : 01/30/2023 Last updated : 06/27/2023
Retrieve metric definitions, dimension values, and metric values using the Azure
Request submitted using the Azure Monitor API use the Azure Resource Manager authentication model. All requests are authenticated with Azure Active Directory. One approach to authenticating the client application is to create an Azure Active Directory service principal and retrieve an authentication token. You can create an Azure Active Directory service principal using the Azure portal, CLI, or PowerShell. For more information, see [Register an App to request authorization tokens and work with APIs](../logs/api/register-app-for-token.md)
-## Retrieve a token
+### Retrieve a token
Once you've created a service principal, retrieve an access token using a REST call. Submit the following request using the `appId` and `password` for your service principal or app: ```HTTP
After authenticating and retrieving a token, use the access token in your Azure
> For more information on working with the Azure REST API, see the [Azure REST API reference](/rest/api/azure/). >
+## Retrieve the resource ID
+
+Using the REST API requires the resource ID of the target Azure resource.
+Resource IDs follow the following pattern:
+
+`/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider>/<resource name>/`
+
+For example
+
+* **Azure IoT Hub**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Devices/IotHubs/\<iot-hub-name>
+* **Elastic SQL pool**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Sql/servers/\<pool-db>/elasticpools/\<sql-pool-name>
+* **Azure SQL Database (v12)**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Sql/servers/\<server-name>/databases/\<database-name>
+* **Azure Service Bus**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.ServiceBus/\<namespace>/\<servicebus-name>
+* **Azure Virtual Machine Scale Sets**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/\<vm-name>
+* **Azure Virtual Machines**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Compute/virtualMachines/\<vm-name>
+* **Azure Event Hubs**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.EventHub/namespaces/\<eventhub-namespace>
+
+Use the Azure portal, PowerShell or the Azure CLI to find the resource ID.
++
+### [Azure portal](#tab/portal)
+
+To find the resourceID in the portal, from the resource's overview page, select **JSON view**
++
+The Resource JSON page is displayed. The resource ID can be copied using the icon on the right of the ID
+++
+### [PowerShell](#tab/powershell)
+
+The resource ID can be retrieved by using Azure PowerShell cmdlets too. For example, to obtain the resource ID for an Azure logic app, execute the `Get-AzureLogicApp` cmdlet, as in the following example:
+
+```powershell
+Get-AzLogicApp -ResourceGroupName azmon-rest-api-walkthrough -Name contosotweets
+```
+
+The result should be similar to the following example:
+
+```output
+Id : /subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets
+Name : ContosoTweets
+Type : Microsoft.Logic/workflows
+Location : centralus
+ChangedTime : 8/21/2017 6:58:57 PM
+CreatedTime : 8/18/2017 7:54:21 PM
+AccessEndpoint : https://prod-08.centralus.logic.azure.com:443/workflows/f3a91b352fcc47e6bff989b85446c5db
+State : Enabled
+Definition : {$schema, contentVersion, parameters, triggers...}
+Parameters : {[$connections, Microsoft.Azure.Management.Logic.Models.WorkflowParameter]}
+SkuName :
+AppServicePlan :
+PlanType :
+PlanId :
+Version : 08586982649483762729
+```
+
+### [Azure CLI](#tab/cli)
+
+To retrieve the resource ID for an Azure Storage account by using the Azure CLI, execute the `az storage account show` command, as shown in the following example:
+
+```azurecli
+az storage account show -g azmon-rest-api-walkthrough -n azmonstorage001
+```
+
+The result should be similar to the following example:
+
+```json
+{
+ "accessTier": null,
+ "creationTime": "2023-08-18T19:58:41.840552+00:00",
+ "customDomain": null,
+ "enableHttpsTrafficOnly": false,
+ "encryption": null,
+ "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/azmonstorage001",
+ "identity": null,
+ "kind": "Storage",
+ "lastGeoFailoverTime": null,
+ "location": "centralus",
+ "name": "azmonstorage001",
+ "networkAcls": null,
+ "primaryEndpoints": {
+ "blob": "https://azmonstorage001.blob.core.windows.net/",
+ "file": "https://azmonstorage001.file.core.windows.net/",
+ "queue": "https://azmonstorage001.queue.core.windows.net/",
+ "table": "https://azmonstorage001.table.core.windows.net/"
+ },
+ "primaryLocation": "centralus",
+ "provisioningState": "Succeeded",
+ "resourceGroup": "azmon-rest-api-walkthrough",
+ "secondaryEndpoints": null,
+ "secondaryLocation": "eastus2",
+ "sku": {
+ "name": "Standard_GRS",
+ "tier": "Standard"
+ },
+ "statusOfPrimary": "available",
+ "statusOfSecondary": "available",
+ "tags": {},
+ "type": "Microsoft.Storage/storageAccounts"
+}
+```
+
+> [!NOTE]
+> Azure logic apps aren't yet available via the Azure CLI. For this reason, an Azure Storage account is shown in the preceding example.
+>
++ ## Retrieve metric definitions Use the [Azure Monitor Metric Definitions REST API](/rest/api/monitor/metricdefinitions) to access the list of metrics that are available for a service.
The following JSON shows an example response body.
} ```
-### Retrieve the resource ID
+## Querying metrics for multiple resources at a time.
-Using the REST API requires the resource ID of the target Azure resource.
-Resource IDs follow the following pattern:
-
-`/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider>/<resource name>/`
-
-For example
-
-* **Azure IoT Hub**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Devices/IotHubs/\<iot-hub-name>
-* **Elastic SQL pool**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Sql/servers/\<pool-db>/elasticpools/\<sql-pool-name>
-* **Azure SQL Database (v12)**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Sql/servers/\<server-name>/databases/\<database-name>
-* **Azure Service Bus**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.ServiceBus/\<namespace>/\<servicebus-name>
-* **Azure Virtual Machine Scale Sets**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/\<vm-name>
-* **Azure Virtual Machines**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.Compute/virtualMachines/\<vm-name>
-* **Azure Event Hubs**: /subscriptions/\<subscription-id>/resourceGroups/\<resource-group-name>/providers/Microsoft.EventHub/namespaces/\<eventhub-namespace>
+In addition to querying for metrics on an individual resource, some resource types also support querying for multiple resources in a single request. These APIs are what power the [Multi-Resource experience in Azure metrics explorer](./metrics-dynamic-scope.md). The set of resources types that support querying for multiple metrics can be seen on the [Metrics blade in Azure monitor](https://portal.azure.com/#view/Microsoft_Azure_Monitoring/AzureMonitoringBrowseBlade/~/metrics) via the resource type drop-down in the scope selector on the context blade. For more information, see the [Multi-Resource UX documentation](./metrics-dynamic-scope.md).
-Use the Azure portal, PowerShell or the Azure CLI to find the resource ID.
+There are some important differences between querying metrics for multiple and individual resources.
++ Metrics multi-resource APIs operate at the subscription level instead of the resource ID level. This restriction means users querying these APIs must have [Monitoring Reader](../../role-based-access-control/built-in-roles.md#monitoring-reader) permissions on the subscription itself.++ Metrics multi-resource APIs only support a single resourceType per query, which must be specified in the form of a metricnamespace query parameter.++ Metrics multi-resource APIs only support a single Azure region per query, which must be specified in the form of a region query parameter.
+### Querying metrics for multiple resources examples
-### [Azure portal](#tab/portal)
-
-To find the resourceID in the portal, from the resource's overview page, select **JSON view**
--
-The Resource JSON page is displayed. The resource ID can be copied using the icon on the right of the ID
---
-### [PowerShell](#tab/powershell)
-
-The resource ID can be retrieved by using Azure PowerShell cmdlets too. For example, to obtain the resource ID for an Azure logic app, execute the `Get-AzureLogicApp` cmdlet, as in the following example:
-
-```powershell
-Get-AzLogicApp -ResourceGroupName azmon-rest-api-walkthrough -Name contosotweets
+The following example shows an individual metricdefinitions request:
```-
-The result should be similar to the following example:
-
-```output
-Id : /subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Logic/workflows/ContosoTweets
-Name : ContosoTweets
-Type : Microsoft.Logic/workflows
-Location : centralus
-ChangedTime : 8/21/2017 6:58:57 PM
-CreatedTime : 8/18/2017 7:54:21 PM
-AccessEndpoint : https://prod-08.centralus.logic.azure.com:443/workflows/f3a91b352fcc47e6bff989b85446c5db
-State : Enabled
-Definition : {$schema, contentVersion, parameters, triggers...}
-Parameters : {[$connections, Microsoft.Azure.Management.Logic.Models.WorkflowParameter]}
-SkuName :
-AppServicePlan :
-PlanType :
-PlanId :
-Version : 08586982649483762729
+GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01
```
-### [Azure CLI](#tab/cli)
-
-To retrieve the resource ID for an Azure Storage account by using the Azure CLI, execute the `az storage account show` command, as shown in the following example:
+The following request shows the equivalent metricdefinitions request for multiple resources.
+The only changes are the subscription path instead of a resource ID path, and the addition of `region` and `metricNamespace` query parameters.
+```
+GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01&region=eastus&metricNamespace=microsoft.compute/virtualmachines
+```
-```azurecli
-az storage account show -g azmon-rest-api-walkthrough -n azmonstorage001
+The following is an example of an individual metrics request.
+```
+GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01
```
-The result should be similar to the following example:
+Below is an equivalent metrics request for multiple resources:
+```
+GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01&region=eastus&metricNamespace=microsoft.compute/virtualmachines&$filter=Microsoft.ResourceId eq '*'
+```
+Note that a `Microsoft.ResourceId eq '*'` filter is added for the multi resource metrics requests as well. The filter tells the API to return a separate time series per virtual machine resource in the subscription and region. Without the filter the API would return a single time series aggregating the average CPU for all VMs. The times series for each resource is differentiated by the `Microsoft.ResourceId` metadata value on each time series entry, as can be seen in the following sample return value.
-```json
+```JSON
{
- "accessTier": null,
- "creationTime": "2023-08-18T19:58:41.840552+00:00",
- "customDomain": null,
- "enableHttpsTrafficOnly": false,
- "encryption": null,
- "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/azmonstorage001",
- "identity": null,
- "kind": "Storage",
- "lastGeoFailoverTime": null,
- "location": "centralus",
- "name": "azmonstorage001",
- "networkAcls": null,
- "primaryEndpoints": {
- "blob": "https://azmonstorage001.blob.core.windows.net/",
- "file": "https://azmonstorage001.file.core.windows.net/",
- "queue": "https://azmonstorage001.queue.core.windows.net/",
- "table": "https://azmonstorage001.table.core.windows.net/"
- },
- "primaryLocation": "centralus",
- "provisioningState": "Succeeded",
- "resourceGroup": "azmon-rest-api-walkthrough",
- "secondaryEndpoints": null,
- "secondaryLocation": "eastus2",
- "sku": {
- "name": "Standard_GRS",
- "tier": "Standard"
- },
- "statusOfPrimary": "available",
- "statusOfSecondary": "available",
- "tags": {},
- "type": "Microsoft.Storage/storageAccounts"
+ "timespan": "2023-06-25T22:35:00Z/2023-06-26T22:40:00Z",
+ "interval": "PT6H",
+ "value": [
+ {
+ "id": "subscriptions/12345678-abcd-98765432-abcdef012345/providers/Microsoft.Insights/metrics/Percentage CPU",
+ "type": "Microsoft.Insights/metrics",
+ "name": {
+ "value": "Percentage CPU",
+ "localizedValue": "Percentage CPU"
+ },
+ "displayDescription": "The percentage of allocated compute units that are currently in use by the Virtual Machine(s)",
+ "unit": "Percent",
+ "timeseries": [
+ {
+ "metadatavalues": [
+ {
+ "name": {
+ "value": "Microsoft.ResourceId",
+ "localizedValue": "Microsoft.ResourceId"
+ },
+ "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1"
+ }
+ ],
+ "data": [
+ {
+ "timeStamp": "2023-06-25T22:35:00Z",
+ "average": 3.2618888888888886
+ },
+ {
+ "timeStamp": "2023-06-26T04:35:00Z",
+ "average": 4.696944444444445
+ },
+ {
+ "timeStamp": "2023-06-26T10:35:00Z",
+ "average": 6.19701388888889
+ },
+ {
+ "timeStamp": "2023-06-26T16:35:00Z",
+ "average": 2.630347222222222
+ },
+ {
+ "timeStamp": "2023-06-26T22:35:00Z",
+ "average": 21.288999999999998
+ }
+ ]
+ },
+ {
+ "metadatavalues": [
+ {
+ "name": {
+ "value": "Microsoft.ResourceId",
+ "localizedValue": "Microsoft.ResourceId"
+ },
+ "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM2"
+ }
+ ],
+ "data": [
+ {
+ "timeStamp": "2023-06-25T22:35:00Z",
+ "average": 7.567069444444444
+ },
+ {
+ "timeStamp": "2023-06-26T04:35:00Z",
+ "average": 5.111835883171071
+ },
+ {
+ "timeStamp": "2023-06-26T10:35:00Z",
+ "average": 10.078277777777778
+ },
+ {
+ "timeStamp": "2023-06-26T16:35:00Z",
+ "average": 8.399097222222222
+ },
+ {
+ "timeStamp": "2023-06-26T22:35:00Z",
+ "average": 2.647
+ }
+ ]
+ },
+ {
+ "metadatavalues": [
+ {
+ "name": {
+ "value": "Microsoft.ResourceId",
+ "localizedValue": "Microsoft.ResourceId"
+ },
+ "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/Common-TESTING/providers/Microsoft.Compute/virtualMachines/CommonVM1"
+ }
+ ],
+ "data": [
+ {
+ "timeStamp": "2023-06-25T22:35:00Z",
+ "average": 6.892319444444444
+ },
+ {
+ "timeStamp": "2023-06-26T04:35:00Z",
+ "average": 3.5054305555555554
+ },
+ {
+ "timeStamp": "2023-06-26T10:35:00Z",
+ "average": 8.398817802503476
+ },
+ {
+ "timeStamp": "2023-06-26T16:35:00Z",
+ "average": 6.841666666666667
+ },
+ {
+ "timeStamp": "2023-06-26T22:35:00Z",
+ "average": 3.3850000000000002
+ }
+ ]
+ }
+ ],
+ "errorCode": "Success"
+ }
+ ],
+ "namespace": "microsoft.compute/virtualmachines",
+ "resourceregion": "eastus"
} ```
-> [!NOTE]
-> Azure logic apps aren't yet available via the Azure CLI. For this reason, an Azure Storage account is shown in the preceding example.
->
+### Troubleshooting querying metrics for multiple resources
+++ No data returned can be due to the wrong region being specified:
+ The multi resource APIs do not verify that any valid resources exist in the specified region and subscription combination. The only indicator that the region may be wrong is getting an empty time series data response. For example: `"timeseries": [],`
++ 401 authorization errors:
+ The individual resource metrics APIs requires a user have the [Monitoring Reader](../../role-based-access-control/built-in-roles.md#monitoring-reader) permission on the resource being queried. Because the multi resource metrics APIs are subscription level APIs, users must have the [Monitoring Reader](../../role-based-access-control/built-in-roles.md#monitoring-reader) permission for the queried subscription to use the multi resource metrics APIs. Even if users have Monitoring Reader on all the resources in a subscription, the request fails if the user doesn't have Monitoring Reader on the subscription itself.
+ ## Retrieve activity log data
You may receive one of the following HTTP error statuses:
* 429 Too Many Requests * 503 Service Unavailable * 504 Gateway Timeout
+* 529 Service Throttling
-If one of these statuses is returned, resend the request.
+If one of these statuses is returned, wait for at least 30 seconds and resend the request.
## Next steps * Review the [overview of monitoring](../overview.md). * View the [supported metrics with Azure Monitor](./metrics-supported.md). * Review the [Microsoft Azure Monitor REST API reference](/rest/api/monitor/).
+* Review the new [Azure Monitor Query client libraries](https://devblogs.microsoft.com/azure-sdk/announcing-the-new-azure-monitor-query-client-libraries/)
* Review the [Azure Management Library](/previous-versions/azure/reference/mt417623(v=azure.100)).
azure-monitor Basic Logs Configure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/basic-logs-configure.md
Configure a table for Basic logs if:
- You don't require more than eight days of data retention for the table. - You only require basic queries of the data using a [limited version of the query language](basic-logs-query.md#limitations). - The cost savings for data ingestion exceed the expected cost for any expected queries.-- The table supports Basic logs.
+- The table [supports Basic logs](#supported-tables).
- These tables currently support Basic logs:
-
- | Service | Table |
- |:|:|
- | Active Directory | [AADDomainServicesDNSAuditsGeneral](/azure/azure-monitor/reference/tables/AADDomainServicesDNSAuditsGeneral)<br> [AADDomainServicesDNSAuditsDynamicUpdates](/azure/azure-monitor/reference/tables/AADDomainServicesDNSAuditsDynamicUpdates) |
- | API Management | [ApiManagementGatewayLogs](/azure/azure-monitor/reference/tables/ApiManagementGatewayLogs)<br>[ApiManagementWebSocketConnectionLogs](/azure/azure-monitor/reference/tables/ApiManagementWebSocketConnectionLogs) |
- | Application Insights | [AppTraces](/azure/azure-monitor/reference/tables/apptraces) |
- | Chaos Experiments | [ChaosStudioExperimentEventLogs](/azure/azure-monitor/reference/tables/ChaosStudioExperimentEventLogs) |
- | Cloud HSM | [CHSMManagementAuditLogs](/azure/azure-monitor/reference/tables/CHSMManagementAuditLogs) |
- | Container Apps | [ContainerAppConsoleLogs](/azure/azure-monitor/reference/tables/containerappconsoleLogs) |
- | Container Insights | [ContainerLogV2](/azure/azure-monitor/reference/tables/containerlogv2) |
- | Container Apps Environments | [AppEnvSpringAppConsoleLogs](/azure/azure-monitor/reference/tables/AppEnvSpringAppConsoleLogs) |
- | Communication Services | [ACSCallAutomationIncomingOperations](/azure/azure-monitor/reference/tables/ACSCallAutomationIncomingOperations)<br>[ACSCallAutomationMediaSummary](/azure/azure-monitor/reference/tables/ACSCallAutomationMediaSummary)<br>[ACSCallRecordingIncomingOperations](/azure/azure-monitor/reference/tables/ACSCallRecordingIncomingOperations)<br>[ACSCallRecordingSummary](/azure/azure-monitor/reference/tables/ACSCallRecordingSummary)<br>[ACSRoomsIncomingOperations](/azure/azure-monitor/reference/tables/acsroomsincomingoperations) |
- | Confidential Ledgers | [CCFApplicationLogs](/azure/azure-monitor/reference/tables/CCFApplicationLogs) |
- | Custom log tables | All custom tables created with or migrated to the [data collection rule (DCR)-based logs ingestion API.](logs-ingestion-api-overview.md) |
- | Data Manager for Energy | [OEPDataplaneLogs](/azure/azure-monitor/reference/tables/OEPDataplaneLogs) |
- | Dedicated SQL Pool | [SynapseSqlPoolSqlRequests](/azure/azure-monitor/reference/tables/synapsesqlpoolsqlrequests)<br>[SynapseSqlPoolRequestSteps](/azure/azure-monitor/reference/tables/synapsesqlpoolrequeststeps)<br>[SynapseSqlPoolExecRequests](/azure/azure-monitor/reference/tables/synapsesqlpoolexecrequests)<br>[SynapseSqlPoolDmsWorkers](/azure/azure-monitor/reference/tables/synapsesqlpooldmsworkers)<br>[SynapseSqlPoolWaits](/azure/azure-monitor/reference/tables/synapsesqlpoolwaits) |
- | Dev Center | [DevCenterDiagnosticLogs](/azure/azure-monitor/reference/tables/DevCenterDiagnosticLogs) |
- | Data Transfer | [DataTransferOperations](/azure/azure-monitor/reference/tables/DataTransferOperations) |
- | Event Hubs | [AZMSArchiveLogs](/azure/azure-monitor/reference/tables/AZMSArchiveLogs)<br>[AZMSAutoscaleLogs](/azure/azure-monitor/reference/tables/AZMSAutoscaleLogs)<br>[AZMSCustomerManagedKeyUserLogs](/azure/azure-monitor/reference/tables/AZMSCustomerManagedKeyUserLogs)<br>[AZMSKafkaCoordinatorLogs](/azure/azure-monitor/reference/tables/AZMSKafkaCoordinatorLogs)<br>[AZMSKafkaUserErrorLogs](/azure/azure-monitor/reference/tables/AZMSKafkaUserErrorLogs) |
- | Firewalls | [AZFWFlowTrace](/azure/azure-monitor/reference/tables/AZFWFlowTrace) |
- | Health Care APIs | [AHDSMedTechDiagnosticLogs](/azure/azure-monitor/reference/tables/AHDSMedTechDiagnosticLogs)<br>[AHDSDicomDiagnosticLogs](/azure/azure-monitor/reference/tables/AHDSDicomDiagnosticLogs)<br>[AHDSDicomAuditLogs](/azure/azure-monitor/reference/tables/AHDSDicomAuditLogs) |
- | Key Vault | [AZKVAuditLogs](/azure/azure-monitor/reference/tables/AZKVAuditLogs)<br>[AZKVPolicyEvaluationDetailsLogs](/azure/azure-monitor/reference/tables/AZKVPolicyEvaluationDetailsLogs) |
- | Kubernetes services | [AKSAudit](/azure/azure-monitor/reference/tables/AKSAudit)<br>[AKSAuditAdmin](/azure/azure-monitor/reference/tables/AKSAuditAdmin)<br>[AKSControlPlane](/azure/azure-monitor/reference/tables/AKSControlPlane) |
- | Media Services | [AMSLiveEventOperations](/azure/azure-monitor/reference/tables/AMSLiveEventOperations)<br>[AMSKeyDeliveryRequests](/azure/azure-monitor/reference/tables/AMSKeyDeliveryRequests)<br>[AMSMediaAccountHealth](/azure/azure-monitor/reference/tables/AMSMediaAccountHealth)<br>[AMSStreamingEndpointRequests](/azure/azure-monitor/reference/tables/AMSStreamingEndpointRequests) |
- | Redis Cache Enterprise | [REDConnectionEvents](/azure/azure-monitor/reference/tables/REDConnectionEvents) |
- | Relays | [AZMSHybridConnectionsEvents](/azure/azure-monitor/reference/tables/AZMSHybridConnectionsEvents) |
- | Service Bus | [AZMSApplicationMetricLogs](/azure/azure-monitor/reference/tables/AZMSApplicationMetricLogs)<br>[AZMSOperationalLogs](/azure/azure-monitor/reference/tables/AZMSOperationalLogs)<br>[AZMSRunTimeAuditLogs](/azure/azure-monitor/reference/tables/AZMSRunTimeAuditLogs)<br>[AZMSVNetConnectionEvents](/azure/azure-monitor/reference/tables/AZMSVNetConnectionEvents) |
- | Sphere | [ASCAuditLogs](/azure/azure-monitor/reference/tables/ASCAuditLogs)<br>[ASCDeviceEvents](/azure/azure-monitor/reference/tables/ASCDeviceEvents) |
- | Storage | [StorageBlobLogs](/azure/azure-monitor/reference/tables/StorageBlobLogs)<br>[StorageFileLogs](/azure/azure-monitor/reference/tables/StorageFileLogs)<br>[StorageQueueLogs](/azure/azure-monitor/reference/tables/StorageQueueLogs)<br>[StorageTableLogs](/azure/azure-monitor/reference/tables/StorageTableLogs) |
- | Synapse | [SynapseSqlPoolExecRequests](/azure/azure-monitor/reference/tables/SynapseSqlPoolExecRequests)<br>[SynapseSqlPoolRequestSteps](/azure/azure-monitor/reference/tables/SynapseSqlPoolRequestSteps)<br>[SynapseSqlPoolDmsWorkers](/azure/azure-monitor/reference/tables/SynapseSqlPoolDmsWorkers)<br>[SynapseSqlPoolWaits](/azure/azure-monitor/reference/tables/SynapseSqlPoolWaits) |
- | Storage Mover | [StorageMoverJobRunLogs](/azure/azure-monitor/reference/tables/StorageMoverJobRunLogs)<br>[StorageMoverCopyLogsFailed](/azure/azure-monitor/reference/tables/StorageMoverCopyLogsFailed)<br>[StorageMoverCopyLogsTransferred](/azure/azure-monitor/reference/tables/StorageMoverCopyLogsTransferred)<br> |
- | Virtual Network Manager | [AVNMNetworkGroupMembershipChange](/azure/azure-monitor/reference/tables/AVNMNetworkGroupMembershipChange) |
-
-> [!NOTE]
-> Tables created with the [Data Collector API](data-collector-api.md) don't support Basic logs.
- ## Set a table's log data plan When you change a table's plan from Analytics to Basic, Log Analytics immediately archives any data that's older than eight days and up to original data retention of the table. In other words, the total retention period of the table remains unchanged, unless you explicitly [modify the archive period](../logs/data-retention-archive.md).
Update-AzOperationalInsightsTable -ResourceGroupName RG-NAME -WorkspaceName WOR
+## Supported tables
+
+These tables currently support Basic logs:
+
+| Service | Table |
+|:|:|
+| Active Directory | [AADDomainServicesDNSAuditsGeneral](/azure/azure-monitor/reference/tables/AADDomainServicesDNSAuditsGeneral)<br> [AADDomainServicesDNSAuditsDynamicUpdates](/azure/azure-monitor/reference/tables/AADDomainServicesDNSAuditsDynamicUpdates) |
+| API Management | [ApiManagementGatewayLogs](/azure/azure-monitor/reference/tables/ApiManagementGatewayLogs)<br>[ApiManagementWebSocketConnectionLogs](/azure/azure-monitor/reference/tables/ApiManagementWebSocketConnectionLogs) |
+| Application Insights | [AppTraces](/azure/azure-monitor/reference/tables/apptraces) |
+| Chaos Experiments | [ChaosStudioExperimentEventLogs](/azure/azure-monitor/reference/tables/ChaosStudioExperimentEventLogs) |
+| Cloud HSM | [CHSMManagementAuditLogs](/azure/azure-monitor/reference/tables/CHSMManagementAuditLogs) |
+| Container Apps | [ContainerAppConsoleLogs](/azure/azure-monitor/reference/tables/containerappconsoleLogs) |
+| Container Insights | [ContainerLogV2](/azure/azure-monitor/reference/tables/containerlogv2) |
+| Container Apps Environments | [AppEnvSpringAppConsoleLogs](/azure/azure-monitor/reference/tables/AppEnvSpringAppConsoleLogs) |
+| Communication Services | [ACSCallAutomationIncomingOperations](/azure/azure-monitor/reference/tables/ACSCallAutomationIncomingOperations)<br>[ACSCallAutomationMediaSummary](/azure/azure-monitor/reference/tables/ACSCallAutomationMediaSummary)<br>[ACSCallRecordingIncomingOperations](/azure/azure-monitor/reference/tables/ACSCallRecordingIncomingOperations)<br>[ACSCallRecordingSummary](/azure/azure-monitor/reference/tables/ACSCallRecordingSummary)<br>[ACSRoomsIncomingOperations](/azure/azure-monitor/reference/tables/acsroomsincomingoperations) |
+| Confidential Ledgers | [CCFApplicationLogs](/azure/azure-monitor/reference/tables/CCFApplicationLogs) |
+| Custom log tables | All custom tables created with or migrated to the [data collection rule (DCR)-based logs ingestion API.](logs-ingestion-api-overview.md) |
+| Data Manager for Energy | [OEPDataplaneLogs](/azure/azure-monitor/reference/tables/OEPDataplaneLogs) |
+| Dedicated SQL Pool | [SynapseSqlPoolSqlRequests](/azure/azure-monitor/reference/tables/synapsesqlpoolsqlrequests)<br>[SynapseSqlPoolRequestSteps](/azure/azure-monitor/reference/tables/synapsesqlpoolrequeststeps)<br>[SynapseSqlPoolExecRequests](/azure/azure-monitor/reference/tables/synapsesqlpoolexecrequests)<br>[SynapseSqlPoolDmsWorkers](/azure/azure-monitor/reference/tables/synapsesqlpooldmsworkers)<br>[SynapseSqlPoolWaits](/azure/azure-monitor/reference/tables/synapsesqlpoolwaits) |
+| Dev Center | [DevCenterDiagnosticLogs](/azure/azure-monitor/reference/tables/DevCenterDiagnosticLogs) |
+| Data Transfer | [DataTransferOperations](/azure/azure-monitor/reference/tables/DataTransferOperations) |
+| Event Hubs | [AZMSArchiveLogs](/azure/azure-monitor/reference/tables/AZMSArchiveLogs)<br>[AZMSAutoscaleLogs](/azure/azure-monitor/reference/tables/AZMSAutoscaleLogs)<br>[AZMSCustomerManagedKeyUserLogs](/azure/azure-monitor/reference/tables/AZMSCustomerManagedKeyUserLogs)<br>[AZMSKafkaCoordinatorLogs](/azure/azure-monitor/reference/tables/AZMSKafkaCoordinatorLogs)<br>[AZMSKafkaUserErrorLogs](/azure/azure-monitor/reference/tables/AZMSKafkaUserErrorLogs) |
+| Firewalls | [AZFWFlowTrace](/azure/azure-monitor/reference/tables/AZFWFlowTrace) |
+| Health Care APIs | [AHDSMedTechDiagnosticLogs](/azure/azure-monitor/reference/tables/AHDSMedTechDiagnosticLogs)<br>[AHDSDicomDiagnosticLogs](/azure/azure-monitor/reference/tables/AHDSDicomDiagnosticLogs)<br>[AHDSDicomAuditLogs](/azure/azure-monitor/reference/tables/AHDSDicomAuditLogs) |
+| Key Vault | [AZKVAuditLogs](/azure/azure-monitor/reference/tables/AZKVAuditLogs)<br>[AZKVPolicyEvaluationDetailsLogs](/azure/azure-monitor/reference/tables/AZKVPolicyEvaluationDetailsLogs) |
+| Kubernetes services | [AKSAudit](/azure/azure-monitor/reference/tables/AKSAudit)<br>[AKSAuditAdmin](/azure/azure-monitor/reference/tables/AKSAuditAdmin)<br>[AKSControlPlane](/azure/azure-monitor/reference/tables/AKSControlPlane) |
+| Media Services | [AMSLiveEventOperations](/azure/azure-monitor/reference/tables/AMSLiveEventOperations)<br>[AMSKeyDeliveryRequests](/azure/azure-monitor/reference/tables/AMSKeyDeliveryRequests)<br>[AMSMediaAccountHealth](/azure/azure-monitor/reference/tables/AMSMediaAccountHealth)<br>[AMSStreamingEndpointRequests](/azure/azure-monitor/reference/tables/AMSStreamingEndpointRequests) |
+| Redis Cache Enterprise | [REDConnectionEvents](/azure/azure-monitor/reference/tables/REDConnectionEvents) |
+| Relays | [AZMSHybridConnectionsEvents](/azure/azure-monitor/reference/tables/AZMSHybridConnectionsEvents) |
+| Service Bus | [AZMSApplicationMetricLogs](/azure/azure-monitor/reference/tables/AZMSApplicationMetricLogs)<br>[AZMSOperationalLogs](/azure/azure-monitor/reference/tables/AZMSOperationalLogs)<br>[AZMSRunTimeAuditLogs](/azure/azure-monitor/reference/tables/AZMSRunTimeAuditLogs)<br>[AZMSVNetConnectionEvents](/azure/azure-monitor/reference/tables/AZMSVNetConnectionEvents) |
+| Sphere | [ASCAuditLogs](/azure/azure-monitor/reference/tables/ASCAuditLogs)<br>[ASCDeviceEvents](/azure/azure-monitor/reference/tables/ASCDeviceEvents) |
+| Storage | [StorageBlobLogs](/azure/azure-monitor/reference/tables/StorageBlobLogs)<br>[StorageFileLogs](/azure/azure-monitor/reference/tables/StorageFileLogs)<br>[StorageQueueLogs](/azure/azure-monitor/reference/tables/StorageQueueLogs)<br>[StorageTableLogs](/azure/azure-monitor/reference/tables/StorageTableLogs) |
+| Synapse | [SynapseSqlPoolExecRequests](/azure/azure-monitor/reference/tables/SynapseSqlPoolExecRequests)<br>[SynapseSqlPoolRequestSteps](/azure/azure-monitor/reference/tables/SynapseSqlPoolRequestSteps)<br>[SynapseSqlPoolDmsWorkers](/azure/azure-monitor/reference/tables/SynapseSqlPoolDmsWorkers)<br>[SynapseSqlPoolWaits](/azure/azure-monitor/reference/tables/SynapseSqlPoolWaits) |
+| Storage Mover | [StorageMoverJobRunLogs](/azure/azure-monitor/reference/tables/StorageMoverJobRunLogs)<br>[StorageMoverCopyLogsFailed](/azure/azure-monitor/reference/tables/StorageMoverCopyLogsFailed)<br>[StorageMoverCopyLogsTransferred](/azure/azure-monitor/reference/tables/StorageMoverCopyLogsTransferred)<br> |
+| Virtual Network Manager | [AVNMNetworkGroupMembershipChange](/azure/azure-monitor/reference/tables/AVNMNetworkGroupMembershipChange) |
+
+> [!NOTE]
+> Tables created with the [Data Collector API](data-collector-api.md) don't support Basic logs.
+ ## Next steps - [View table properties](../logs/manage-logs-tables.md#view-table-properties)
azure-monitor Data Retention Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/data-retention-archive.md
Title: Configure data retention and archive in Azure Monitor Logs
description: Configure archive settings for a table in a Log Analytics workspace in Azure Monitor. Previously updated : 10/01/2022 Last updated : 6/28/2023 # Customer intent: As an Azure account administrator, I want to set data retention and archive policies to save retention costs.
The Log Analytics [Purge API](/rest/api/loganalytics/workspacepurge/purge) doesn
## Tables with unique retention policies
-By default, two data types, `Usage` and `AzureActivity`, keep data for at least 90 days at no charge. When you increase the workspace retention to more than 90 days, you also increase the retention of these data types. You'll be charged for retaining this data beyond the 90-day period. These tables are also free from data ingestion charges.
+By default, two data types, `Usage` and `AzureActivity`, keep data for at least 90 days at no charge. When you increase the workspace retention to more than 90 days, you also increase the retention of these data types. These tables are also free from data ingestion charges.
Tables related to Application Insights resources also keep data for 90 days at no charge. You can adjust the retention policy of each of these tables individually:
azure-monitor Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Monitor description: Lists Azure Policy Regulatory Compliance controls available for Azure Monitor. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-netapp-files Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-netapp-files/whats-new.md
na Previously updated : 06/15/2023 Last updated : 06/26/2023 + # What's new in Azure NetApp Files Azure NetApp Files is updated regularly. This article provides a summary about the latest new features and enhancements. ## June 2023
+* [Cloud Backup for Virtual Machines on Azure NetApp Files datastores for Azure VMware Solution](../azure-vmware/install-cloud-backup-virtual-machines.md) (Preview)
+
+ You can now create VM consistent snapshot backups of VMs on Azure NetApp Files datastores using [Cloud Backup for Virtual Machines](../azure-vmware/backup-azure-netapp-files-datastores-vms.md). The associated virtual appliance installs in the Azure VMware Solution cluster and provides policy based automated and consistent backup of VMs integrated with Azure NetApp Files snapshot technology for fast backups and restores of VMs, groups of VMs (organized in resource groups) or complete datastores.
+ * [Azure NetApp Files double encryption at rest](double-encryption-at-rest.md) (Preview) We are excited to announce the addition of double encryption at rest for Azure NetApp Files volumes. This new feature provides an extra layer of protection for your critical data, ensuring maximum confidentiality and mitigating potential liabilities. Double encryption at rest is ideal for industries such as finance, military, healthcare, and government, where breaches of confidentiality can have catastrophic consequences. By combining hardware-based encryption with encrypted SSD drives and software-based encryption at the volume level, your data remains secure throughout its lifecycle. You can select **double** as the encryption type during capacity pool creation to easily enable this advanced security layer.
-* Availability zone volume placement enhancement - [Populate existing volumes](manage-availability-zone-volume-placement.md#populate-an-existing-volume-with-availability-zone-information) (preview)
+* Availability zone volume placement enhancement - [Populate existing volumes](manage-availability-zone-volume-placement.md#populate-an-existing-volume-with-availability-zone-information) (Preview)
The Azure NetApp Files [availability zone volume placement](manage-availability-zone-volume-placement.md) feature lets you deploy *new volumes* in the availability zone of your choice, in alignment with Azure compute and other services in the same zone. With this "Populate existing volume" enhancement, you can now obtain and, if desired, populate *previously deployed, existing volumes* with the logical availability zone information. This capability automatically maps the physical zone the volumes was deployed in and maps it to the logical zone for your subscription. This feature doesn't move any volumes between zones.
azure-resource-manager Deploy What If https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/deploy-what-if.md
Title: Bicep deployment what-if description: Determine what changes will happen to your resources before deploying a Bicep file.- Previously updated : 02/15/2023- Last updated : 06/28/2023 # Bicep deployment what-if operation
Before deploying a Bicep file, you can preview the changes that will happen. Azu
You can use the what-if operation with Azure PowerShell, Azure CLI, or REST API operations. What-if is supported for resource group, subscription, management group, and tenant level deployments.
+During What-If operations, the evaluation and expansion of `templateLink` are not supported. As a result, any resources deployed using template links within nested deployments, including template spec references, will not be visible in the What-If operation results.
+ ### Training resources If you would rather learn about the what-if operation through step-by-step guidance, see [Preview Azure deployment changes by using what-if](/training/modules/arm-template-whatif/).
azure-resource-manager Linter Rule Simplify Json Null https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/linter-rule-simplify-json-null.md
Title: Linter rule - simplify JSON null description: Linter rule - simplify JSON null + Last updated 03/20/2023
azure-resource-manager Operator Null Forgiving https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/operator-null-forgiving.md
Title: Bicep null-forgiving operator description: Describes Bicep null-forgiving operator. + Last updated 05/04/2023
azure-resource-manager Operator Safe Dereference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/operator-safe-dereference.md
Title: Bicep safe-dereference operator description: Describes Bicep safe-dereference operator. + Last updated 05/09/2023
resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in rang
- To run the examples, use Azure CLI or Azure PowerShell to [deploy a Bicep file](./quickstart-create-bicep-use-visual-studio-code.md#deploy-the-bicep-file). - To create a Bicep file, see [Quickstart: Create Bicep files with Visual Studio Code](./quickstart-create-bicep-use-visual-studio-code.md).-- For information about how to resolve Bicep type errors, see [Any function for Bicep](./bicep-functions-any.md).
+- For information about how to resolve Bicep type errors, see [Any function for Bicep](./bicep-functions-any.md).
azure-resource-manager Deploy Bicep Definition https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/managed-applications/deploy-bicep-definition.md
Title: Use Bicep to deploy an Azure Managed Application definition description: Describes how to use Bicep to deploy an Azure Managed Application definition from your service catalog. + Last updated 05/12/2023
azure-resource-manager Publish Bicep Definition https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/managed-applications/publish-bicep-definition.md
Title: Use Bicep to create and publish an Azure Managed Application definition description: Describes how to use Bicep to create and publish an Azure Managed Application definition in your service catalog. + Last updated 05/12/2023
azure-resource-manager Manage Resources Rest https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/management/manage-resources-rest.md
Title: Manage resources - REST description: Use REST operations with Azure Resource Manager to manage your resources. Shows how to read, deploy, and delete resources. + Last updated 04/26/2023
azure-resource-manager Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/management/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Resource Manager description: Lists Azure Policy Regulatory Compliance controls available for Azure Resource Manager. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-signalr Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-signalr/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure SignalR description: Lists Azure Policy Regulatory Compliance controls available for Azure SignalR. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
azure-vmware Backup Azure Netapp Files Datastores Vms https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/backup-azure-netapp-files-datastores-vms.md
+
+ Title: Back up Azure NetApp Files datastores and VMs using Cloud Backup (preview)
+description: Learn how to back up datastores and Virtual Machines to the cloud.
++ Last updated : 06/20/2023++
+# Back up Azure NetApp Files datastores and VMs using Cloud Backup for Virtual Machines (preview)
+
+From the VMware vSphere client, you can back up datastores and Virtual Machines (VMs) to the cloud. This article explains how to configure your subscription, create a backup policy, and create and back up a resource group.
+
+## Configure subscriptions
+
+Before you back up your Azure NetApp Files datastores, you must add your Azure and Azure NetApp Files cloud subscriptions.
+
+### Prerequisites
+
+* Cloud Backup for Virtual Machines requires outbound internet access from your Azure VMware Solution SDDC. For more information, see [Internet connectivity design considerations](../azure-vmware/concepts-design-public-internet-access.md).
+
+* You must have sufficient permissions to [Create an Azure AD app and service principal](../active-directory/develop/howto-create-service-principal-portal.md) within your Azure AD tenant and assign to the application a role in your Azure subscription. You can use the built-in role of "contributor" or you can create a custom role with only the required permissions:
+
+ ```json
+ "actions": [
+ "Microsoft.NetApp/*",
+ "Microsoft.Resources/resources/read",
+ "Microsoft.Resources/subscriptions/resourceGroups/read",
+ "Microsoft.Resources/subscriptions/resourceGroups/resources/read",
+ "Microsoft.Resources/subscriptions/resourceGroups/write",
+ "Microsoft.Network/virtualNetworks/read",
+ "Microsoft.Insights/Metrics/Read"
+ ],
+ ```
+ For more information on creating custom roles, see [Azure custom roles](../role-based-access-control/custom-roles.md).
+
+### Add an Azure cloud subscription
+
+1. Sign in to the VMware vSphere client.
+2. From the left navigation, select **Cloud Backup for Virtual Machines**.
+3. Select the **Settings** page and then select the **Cloud Subscription** tab.
+4. Select **Add**. Provide the **Subscription ID**, **Tenant ID**, **Client IID**, and **Client secret key** from the app registration you previously created.
+
+### Add an Azure NetApp Files cloud subscription account
+
+1. From the left navigation, select **Cloud Backup for Virtual Machines**.
+2. Select **Storage Systems**.
+3. Select **Add** to add the Azure NetApp Files cloud subscription account details.
+4. Provide the required values and then select **Add** to save your settings.
+
+## Create a backup policy
+
+You must create backup policies before you can use Cloud Backup for Virtual Machines to back up Azure NetApp Files datastores and VMs.
+
+1. In the left navigation of the vCenter web client page, select **Cloud Backup for Virtual Machines** > **Policies**.
+2. On the **Policies** page, select **Create** to initiate the wizard.
+3. On the **New Backup Policy** page, select the vCenter Server that will use the policy, then enter the policy name and a description.
+* **Only alphanumeric characters and underscores (_) are supported in VM, datastore, cluster, policy, backup, or resource group names.** Other special characters are not supported.
+4. Specify the retention settings.
+ The maximum retention value is 255 backups. If the **"Backups to keep"** option is selected during the backup operation, Cloud Backup for Virtual Machines retains backups within the specified retention count and delete the backups that exceed the retention count.
+5. Specify the frequency settings.
+ The policy specifies the backup frequency only. The specific protection schedule for backing up is defined in the resource group. Therefore, two or more resource groups can share the same policy and backup frequency but have different backup schedules.
+6. **Optional:** In the **Advanced** fields, select the fields that are needed. The Advanced field details are listed in the following table.
+
+ | Field | Action |
+ | - | - |
+ | VM consistency | Check this box to pause the VMs and create a VMware snapshot each time the backup job runs. <br> When you check the VM consistency box, backup operations might take longer and require more storage space. In this scenario, the VMs are first paused, then VMware performs a VM consistent snapshot. Cloud Backup for Virtual Machines then performs its backup operation, and then VM operations are resumed. <br> VM guest memory is not included in VM consistency snapshots. |
+ | Include datastores with independent disks | Check this box to include any datastores with independent disks that contain temporary data in your backup. |
+ | Scripts | Enter the fully qualified path of the prescript or postscript that you want the Cloud Backup for Virtual Machines to run before or after backup operations. For example, you can run a script to update Simple Network Management Protocol (SNMP) traps, automate alerts, and send logs. The script path is validated at the time the script is executed. <br> **NOTE**: Prescripts and postscripts must be located on the virtual appliance VM. To enter multiple scripts, press **Enter** after each script path to list each script on a separate line. The semicolon (;) character is not allowed. |
+7. Select **Add** to save your policy.
+ You can verify that the policy has been created successfully and review the policy configuration by selecting the policy in the **Policies** page.
+
+## Resource groups
+
+A resource group is the container for VMs and datastores that you want to protect.
+
+Do not add VMs in an inaccessible state to a resource group. Although a resource group can contain a VM in an inaccessible state, the inaccessible state causes backups for the resource group to fail.
+
+### Considerations for resource groups
+
+You can add or remove resources from a resource group at any time.
+* **Back up a single resource:** To back up a single resource (for example, a single VM), you must create a resource group that contains that single resource.
+* **Back up multiple resources:** To back up multiple resources, you must create a resource group that contains multiple resources.
+* **Optimize snapshot copies:** To optimize snapshot copies, group the VMs and datastores that are associated with the same volume into one resource group.
+* **Backup policies:** Although it's possible to create a resource group without a backup policy, you can only perform scheduled data protection operations when at least one policy is attached to the resource group. You can use an existing policy, or you can create a new policy while creating a resource group.
+* **Compatibility checks:** Cloud Backup for VMs performs compatibility checks when you create a resource group. Reasons for incompatibility might be:
+ * Virtual machine disks (VMDKs) are on unsupported storage.
+ * A shared PCI device is attached to a VM.
+ * You have not added the Azure subscription account.
+
+### Create a resource group using the wizard
+
+1. In the left navigation of the vCenter web client page, select **Cloud Backup** for **Virtual Machines** > **Resource Groups**. Then select **+ Create** to start the wizard
+
+ :::image type="content" source="./media/cloud-backup/vsphere-create-resource-group.png" alt-text="Screenshot of the vSphere Client Resource Group interface shows a red box highlights a button with a green plus sign that reads Create, instructing you to select this button." lightbox="./media/cloud-backup/vsphere-create-resource-group.png":::
+
+1. On the **General Info & Notification** page in the wizard, enter the required values.
+1. On the **Resource** page, do the following:
+
+ | Field | Action |
+ | -- | -- |
+ | Scope | Select the type of resource you want to protect: <br /> -Datastores <br /> -Virtual Machines |
+ | Datacenter | Navigate to the VMs or datastores |
+ | Available entities | Select the resources you want to protect. Then select **>** to move your selections to the Selected entities list. |
+
+ When you select **Next**, the system first checks that Cloud Backup for Virtual Machines manages and is compatible with the storage on which the selected resources are located.
+
+ >[!IMPORTANT]
+ >If you receive the message `selected <resource-name> is not Cloud Backup for Virtual Machines compatible` then a selected resource is not compatible with Cloud Backup for Virtual Machines.
+
+1. On the **Spanning disks** page, select an option for VMs with multiple VMDKs across multiple datastores:
+ * Always exclude all spanning datastores
+ (This is the default option for datastores)
+ * Always include all spanning datastores
+ (This is the default for VMs)
+ * Manually select the spanning datastores to be included
+1. On the **Policies** page, select or create one or more backup policies.
+ * To use **an existing policy**, select one or more policies from the list.
+ * To **create a new policy**:
+ 1. Select **+ Create**.
+ 1. Complete the New Backup Policy wizard to return to the Create Resource Group wizard.
+1. On the **Schedules** page, configure the backup schedule for each selected policy.
+ In the **Starting** field, enter a date and time other than zero. The date must be in the format day/month/year. You must fill in each field. The Cloud Backup for Virtual Machines creates schedules in the time zone in which the Cloud Backup for Virtual Machines is deployed. You can modify the time zone by using the Cloud Backup for Virtual Machines GUI.
+
+ :::image type="content" source="./media/cloud-backup/backup-schedules.png" alt-text="A screenshot of the Backup schedules interface showing an hourly backup beginning at 10:22 a.m. on April 26, 2022." lightbox="./media/cloud-backup/backup-schedules.png":::
+1. Review the summary. If you need to change any information, you can return to any page in the wizard to do so. Select **Finish** to save your settings.
+
+ After you select **Finish**, the new resource group is added to the resource group list.
+
+ If the pause operation fails for any of the VMs in the backup, then the backup is marked as not VM-consistent even if the policy selected has VM consistency selected. In this case, it's possible that some of the VMs were successfully paused.
+
+### Other ways to create a resource group
+
+In addition to using the wizard, you can:
+* **Create a resource group for a single VM:**
+ 1. Select **Menu** > **Hosts and Clusters**.
+ 1. Right-click the Virtual Machine you want to create a resource group for and select **Cloud Backup for Virtual Machines**. Select **+ Create**.
+* **Create a resource group for a single datastore:**
+ 1. Select **Menu** > **Hosts and Clusters**.
+ 1. Right-click a datastore, then select **Cloud Backup for Virtual Machines**. Select **+ Create**.
+
+## Back up resource groups
+
+Backup operations are performed on all the resources defined in a resource group. If a resource group has a policy attached and a schedule configured, backups occur automatically according to the schedule.
+
+## Prerequisites to back up resource groups
+
+* You must have created a resource group with a policy attached.
+ >[!NOTE]
+ > Do not start an on-demand backup job when a job to back up the Cloud Backup for Virtual Machines MySQL database is already running. Use the maintenance console to see the configured backup schedule for the MySQL database.
+
+### Back up resource groups on demand
+
+1. In the left navigation of the vCenter web client page, select **Cloud Backup for Virtual Machines** > **Resource Groups**, then select a resource group. Select **Run Now** to start the backup.
+
+ :::image type="content" source="./media/cloud-backup/resource-groups-run-now.png" alt-text="Image of the vSphere Client Resource Group interface. At the top left, a red box highlights a green circular button with a white arrow inside next to text reading Run Now, instructing you to select this button." lightbox="./media/cloud-backup/resource-groups-run-now.png":::
+
+ 1. If the resource group has multiple policies configured, then in the **Backup Now** dialog box, select the policy you want to use for this backup operation.
+
+1. Select **OK** to initiate the backup.
+ >[!NOTE]
+ >You can't rename a backup once it's created.
+1. **Optional:** Monitor the operation progress by selecting **Recent Tasks** at the bottom of the window or on the dashboard Job Monitor for more details.
+ If the pause operation fails for any of the VMs in the backup, then the backup completes with a warning and is marked as not VM-consistent even if the selected policy has VM consistency selected. In this case, it is possible that some of the VMs were successfully paused. In the job monitor, the failed VM details will show the pause operation as failed.
+
+## Next steps
+
+* [Restore VMs using Cloud Backup for Virtual Machines](restore-azure-netapp-files-vms.md)
azure-vmware Install Cloud Backup Virtual Machines https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/install-cloud-backup-virtual-machines.md
+
+ Title: Install Cloud Backup for Virtual Machines (preview)
+description: Cloud Backup for Virtual Machines is a plug-in installed in the Azure VMware Solution and enables you to back up and restore Azure NetApp Files datastores and virtual machines.
++ Last updated : 05/10/2023++
+# Install Cloud Backup for Virtual Machines (preview)
+
+Cloud Backup for Virtual Machines is a plug-in installed in the Azure VMware Solution and enables you to back up and restore Azure NetApp Files datastores and virtual machines (VMs).
+
+Use Cloud Backup for VMs to:
+* Build and securely connect both legacy and cloud-native workloads across environments and unify operations
+* Provision and resize datastore volumes right from the Azure portal
+* Take VM consistent snapshots for quick checkpoints
+* Quickly recover VMs
+
+## Install Cloud Backup for Virtual Machines
+
+You need to install Cloud Backup for Virtual Machines through the Azure portal as an add-on.
+
+1. Sign in to your Azure VMware Solution private cloud.
+1. Select **Run command** > **Packages** > **NetApp.CBS.AVS** > **Install-NetAppCBSA**.
+
+ :::image type="content" source="./media/cloud-backup/run-command.png" alt-text="Screenshot of the Azure interface that shows the configure signal logic step with a backdrop of the Create alert rule page." lightbox="./media/cloud-backup/run-command.png":::
+
+1. Provide the required values, then select **Run**.
+
+ :::image type="content" source="./media/cloud-backup/run-commands-fields.png" alt-text="Image of the Run Command fields which are described in the table below." lightbox="./media/cloud-backup/run-commands-fields.png":::
+
+ | Field | Value |
+ | | -- |
+ | ApplianceVirtualMachineName | VM name for the appliance. |
+ | EsxiCluster | Destination ESXi cluster name to be used for deploying the appliance. |
+ | VmDatastore | Datastore to be used for the appliance. |
+ | NetworkMapping | Destination network to be used for the appliance. |
+ | ApplianceNetworkName | Network name to be used for the appliance. |
+ | ApplianceIPAddress | IPv4 address to be used for the appliance. |
+ | Netmask | Subnet mask. |
+ | Gateway | Gateway IP address. |
+ | PrimaryDNS | Primary DNS server IP address. |
+ | ApplianceUser | User Account for hosting API services in the appliance. |
+ | AppliancePassword | Password of the user hosting API services in the appliance. |
+ | MaintenanceUserPassword | Password of the appliance maintenance user. |
+
+ >[!TIP]
+ >You can also install Cloud Backup for Virtual Machines using DHCP by running the package `NetAppCBSApplianceUsingDHCP`. If you install Cloud Backup for Virtual Machines using DHCP, you don't need to provide the values for the PrimaryDNS, Gateway, Netmask, and ApplianceIPAddress fields. These values are automatically generated.
+
+1. Check **Notifications** or the **Run Execution Status** tab to see the progress. For more information about the status of the execution, see [Run command in Azure VMware Solution](concepts-run-command.md).
+
+Upon successful execution, the Cloud Backup for Virtual Machines is automatically displayed in the VMware vSphere client.
+
+## Upgrade Cloud Backup for Virtual Machines
+
+Before you initiate the upgrade, you must:
+
+* Back up the MySQL database of Cloud Backup for Virtual Machines.
+* With vSphere, take VMware snapshot copies of the Cloud Backup VM.
+
+### Back up the MySQL database
+
+Do not start back up of the MySQL database when an on-demand backup job is already running.
+
+1. From the VMware vSphere web client, select the VM where the SnapCenter VMware plug-in is located.
+1. Right-click the VM. On the **Summary** tab of the virtual appliance, select **Launch Remote Console or Launch Web Console** to open a maintenance console window.
+
+ The logon defaults for the SnapCenter VMware plug-in maintenance console are:
+
+ Username: `maint`
+ Password: `admin123`
+
+1. From the main menu, enter option **1) Application Configuration**.
+1. From the Application Configuration menu, enter option **6) MySQL backup and restore**.
+1. From the MySQL Backup and Restore Configuration menu, enter option **1) Configure MySQL backup**.
+1. At the prompt, enter the backup location for the repository, the number of backups to keep, and the time the backup should start.
+ All inputs are saved when you enter them. When the backup retention number is reached, older backups are deleted when new backups are performed.
+
+ >[!NOTE]
+ >Repository backups are named `"backup-<date>"`. Because the repository restore function looks for the "backup" prefix, you should not change it.
+
+### Upgrade
+
+Use the following steps to execute a run command to upgrade the Cloud Backup for Virtual Machines to the next available version.
+
+1. Select **Run command** > **Packages** > **NetApp.CBS.AVS** > **Invoke-UpgradeNetAppCBSAppliance**.
+1. Provide the required values, and then select **Run**.
+1. Check **Notifications** or the **Run Execution Status** pane to monitor the progress.
+
+## Uninstall Cloud Backup for Virtual Machines
+
+You can execute the run command to uninstall Cloud Backup for Virtual Machines.
+
+> [!IMPORTANT]
+> Before you initiate the upgrade, you must:
+> * Backup the MySQL database of Cloud Backup for Virtual Machines.
+> * Ensure that there are no other VMs installed in the VMware vSphere tag: `AVS_ANF_CLOUD_ADMIN_VM_TAG`. All VMs with this tag are deleted when you uninstall.
+
+1. Select **Run command** > **Packages** > **NetApp.CBS.AVS** > **Uninstall-NetAppCBSAppliance**.
+1. Provide the required values, and then select **Run**.
+1. Check **Notifications** or the **Run Execution Status** pane to monitor the progress.
+
+## Change vCenter account password
+
+Use the following steps to execute the command to reset the vCenter account password:
+
+1. Select **Run command** > **Packages** > **NetApp.CBS.AVS** > **Invoke-ResetNetAppCBSApplianceVCenterPasswordA**.
+1. Provide the required values, then select **Run**.
+1. Check **Notifications** or the **Run Execution Status** pane to monitor the progress.
+
+## Next steps
+
+* [Back up Azure NetApp Files datastores and VMs using Cloud Backup for Virtual Machines](backup-azure-netapp-files-datastores-vms.md)
+* [Restore VMs using Cloud Backup for Virtual Machines](restore-azure-netapp-files-vms.md)
azure-vmware Restore Azure Netapp Files Vms https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/restore-azure-netapp-files-vms.md
+
+ Title: Restore VMs using Cloud Backup for Virtual Machines (preview)
+description: Learn how to restore virtual machines from a cloud backup to the vCenter.
++ Last updated : 05/10/2023++
+# Restore VMs using Cloud Backup for Virtual Machines (preview)
+
+Cloud Backup for Virtual Machines enables you to restore virtual machines (VMs) from the cloud backup to the vCenter.
+
+This article covers how to:
+* Restore VMs from backups
+* Restore deleted VMs from backups
+* Restore VM disks (VMDKs) from backups
+* Recovery of Cloud Backup for Virtual Machines internal database
+
+## Restore VMs from backups
+
+When you restore a VM, you can overwrite the existing content with the backup copy that you select or you can restore to a new VM.
+
+You can restore VMs to the original datastore mounted on the original ESXi host (this overwrites the original VM).
+
+## Prerequisites to restore VMs
+
+* A backup must exist: you must have created a backup of the VM using the Cloud Backup for Virtual Machines before you can restore the VM.
+>[!NOTE]
+>Restore operations cannot finish successfully if there are snapshots of the VM that were performed by software other than the Cloud Backup for Virtual Machines.
+* The VM must not be in transit: the VM that you want to restore must not be in a state of vMotion or Storage vMotion.
+* High Availability (HA) configuration errors: ensure there are no HA configuration errors displayed on the vCenter ESXi Host Summary screen before restoring backups to a different location.
+
+### Considerations for restoring VMs from backups
+
+* VM is unregistered and registered again: The restore operation for VMs unregisters the original VM, restores the VM from a backup snapshot, and registers the restored VM with the same name and configuration on the same ESXi server. You must manually add the VMs to resource groups after the restore.
+* Restoring datastores: You cannot restore a datastore, but you can restore any VM in the datastore.
+* VMware consistency snapshot failures for a VM: Even if a VMware consistency snapshot for a VM fails, the VM is nevertheless backed up. You can view the entities contained in the backup copy in the Restore wizard and use it for restore operations.
+
+### Restore a VM from a backup
+
+1. In the VMware vSphere web client GUI, select **Menu** in the toolbar. Select **Inventory** and then **Virtual Machines and Templates**.
+1. In the left navigation, right-click a Virtual Machine, then select **NetApp Cloud Backup**. In the drop-down list, select **Restore** to initiate the wizard.
+1. In the Restore wizard, on the **Select Backup** page, select the backup snapshot copy that you want to restore.
+ > [!NOTE]
+ > You can search for a specific backup name or a partial backup name, or you can filter the backup list by selecting the filter icon and then choosing a date and time range, selecting whether you want backups that contain VMware snapshots, whether you want mounted backups, and the location. Select **OK** to return to the wizard.
+1. On the **Select Scope** page, select **Entire Virtual Machine** in the **Restore scope** field, then select **Restore location**, and then enter the destination ESXi information where the backup should be mounted.
+1. When restoring partial backups, the restore operation skips the Select Scope page.
+1. Enable **Restart VM** checkbox if you want the VM to be powered on after the restore operation.
+1. On the **Select Location** page, select the location for the primary or secondary location.
+1. Review the **Summary** page and then select **Finish**.
+1. **Optional:** Monitor the operation progress by selecting Recent Tasks at the bottom of the screen.
+
+Although the VMs are restored, they're not automatically added to their former resource groups. Therefore, you must manually add the restored VMs to the appropriate resource groups.
+
+## Restore deleted VMs from backups
+
+You can restore a deleted VM from a datastore primary or secondary backup to an ESXi host that you select. You can also restore VMs to the original datastore mounted on the original ESXi host, which creates a clone of the VM.
+
+## Prerequisites to restore deleted VMs
+
+* You must have added the Azure cloud Subscription account.
+ The user account in vCenter must have the minimum vCenter privileges required for Cloud Backup for Virtual Machines.
+* A backup must exist.
+ You must have created a backup of the VM using the Cloud Backup for Virtual Machines before you can restore the VMDKs on that VM.
+
+### Considerations for restoring deleted VMs
+
+You cannot restore a datastore, but you can restore any VM in the datastore.
+
+### Restore deleted VMs
+
+1. Select **Menu** and then select the **Inventory** option.
+1. Select a datastore, then select the **Configure** tab, then the **Backups in the Cloud Backup for Virtual Machines** section.
+1. Select (double-click) a backup to see a list of all VMs that are included in the backup.
+1. Select the deleted VM from the backup list and then select **Restore**.
+1. On the **Select Scope** page, select **Entire Virtual Machine** in the **Restore scope field**, then select the restore location, and then enter the destination ESXi information where the backup should be mounted.
+1. Enable **Restart VM** checkbox if you want the VM to be powered on after the restore operation.
+1. On the **Select Location** page, select the location of the backup that you want to restore to.
+1. Review the **Summary** page, then select **Finish**.
+
+## Restore VMDKs from backups
+
+You can restore existing VMDKs or deleted or detached VMDKs from either a primary or secondary backup. You can restore one or more VMDKs on a VM to the same datastore.
+
+## Prerequisites to restore VMDKs
+
+* A backup must exist.
+ You must have created a backup of the VM using the Cloud Backup for Virtual Machines.
+* The VM must not be in transit.
+ The VM that you want to restore must not be in a state of vMotion or Storage vMotion.
+
+### Considerations for restoring VMDKs
+
+* If the VMDK is deleted or detached from the VM, then the restore operation attaches the VMDK to the VM.
+* Attach and restore operations connect VMDKs using the default SCSI controller. VMDKs that are attached to a VM with an NVME controller are backed up, but for attach and restore operations they are connected back using a SCSI controller.
+
+### Restore VMDKs
+
+1. In the VMware vSphere web client GUI, select **Menu** in the toolbar. Select **Inventory**, then **Virtual Machines and Templates**.
+1. In the left navigation, right-click a VM and select **NetApp Cloud Backup**. In the drop-down list, select **Restore**.
+1. In the Restore wizard, on the **Select Backup** page, select the backup copy from which you want to restore. To find the backup, do one of the following options:
+ * Search for a specific backup name or a partial backup name.
+ * Filter the backup list by selecting the filter icon and a date and time range. Select if you want backups that contain VMware snapshots, if you want mounted backups, and primary location.
+ Select **OK** to return to the wizard.
+1. On the **Select Scope** page, select **Particular virtual disk** in the Restore scope field, then select the virtual disk and destination datastore.
+1. On the **Select Location** page, select the snapshot copy that you want to restore.
+1. Review the **Summary** page and then select **Finish**.
+1. **Optional:** Monitor the operation progress by clicking Recent Tasks at the bottom of the screen.
+
+## Recovery of Cloud Backup for Virtual Machines internal database
+
+You can use the maintenance console to restore a specific backup of the MySQL database (also called an NSM database) for Cloud Backup for Virtual Machines.
+
+1. Open a maintenance console window.
+1. From the main menu, enter option **1) Application Configuration**.
+1. From the Application Configuration menu, enter option **6) MySQL backup and restore**.
+1. From the MySQL Backup and Restore Configuration menu, enter option **2) List MySQL backups**. Make note of the backup you want to restore.
+1. From the MySQL Backup and Restore Configuration menu, enter option **3) Restore MySQL backup**.
+1. At the prompt ΓÇ£Restore using the most recent backup,ΓÇ¥ enter **n**.
+1. At the prompt ΓÇ£Backup to restore from,ΓÇ¥ enter the backup name, and then select **Enter**.
+ The selected backup MySQL database will be restored to its original location.
+
+If you need to change the MySQL database backup configuration, you can modify:
+* The backup location (the default is: `/opt/netapp/protectionservice/mysqldumps`)
+* The number of backups kept (the default value is three)
+* The time of day the backup is recorded (the default value is 12:39 a.m.)
+
+1. Open a maintenance console window.
+1. From the main menu, enter option **1) Application Configuration**.
+1. From the Application Configuration menu, enter option **6) MySQL backup and restore**.
+1. From the MySQL Backup & Restore Configuration, menu, enter option **1) Configure MySQL backup**.
+
+ :::image type="content" source="./media/cloud-backup/mysql-backup-configuration.png" alt-text="Screenshot of the CLI maintenance menu depicting menu options." lightbox="./media/cloud-backup/mysql-backup-configuration.png":::
azure-vmware Rotate Cloudadmin Credentials https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/rotate-cloudadmin-credentials.md
Title: Rotate the cloudadmin credentials for Azure VMware Solution
description: Learn how to rotate the vCenter Server credentials for your Azure VMware Solution private cloud. + Last updated 12/22/2022- #Customer intent: As an Azure service administrator, I want to rotate my cloudadmin credentials so that the HCX Connector has the latest vCenter Server CloudAdmin credentials.- # Rotate the cloudadmin credentials for Azure VMware Solution
azure-vmware Tutorial Create Private Cloud https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/tutorial-create-private-cloud.md
description: Learn how to create and deploy an Azure VMware Solution private clo
Last updated 10/27/2022-+ # Tutorial: Deploy an Azure VMware Solution private cloud
azure-web-pubsub Samples App Scenarios https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-web-pubsub/samples-app-scenarios.md
Last updated 05/15/2023-+ zone_pivot_groups: azure-web-pubsub-samples-app-scenarios # Azure Web PubSub samples - app scenarios
Here's a list of code samples written by Azure Web PubSub team and the community
| App scenario | Industry | | | -- | | [Chat app](https://github.com/Azure/azure-webpubsub/tree/main/samples/python/chatapp) | Social |
azure-web-pubsub Samples Authenticate And Connect https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-web-pubsub/samples-authenticate-and-connect.md
Last updated 05/15/2023-+ zone_pivot_groups: azure-web-pubsub-samples-authenticate-and-connect # Azure Web PubSub samples - Authenticate and connect
While the client's role is often limited, the application server's role goes bey
| [Using connection string](https://github.com/Azure/azure-webpubsub/blob/eb60438ff9e0735d90a6e7e6370b9d38aa6bc730/samples/python/chatapp/server.py#L19) | Applies to application server only. | [Using Client Access Token](https://github.com/Azure/azure-webpubsub/blob/eb60438ff9e0735d90a6e7e6370b9d38aa6bc730/samples/python/chatapp/public/https://docsupdatetracker.net/index.html#L13) | Applies to client only. Client Access Token is generated on the application server. | [Using Azure Active Directory](https://github.com/Azure/azure-webpubsub/blob/eb60438ff9e0735d90a6e7e6370b9d38aa6bc730/samples/python/chatapp-aad/server.py#L21) | Using Azure AD for authorization offers improved security and ease of use compared to Access Key authorization.
azure-web-pubsub Tutorial Build Chat https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-web-pubsub/tutorial-build-chat.md
description: A tutorial to walk through how to create a chat app with Azure Web
+ Last updated 11/01/2021
azure-web-pubsub Tutorial Subprotocol https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-web-pubsub/tutorial-subprotocol.md
description: A tutorial to walk through how to use Azure Web PubSub service and
+ Last updated 11/01/2021
backup Backup Azure Enhanced Soft Delete About https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/backup/backup-azure-enhanced-soft-delete-about.md
Title: Overview of enhanced soft delete for Azure Backup (preview)
description: This article gives an overview of enhanced soft delete for Azure Backup. Previously updated : 06/16/2023 Last updated : 06/29/2023
The key benefits of enhanced soft delete are:
## Supported regions - Enhanced soft delete is available in all Azure public regions.-- Soft delete of recovery points is currently in preview in West Central US, Australia East, North Europe, South Central US, Australia Central, Australia Central 2, Canada East, India Central, India South,Japan West, Japan East, Korea Central, Korea South, France South, France Central, Sweden Central, Sweden South, West Europe, UK South, Australia South East, Brazil South, Brazil South East, Canada Central, UK West.
+- Soft delete of recovery points is now available in all Azure public regions.
## Supported scenarios
backup Backup Azure Vms Enhanced Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/backup/backup-azure-vms-enhanced-policy.md
Last updated 05/15/2023 +
backup Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/backup/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Backup description: Lists Azure Policy Regulatory Compliance controls available for Azure Backup. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
backup Tutorial Restore Files https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/backup/tutorial-restore-files.md
Title: Tutorial - Restore files to a VM with Azure Backup
description: Learn how to perform file-level restores on an Azure VM with Backup and Recovery Services. Last updated 01/31/2019-+
batch Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/batch/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Batch description: Lists Azure Policy Regulatory Compliance controls available for Azure Batch. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
chaos-studio Chaos Studio Fault Library https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/chaos-studio/chaos-studio-fault-library.md
Last updated 06/16/2022 -+ # Azure Chaos Studio Preview fault and action library
chaos-studio Chaos Studio Permissions Security https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/chaos-studio/chaos-studio-permissions-security.md
Last updated 11/01/2021-+ # Permissions and security in Azure Chaos Studio Preview
chaos-studio Chaos Studio Permissions Security https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cloud-services-php-create-web-role.md
PS C:\MyProject> Stop-AzureEmulator
## Publish your application
-To publish your application, you need to first import your publish settings by using the [Import-AzurePublishSettingsFile](/powershell/module/servicemanagement/azure.service/import-azurepublishsettingsfile) cmdlet. Then you can publish your application by using the [Publish-AzureServiceProject](/powershell/module/servicemanagement/azure.service/publish-azureserviceproject) cmdlet. For information about signing in, see [How to install and configure Azure PowerShell](/powershell/azure/).
+To publish your application, you need to first import your publish settings by using the [Import-AzurePublishSettingsFile](/powershell/module/servicemanagement/azure/import-azurepublishsettingsfile) cmdlet. Then you can publish your application by using the [Publish-AzureServiceProject](/powershell/module/servicemanagement/azure/publish-azureserviceproject) cmdlet. For information about signing in, see [How to install and configure Azure PowerShell](/powershell/azure/).
## Next steps
For more information, see the [PHP Developer Center](https://azure.microsoft.com
[iis.net]: https://www.iis.net/ [sql native client]: /sql/sql-server/sql-server-technical-documentation [sqlsrv drivers]: https://php.net/sqlsrv
-[sqlncli.msi x64 installer]: https://go.microsoft.com/fwlink/?LinkID=239648
+[sqlncli.msi x64 installer]: https://go.microsoft.com/fwlink/?LinkID=239648
cognitive-services Background Removal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/how-to/background-removal.md
This guide assumes you have successfully followed the steps mentioned in the [qu
The quickstart shows you how to extract visual features from an image, however, the concepts are similar to background removal. Therefore you benefit from starting from the quickstart and making modifications. > [!IMPORTANT]
-> Background removal is only available in the following Azure regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia.
+> Background removal is only available in the following Azure regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US.
## Authenticate against the service
cognitive-services Call Analyze Image 40 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/how-to/call-analyze-image-40.md
To analyze a local image, you'd put the binary image data in the HTTP request bo
The Analysis 4.0 API gives you access to all of the service's image analysis features. Choose which operations to do based on your own use case. See the [overview](../overview.md) for a description of each feature. The example in this section adds all of the available visual features, but for practical usage you likely need fewer.
-Visual features 'Captions' and 'DenseCaptions' are only supported in the following Azure regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia.
+Visual features 'Captions' and 'DenseCaptions' are only supported in the following Azure regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US.
> [!NOTE] > The REST API uses the terms **Smart Crops** and **Smart Crops Aspect Ratios**. The SDK uses the terms **Crop Suggestions** and **Cropping Aspect Ratios**. They both refer to the same service operation. Similarly, the REST API users the term **Read** for detecting text in the image, whereas the SDK uses the term **Text** for the same operation.
cognitive-services Image Retrieval https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/how-to/image-retrieval.md
The Image Retrieval APIs enable the _vectorization_ of images and text queries. They convert images to coordinates in a multi-dimensional vector space. Then, incoming text queries can also be converted to vectors, and images can be matched to the text based on semantic closeness. This allows the user to search a set of images using text, without the need to use image tags or other metadata. Semantic closeness often produces better results in search. > [!IMPORTANT]
-> These APIs are only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia.
+> These APIs are only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US.
## Prerequisites * Azure subscription - [Create one for free](https://azure.microsoft.com/free/cognitive-services)
-* Once you have your Azure subscription, <a href="https://portal.azure.com/#create/Microsoft.CognitiveServicesComputerVision" title="Create a Computer Vision resource" target="_blank">create a Computer Vision resource </a> in the Azure portal to get your key and endpoint. Be sure to create it in one of the permitted geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia.
+* Once you have your Azure subscription, <a href="https://portal.azure.com/#create/Microsoft.CognitiveServicesComputerVision" title="Create a Computer Vision resource" target="_blank">create a Computer Vision resource </a> in the Azure portal to get your key and endpoint. Be sure to create it in one of the permitted geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US.
* After it deploys, select **Go to resource**. Copy the key and endpoint to a temporary location to use later on. ## Try out Image Retrieval
cognitive-services Language Support https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/language-support.md
The following table lists the OCR supported languages for print text by the most
Some features of the [Analyze - Image](https://westcentralus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-1-g) for a list of all the actions you can do with image analysis. Languages for tagging are only available in API version 3.2 or later.
-|Language | Language code | Categories | Tags | Description | Adult | Brands | Color | Faces | ImageType | Objects | Celebrities | Landmarks |
-|:|::|:-:|::|::|::|::|::|::|::|::|::|::|
-|Arabic |`ar`| | ✅| |||||| |||
-|Azeri (Azerbaijani) |`az`| | ✅| |||||| |||
-|Bulgarian |`bg`| | ✅| |||||| |||
-|Bosnian Latin |`bs`| | ✅| |||||| |||
-|Catalan |`ca`| | ✅| |||||| |||
-|Czech |`cs`| | ✅| |||||| |||
-|Welsh |`cy`| | ✅| |||||| |||
-|Danish |`da`| | ✅| |||||| |||
-|German |`de`| | ✅| |||||| |||
-|Greek |`el`| | ✅| |||||| |||
-|English |`en`|✅ | ✅| ✅|✅|✅|✅|✅|✅|✅|✅|✅|
-|Spanish |`es`|✅ | ✅| ✅|||||| |✅|✅|
-|Estonian |`et`| | ✅| |||||| |||
-|Basque |`eu`| | ✅| |||||| |||
-|Finnish |`fi`| | ✅| |||||| |||
-|French |`fr`| | ✅| |||||| |||
-|Irish |`ga`| | ✅| |||||| |||
-|Galician |`gl`| | ✅| |||||| |||
-|Hebrew |`he`| | ✅| |||||| |||
-|Hindi |`hi`| | ✅| |||||| |||
-|Croatian |`hr`| | ✅| |||||| |||
-|Hungarian |`hu`| | ✅| |||||| |||
-|Indonesian |`id`| | ✅| |||||| |||
-|Italian |`it`| | ✅| |||||| |||
-|Japanese |`ja`|✅ | ✅| ✅|||||| |✅|✅|
-|Kazakh |`kk`| | ✅| |||||| |||
-|Korean |`ko`| | ✅| |||||| |||
-|Lithuanian |`lt`| | ✅| |||||| |||
-|Latvian |`lv`| | ✅| |||||| |||
-|Macedonian |`mk`| | ✅| |||||| |||
-|Malay Malaysia |`ms`| | ✅| |||||| |||
-|Norwegian (Bokmal) |`nb`| | ✅| |||||| |||
-|Dutch |`nl`| | ✅| |||||| |||
-|Polish |`pl`| | ✅| |||||| |||
-|Dari |`prs`| | ✅| |||||| |||
-| Portuguese-Brazil|`pt-BR`| | ✅| |||||| |||
-| Portuguese-Portugal |`pt`|✅ | ✅| ✅|||||| |✅|✅|
-| Portuguese-Portugal |`pt-PT`| | ✅| |||||| |||
-|Romanian |`ro`| | ✅| |||||| |||
-|Russian |`ru`| | ✅| |||||| |||
-|Slovak |`sk`| | ✅| |||||| |||
-|Slovenian |`sl`| | ✅| |||||| |||
-|Serbian - Cyrillic RS |`sr-Cryl`| | ✅| |||||| |||
-|Serbian - Latin RS |`sr-Latn`| | ✅| |||||| |||
-|Swedish |`sv`| | ✅| |||||| |||
-|Thai |`th`| | ✅| |||||| |||
-|Turkish |`tr`| | ✅| |||||| |||
-|Ukrainian |`uk`| | ✅| |||||| |||
-|Vietnamese |`vi`| | ✅| |||||| |||
-|Chinese Simplified |`zh`|✅ | ✅| ✅|||||| |✅|✅|
-|Chinese Simplified |`zh-Hans`| | ✅| |||||| |||
-|Chinese Traditional |`zh-Hant`| | ✅| |||||| |||
+|Language | Language code | Categories | Tags | Description | Adult | Brands | Color | Faces | ImageType | Objects | Celebrities | Landmarks | Captions/Dense captions|
+|:|::|:-:|::|::|::|::|::|::|::|::|::|::|:--:|
+|Arabic |`ar`| | ✅| |||||| ||||
+|Azeri (Azerbaijani) |`az`| | ✅| |||||| ||||
+|Bulgarian |`bg`| | ✅| |||||| ||||
+|Bosnian Latin |`bs`| | ✅| |||||| ||||
+|Catalan |`ca`| | ✅| |||||| ||||
+|Czech |`cs`| | ✅| |||||| ||||
+|Welsh |`cy`| | ✅| |||||| ||||
+|Danish |`da`| | ✅| |||||| ||||
+|German |`de`| | ✅| |||||| ||||
+|Greek |`el`| | ✅| |||||| ||||
+|English |`en`|✅ | ✅| ✅|✅|✅|✅|✅|✅|✅|✅|✅|✅|
+|Spanish |`es`|✅ | ✅| ✅|||||| |✅|✅||
+|Estonian |`et`| | ✅| |||||| ||||
+|Basque |`eu`| | ✅| |||||| ||||
+|Finnish |`fi`| | ✅| |||||| ||||
+|French |`fr`| | ✅| |||||| ||||
+|Irish |`ga`| | ✅| |||||| ||||
+|Galician |`gl`| | ✅| |||||| ||||
+|Hebrew |`he`| | ✅| |||||| ||||
+|Hindi |`hi`| | ✅| |||||| ||||
+|Croatian |`hr`| | ✅| |||||| ||||
+|Hungarian |`hu`| | ✅| |||||| ||||
+|Indonesian |`id`| | ✅| |||||| ||||
+|Italian |`it`| | ✅| |||||| ||||
+|Japanese |`ja`|✅ | ✅| ✅|||||| |✅|✅||
+|Kazakh |`kk`| | ✅| |||||| ||||
+|Korean |`ko`| | ✅| |||||| ||||
+|Lithuanian |`lt`| | ✅| |||||| ||||
+|Latvian |`lv`| | ✅| |||||| ||||
+|Macedonian |`mk`| | ✅| |||||| ||||
+|Malay Malaysia |`ms`| | ✅| |||||| ||||
+|Norwegian (Bokmal) |`nb`| | ✅| |||||| ||||
+|Dutch |`nl`| | ✅| |||||| ||||
+|Polish |`pl`| | ✅| |||||| ||||
+|Dari |`prs`| | ✅| |||||| ||||
+| Portuguese-Brazil|`pt-BR`| | ✅| |||||| ||||
+| Portuguese-Portugal |`pt`|✅ | ✅| ✅|||||| |✅|✅||
+| Portuguese-Portugal |`pt-PT`| | ✅| |||||| ||||
+|Romanian |`ro`| | ✅| |||||| ||||
+|Russian |`ru`| | ✅| |||||| ||||
+|Slovak |`sk`| | ✅| |||||| ||||
+|Slovenian |`sl`| | ✅| |||||| ||||
+|Serbian - Cyrillic RS |`sr-Cryl`| | ✅| |||||| ||||
+|Serbian - Latin RS |`sr-Latn`| | ✅| |||||| ||||
+|Swedish |`sv`| | ✅| |||||| ||||
+|Thai |`th`| | ✅| |||||| ||||
+|Turkish |`tr`| | ✅| |||||| ||||
+|Ukrainian |`uk`| | ✅| |||||| ||||
+|Vietnamese |`vi`| | ✅| |||||| ||||
+|Chinese Simplified |`zh`|✅ | ✅| ✅|||||| |✅|✅||
+|Chinese Simplified |`zh-Hans`| | ✅| |||||| ||||
+|Chinese Traditional |`zh-Hant`| | ✅| |||||| ||||
cognitive-services Overview Image Analysis https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/overview-image-analysis.md
You can analyze images to provide insights about their visual features and chara
|**Model customization** (v4.0 preview only)|You can create and train custom models to do image classification or object detection. Bring your own images, label them with custom tags, and Image Analysis will train a model customized for your use case.|[Model customization](./concept-model-customization.md)| |**Read text from images** (v4.0 preview only)| Version 4.0 preview of Image Analysis offers the ability to extract readable text from images. Compared with the async Computer Vision 3.2 Read API, the new version offers the familiar Read OCR engine in a unified performance-enhanced synchronous API that makes it easy to get OCR along with other insights in a single API call. |[OCR for images](concept-ocr.md)| |**Detect people in images** (v4.0 preview only)|Version 4.0 preview of Image Analysis offers the ability to detect people appearing in images. The bounding box coordinates of each detected person are returned, along with a confidence score. |[People detection](concept-people-detection.md)|
-|**Generate image captions** | Generate a caption of an image in human-readable language, using complete sentences. Computer Vision's algorithms generate captions based on the objects identified in the image. <br/><br/>The version 4.0 image captioning model is a more advanced implementation and works with a wider range of input images. It is only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia. <br/><br/>Version 4.0 also lets you use dense captioning, which generates detailed captions for individual objects that are found in the image. The API returns the bounding box coordinates (in pixels) of each object found in the image, plus a caption. You can use this functionality to generate descriptions of separate parts of an image.<br/><br/>:::image type="content" source="Images/description.png" alt-text="Photo of cows with a simple description on the right.":::| [Generate image captions (v3.2)](concept-describing-images.md)<br/>[(v4.0 preview)](concept-describe-images-40.md)|
+|**Generate image captions** | Generate a caption of an image in human-readable language, using complete sentences. Computer Vision's algorithms generate captions based on the objects identified in the image. <br/><br/>The version 4.0 image captioning model is a more advanced implementation and works with a wider range of input images. It is only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US. <br/><br/>Version 4.0 also lets you use dense captioning, which generates detailed captions for individual objects that are found in the image. The API returns the bounding box coordinates (in pixels) of each object found in the image, plus a caption. You can use this functionality to generate descriptions of separate parts of an image.<br/><br/>:::image type="content" source="Images/description.png" alt-text="Photo of cows with a simple description on the right.":::| [Generate image captions (v3.2)](concept-describing-images.md)<br/>[(v4.0 preview)](concept-describe-images-40.md)|
|**Detect objects** |Object detection is similar to tagging, but the API returns the bounding box coordinates for each tag applied. For example, if an image contains a dog, cat and person, the Detect operation will list those objects together with their coordinates in the image. You can use this functionality to process further relationships between the objects in an image. It also lets you know when there are multiple instances of the same tag in an image. <br/><br/>:::image type="content" source="Images/detect-objects.png" alt-text="Photo of an office with a rectangle drawn around a laptop.":::| [Detect objects (v3.2)](concept-object-detection.md)<br/>[(v4.0 preview)](concept-object-detection-40.md) |**Tag visual features**| Identify and tag visual features in an image, from a set of thousands of recognizable objects, living things, scenery, and actions. When the tags are ambiguous or not common knowledge, the API response provides hints to clarify the context of the tag. Tagging isn't limited to the main subject, such as a person in the foreground, but also includes the setting (indoor or outdoor), furniture, tools, plants, animals, accessories, gadgets, and so on.<br/><br/>:::image type="content" source="Images/tagging.png" alt-text="Photo of a skateboarder with tags listed on the right.":::|[Tag visual features (v3.2)](concept-tagging-images.md)<br/>[(v4.0 preview)](concept-tag-images-40.md)|
-|**Get the area of interest / smart crop** |Analyze the contents of an image to return the coordinates of the *area of interest* that matches a specified aspect ratio. Computer Vision returns the bounding box coordinates of the region, so the calling application can modify the original image as desired. <br/><br/>The version 4.0 smart cropping model is a more advanced implementation and works with a wider range of input images. It is only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia. | [Generate a thumbnail (v3.2)](concept-generating-thumbnails.md)<br/>[(v4.0 preview)](concept-generate-thumbnails-40.md)|
+|**Get the area of interest / smart crop** |Analyze the contents of an image to return the coordinates of the *area of interest* that matches a specified aspect ratio. Computer Vision returns the bounding box coordinates of the region, so the calling application can modify the original image as desired. <br/><br/>The version 4.0 smart cropping model is a more advanced implementation and works with a wider range of input images. It is only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US. | [Generate a thumbnail (v3.2)](concept-generating-thumbnails.md)<br/>[(v4.0 preview)](concept-generate-thumbnails-40.md)|
|**Detect brands** (v3.2 only) | Identify commercial brands in images or videos from a database of thousands of global logos. You can use this feature, for example, to discover which brands are most popular on social media or most prevalent in media product placement. |[Detect brands](concept-brand-detection.md)| |**Categorize an image** (v3.2 only)|Identify and categorize an entire image, using a [category taxonomy](Category-Taxonomy.md) with parent/child hereditary hierarchies. Categories can be used alone, or with our new tagging models.<br/><br/>Currently, English is the only supported language for tagging and categorizing images. |[Categorize an image](concept-categorizing-images.md)| | **Detect faces** (v3.2 only) |Detect faces in an image and provide information about each detected face. Computer Vision returns the coordinates, rectangle, gender, and age for each detected face.<br/><br/>You can also use the dedicated [Face API](./index-identity.yml) for these purposes. It provides more detailed analysis, such as facial identification and pose detection.|[Detect faces](concept-detecting-faces.md)|
The Product Recognition APIs let you analyze photos of shelves in a retail store
The Image Retrieval APIs enable the _vectorization_ of images and text queries. They convert images to coordinates in a multi-dimensional vector space. Then, incoming text queries can also be converted to vectors, and images can be matched to the text based on semantic closeness. This allows the user to search a set of images using text, without the need to use image tags or other metadata. Semantic closeness often produces better results in search.
-These APIs are only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US, East Asia.
+These APIs are only available in the following geographic regions: East US, France Central, Korea Central, North Europe, Southeast Asia, West Europe, West US.
[Image Retrieval](./concept-image-retrieval.md)
cognitive-services How To Configure Azure Ad Auth https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Speech-Service/how-to-configure-azure-ad-auth.md
Last updated 06/18/2021
zone_pivot_groups: programming-languages-set-two ms.devlang: cpp, csharp, java, python-+ # Azure Active Directory Authentication with the Speech SDK
cognitive-services Speech Services Private Link https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Speech-Service/speech-services-private-link.md
Last updated 04/07/2021 -+ # Use Speech service through a private endpoint
cognitive-services Language Support https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Translator/language-support.md
|Afrikaans|`af`|Yes|Yes| |Albanian|`sq`|Yes|Yes| |Amharic|`am`|No|No|
-|Arabic|`ar`|No|No|
+|Arabic|`ar`|Yes|Yes|
|Armenian|`hy`|No|No| |Assamese|`as`|No|No| |Azerbaijani (Latin)|`az`|Yes|Yes|
cognitive-services Text Sdk Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Translator/text-sdk-overview.md
+ Last updated 05/12/2023
cognitive-services Disconnected Containers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/containers/disconnected-containers.md
Previously updated : 04/06/2023 Last updated : 06/28/2023
Access is limited to customers that meet the following requirements:
> * You will only see the option to purchase a commitment tier if you have been approved by Microsoft. > * Pricing details are for example only.
-3. Select **Review + Create** at the bottom of the page. Review the information, and select **Create**.
+1. Select **Review + Create** at the bottom of the page. Review the information, and select **Create**.
-4. See the following documentation for steps on downloading and configuring the container for disconnected usage:
+### Configure container for disconnected usage
- * [Computer Vision - Read](../computer-vision/computer-vision-how-to-install-containers.md#run-the-container-disconnected-from-the-internet)
- * [Language Understanding (LUIS)](../LUIS/luis-container-howto.md#run-the-container-disconnected-from-the-internet)
- * [Text Translation (Standard)](../translator/containers/translator-disconnected-containers.md)
- * [Form recognizer](../../applied-ai-services/form-recognizer/containers/form-recognizer-disconnected-containers.md)
+See the following documentation for steps on downloading and configuring the container for disconnected usage:
- **Speech service**
+* [Computer Vision - Read](../computer-vision/computer-vision-how-to-install-containers.md#run-the-container-disconnected-from-the-internet)
+* [Language Understanding (LUIS)](../LUIS/luis-container-howto.md#run-the-container-disconnected-from-the-internet)
+* [Text Translation (Standard)](../translator/containers/translator-disconnected-containers.md)
+* [Form recognizer](../../applied-ai-services/form-recognizer/containers/form-recognizer-disconnected-containers.md)
+
+**Speech service**
- * [Speech to text](../speech-service/speech-container-stt.md?tabs=disconnected#run-the-container-with-docker-run)
- * [Custom Speech to text](../speech-service/speech-container-cstt.md?tabs=disconnected#run-the-container-with-docker-run)
- * [Neural Text to speech](../speech-service/speech-container-ntts.md?tabs=disconnected#run-the-container-with-docker-run)
+* [Speech to text](../speech-service/speech-container-stt.md?tabs=disconnected#run-the-container-with-docker-run)
+* [Custom Speech to text](../speech-service/speech-container-cstt.md?tabs=disconnected#run-the-container-with-docker-run)
+* [Neural Text to speech](../speech-service/speech-container-ntts.md?tabs=disconnected#run-the-container-with-docker-run)
- **Language service**
+**Language service**
- * [Sentiment Analysis](../language-service/sentiment-opinion-mining/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
- * [Key Phrase Extraction](../language-service/key-phrase-extraction/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
- * [Language Detection](../language-service/language-detection/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
+* [Sentiment Analysis](../language-service/sentiment-opinion-mining/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
+* [Key Phrase Extraction](../language-service/key-phrase-extraction/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
+* [Language Detection](../language-service/language-detection/how-to/use-containers.md#run-the-container-disconnected-from-the-internet)
## Container image and license updates
If you run the container with an output mount and logging enabled, the container
+++++
cognitive-services Quickstart Image https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/content-safety/quickstart-image.md
-+ Last updated 05/08/2023
cognitive-services Quickstart Text https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/content-safety/quickstart-text.md
-+ Last updated 04/06/2023
cognitive-services Chatgpt Quickstart https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/chatgpt-quickstart.md
-+
cognitive-services Models https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/concepts/models.md
Azure OpenAI provides access to many different models, grouped by family and cap
|--|--| | [GPT-4](#gpt-4-models) | A set of models that improve on GPT-3.5 and can understand as well as generate natural language and code. | | [GPT-3](#gpt-3-models) | A series of models that can understand and generate natural language. This includes the new [ChatGPT model](#chatgpt-gpt-35-turbo). |
-| [DALL-E](#dall-e-models) | A series of models that can generate original images from natural language. |
+| [DALL-E](#dall-e-models-preview) (Preview) | A series of models in preview that can generate original images from natural language. |
| [Codex](#codex-models) | A series of models that can understand and generate code, including translating natural language to code. | | [Embeddings](#embeddings-models) | A set of models that can understand and use embeddings. An embedding is a special format of data representation that can be easily utilized by machine learning models and algorithms. The embedding is an information dense representation of the semantic meaning of a piece of text. Currently, we offer three families of Embeddings models for different functionalities: similarity, text search, and code search. |
The ChatGPT model (gpt-35-turbo) is a language model designed for conversational
To learn more about the ChatGPT model and how to interact with the Chat API check out our [in-depth how-to](../how-to/chatgpt.md).
-### DALL-E models
+### DALL-E models (Preview)
The DALL-E models, currently in preview, generate images from text prompts that the user provides.
cognitive-services Use Your Data https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/concepts/use-your-data.md
There are some caveats about document structure and how it might affect the qual
This will impact the quality of Azure Cognitive Search and the model response.
+## Virtual network support & private link support
+
+Azure OpenAI on your data does not currently support private endpoints.
+ ## Recommended settings Use the following sections to help you configure Azure OpenAI on your data for optimal results.
cognitive-services Dall E Quickstart https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/dall-e-quickstart.md
+
zone_pivot_groups: openai-quickstart-dall-e
[!INCLUDE [Python SDK quickstart](includes/dall-e-python.md)] ::: zone-end-
cognitive-services Switching Endpoints https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/how-to/switching-endpoints.md
description: Learn about the changes you need to make to your code to swap back
-+ Last updated 05/24/2023
for text in inputs:
## Next steps * Learn more about how to work with ChatGPT and the GPT-4 models with [our how-to guide](../how-to/chatgpt.md).
-* For more examples, check out the [Azure OpenAI Samples GitHub repository](https://aka.ms/AOAICodeSamples)
+* For more examples, check out the [Azure OpenAI Samples GitHub repository](https://aka.ms/AOAICodeSamples)
cognitive-services Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/overview.md
Previously updated : 05/15/2023 Last updated : 06/28/2023 recommendations: false keywords:
Azure OpenAI Service provides REST API access to OpenAI's powerful language mode
| Models available | **NEW GPT-4 series** <br> GPT-3 base series <br>**NEW ChatGPT (gpt-35-turbo)**<br> Codex series <br> Embeddings series <br> Learn more in our [Models](./concepts/models.md) page.| | Fine-tuning | Ada <br> Babbage <br> Curie <br> Cushman <br> Davinci <br>**Fine-tuning is currently unavailable to new customers**.| | Price | [Available here](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/) |
-| Virtual network support & private link support | Yes |
+| Virtual network support & private link support | Yes, unless using [Azure OpenAI on your data](./concepts/use-your-data.md). |
| Managed Identity| Yes, via Azure Active Directory | | UI experience | **Azure portal** for account & resource management, <br> **Azure OpenAI Service Studio** for model exploration and fine tuning | | Model regional availability | [Model availability](./concepts/models.md) |
cognitive-services Quickstart https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/quickstart.md
-+
cognitive-services Use Your Data Quickstart https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/use-your-data-quickstart.md
Previously updated : 05/04/2023 Last updated : 06/28/2023 recommendations: false zone_pivot_groups: openai-use-your-data
cognitive-services Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/security-controls-policy.md
Title: Azure Policy Regulatory Compliance controls for Azure Cognitive Services description: Lists Azure Policy Regulatory Compliance controls available for Azure Cognitive Services. These built-in policy definitions provide common approaches to managing the compliance of your Azure resources. Previously updated : 06/12/2023 Last updated : 06/27/2023
communication-services Call Automation Metrics https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/concepts/analytics/logs/call-automation-metrics.md
# Call automation metrics overview
-Azure Communication Services currently provides metrics for all ACS primitives. [Azure Metrics Explorer](../../../../azure-monitor\essentials\metrics-getting-started.md) can be used to plot your own charts, investigate abnormalities in your metric values, and understand your API traffic by using the metrics data that call automation requests emit.
- ## Where to find metrics Primitives in Azure Communication Services emit metrics for API requests. These metrics can be found in the Metrics tab under your Communication Services resource. You can also create permanent dashboards using the workbooks tab under your Communication Services resource.
communication-services Sms Metrics https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/concepts/analytics/sms-metrics.md
Title: SMS metrics definitions for Azure Communication Service
+ Title: SMS metrics definitions for Azure Communication Service
description: This document covers definitions of SMS metrics available in the Azure portal. Previously updated : 06/26/2023 Last updated : 06/23/2023
-# SMS metrics overview
-
-Azure Communication Services currently provides metrics for all ACS primitives. [Azure Metrics Explorer](../../../azure-monitor\essentials\metrics-getting-started.md) can be used to plot your own charts, investigate abnormalities in your metric values, and understand your API traffic by using the metrics data that Chat and SMS requests emit.
+# SMS metrics overview
+Azure Communication Services currently provides metrics for all ACS primitives. [Azure Metrics Explorer](../../../azure-monitor\essentials\metrics-getting-started.md) can be used to plot your own charts, investigate abnormalities in your metric values, and understand your API traffic by using the metrics data that SMS requests emit.
## Where to find metrics Primitives in Azure Communication Services emit metrics for API requests. These metrics can be found in the Metrics tab under your Communication Services resource. You can also create permanent dashboards using the workbooks tab under your Communication Services resource.
More information on supported aggregation types and time series aggregations can
- **Operation** - All operations or routes that can be called on the Azure Communication Services Chat gateway. - **Status Code** - The status code response sent after the request. - **StatusSubClass** - The status code series sent after the response. --
+
### SMS API requests The following operations are available on SMS API request metrics:
The following operations are available on SMS API request metrics:
| SMSMessagesReceived | Gets SMS messages. |
communication-services Turn Metrics https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/concepts/analytics/turn-metrics.md
+
+ Title: TURN metrics definitions for Azure Communication Services
+
+description: This document covers definitions of TURN metrics available in the Azure portal.
++++ Last updated : 06/26/2023++++
+# TURN metrics overview
+
+Azure Communication Services currently provides metrics for all Azure communication services' primitives. [Azure Metrics Explorer](../../../azure-monitor\essentials\metrics-getting-started.md) can be used to plot your own charts, investigate abnormalities in your metric values, and understand your API traffic by using the metrics data that TURN requests emit.
+
+## Where to find metrics
+
+Primitives in Azure Communication Services emit metrics for API requests. These metrics can be found in the Metrics tab under your Communication Services resource. You can also create permanent dashboards using the workbooks tab under your Communication Services resource.
+
+## Metric definitions
+
+All API request metrics contain three dimensions that you can use to filter your metrics data. These dimensions can be aggregated together using the `Count` aggregation type and support all standard Azure Aggregation time series including `Sum`, `Average`, `Min`, and `Max`.
+
+More information on supported aggregation types and time series aggregations can be found [Advanced features of Azure Metrics Explorer](../../../azure-monitor/essentials/metrics-charts.md#aggregation).
+
+- **Operation** - All operations or routes that can be called on the Azure Communication Services Chat gateway.
+- **Status Code** - The status code response sent after the request.
+- **StatusSubClass** - The status code series sent after the response.
+
+### Network Traversal API requests
+
+The following operations are available on Network Traversal API request metrics:
+
+| Operation / Route | Description |
+| -- | - |
+| IssueRelayConfiguration | Issue configuration for an STUN/TURN server. |
+
communication-services Monitor Direct Routing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/concepts/telephony/monitoring-troubleshooting-telephony/monitor-direct-routing.md
SBC logs also is a great source of data for troubleshooting. Reach out to your S
## Next steps
-[Troubleshoot direct routing connectivity](./troubleshoot-tls-certificate-sip-options.md)
-[Troubleshoot outbound calling](./troubleshoot-outbound-calls.md)
+- [Troubleshoot direct routing connectivity](./troubleshoot-tls-certificate-sip-options.md)
+- [Troubleshoot outbound calling](./troubleshoot-outbound-calls.md)
communication-services Connect Email Communication Resource https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/quickstarts/email/connect-email-communication-resource.md
Last updated 03/31/2023 + zone_pivot_groups: acs-js-csharp-java-python-portal-rest # Quickstart: How to connect a verified email domain with Azure Communication Service resource
communication-services Meeting Interop Features File Attachment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/tutorials/chat-interop/meeting-interop-features-file-attachment.md
Last updated 05/15/2023
-+ # Tutorial: Enable file attachment support in your Chat app
communications-gateway Deploy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communications-gateway/deploy.md
To enable the application, add the Application ID of the system-assigned managed
Microsoft Teams only sends traffic to domains that you've confirmed that you own. Your Azure Communications Gateway deployment automatically receives an autogenerated fully qualified domain name (FQDN). You need to add this domain name to your Active Directory tenant as a custom domain name, share the details with your onboarding team and then verify the domain name. This process confirms that you own the domain.
-1. Navigate to your Azure Communications Gateway resource and select **Properties**. Find the field named **Domain name**. This name is your deployment's domain name.
+1. Navigate to the **Overview** of your Azure Communications Gateway resource and select **Properties**. Find the field named **Domain**. This name is your deployment's domain name.
1. Complete the following procedure: [Add your custom domain name to Azure AD](../active-directory/fundamentals/add-custom-domain.md#add-your-custom-domain-name-to-azure-ad). 1. Share your DNS TXT record information with your onboarding team. Wait for your onboarding team to confirm that the DNS TXT record has been configured correctly. 1. Complete the following procedure: [Verify your custom domain name](../active-directory/fundamentals/add-custom-domain.md#verify-your-custom-domain-name).
container-apps Blue Green Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/blue-green-deployment.md
The following example shows how the `traffic` section is configured after this s
{ "traffic": [ {
- "revisionName": "<APP_NAME>--c6f1515",
+ "revisionName": "<APP_NAME>--fb699ef",
"weight": 0, "label": "blue" }, {
- "revisionName": "<APP_NAME>--fb699ef",
+ "revisionName": "<APP_NAME>--c6f1515",
"weight": 100, "label": "green" }
container-apps Connect Services https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/connect-services.md
description: Connect a service in development and then promote to production in
+ Last updated 06/13/2023
container-apps Cors https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/cors.md
description: Learn how to configure your static web app to allow cross origin re
+ Last updated 04/21/2023
container-apps Custom Domains Managed Certificates https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/custom-domains-managed-certificates.md
description: Learn to configure custom domain names and managed certificates in
-+ Last updated 04/02/2023
container-apps Health Probes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/health-probes.md
The following example demonstrates how to configure the liveness and readiness p
"port": 80 }, "timeoutSeconds": 5
- }
+ }]
``` ## Next steps
container-apps Jobs Get Started Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/jobs-get-started-cli.md
description: Learn to create an on-demand or scheduled job in Azure Container Ap
-+ Last updated 05/08/2023
container-apps Tutorial Event Driven Jobs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/tutorial-event-driven-jobs.md
description: Learn to create a job that processes queue messages with Azure Cont
-+ Last updated 05/05/2023
container-apps Workload Profiles Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/workload-profiles-overview.md
You can configure each of your apps to run on any of the workload profiles defin
## Supported regions
-The following regions support workload profiles during preview:
+All regions are supported except for the following regions that are not supported during preview:
-- North Central US-- North Europe-- West Europe-- East US
+- West US 2
+- Central US
+- UAE North
+- Germany West Central
## Profile types
There are different types and sizes of workload profiles available by region. By
| Dedicated-D4 | D4 | 4 | 16 | General purpose | per node | | Dedicated-D8 | D8 | 8 | 32 | General purpose | per node | | Dedicated-D16 | D16 | 16 | 64 | General purpose | per node |
+| Dedicated-D32 | D32 | 32 | 128 | General purpose | per node |
| Dedicated-E4 | E4 | 4 | 32 | Memory optimized | per node | | Dedicated-E8 | E8 | 8 | 64 | Memory optimized | per node | | Dedicated-E16 | E16 | 16 | 128 | Memory optimized | per node |
+| Dedicated-E32 | E32 | 32 | 256 | Memory optimized | per node |
Select a workload profile and use the *Name* field when you run `az containerapp env workload-profile set` for the `--workload-profile-type` option.
When using workload profiles in the Consumption + Dedicated plan structure, addi
## Next steps > [!div class="nextstepaction"]
-> [Manage workload profiles with the CLI](workload-profiles-manage-cli.md)
+> [Manage workload profiles with the CLI](workload-profiles-manage-cli.md)
container-instances Container Instances Container Group Ssl https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-instances/container-instances-container-group-ssl.md
description: Create an SSL or TLS endpoint for a container group running in Azur
+ Last updated 06/17/2022
container-instances Container Instances Egress Ip Address https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-instances/container-instances-egress-ip-address.md
description: Configure Azure firewall and user-defined routes for Azure Containe
+ Last updated 05/03/2022
container-instances Container Instances Encrypt Data https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-instances/container-instances-encrypt-data.md
+ Last updated 06/17/2022
container-instances Container Instances Nat Gateway https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-instances/container-instances-nat-gateway.md
description: Configure NAT gateway for Azure Container Instances workloads that
+ Last updated 05/03/2022
container-instances Container Instances Tutorial Deploy Spot Containers Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-instances/container-instances-tutorial-deploy-spot-containers-cli.md
+ Last updated 05/11/2023
container-registry Container Registry Tutorial Sign Build Push https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-registry/container-registry-tutorial-sign-build-push.md
Otherwise create an x509 self-signed certificate storing it in AKV for remote si
The trust policy is a JSON document named `trustpolicy.json`, which is stored under the notation configuration directory. Users who verify signed artifacts from a registry use the trust policy to specify trusted identities that sign the artifacts, and the level of signature verification to use.
- Use the following command to configure trust policy. Upon successful execution of the command, one trust policy named `wabbit-networks-images` is created. This trust policy applies to all the artifacts stored in repositories defined in `$REGISTRY/$REPO`. The trust identity that user trusts has the x509 subject `$CERT_SUBJECT` from previous step, and stored under trust store named `$STORE_NAME` of type `$STORE_TYPE`. See [Trust store and trust policy specification](https://notaryproject.dev/docs/concepts/trust-store-trust-policy-specification/) for details.
+ Use the following command to configure trust policy. Upon successful execution of the command, one trust policy named `wabbit-networks-images` is created. This trust policy applies to all the artifacts stored in repositories defined in `$REGISTRY/$REPO`. The trust identity that user trusts has the x509 subject `$CERT_SUBJECT` from previous step, and stored under trust store named `$STORE_NAME` of type `$STORE_TYPE`. See [Trust store and trust policy specification](https://github.com/notaryproject/notaryproject/blob/main/specs/trust-store-trust-policy.md) for details.
```bash cat <<EOF > ./trustpolicy.json
container-registry Data Loss Prevention https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-registry/data-loss-prevention.md
Title: Disable export of artifacts description: Set a registry property to prevent data exfiltration from a Premium Azure container registry. + Last updated 10/11/2022
container-registry Manual Regional Move https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-registry/manual-regional-move.md
Title: Move Azure container registry to another region description: Manually move Azure container registry settings and data to another Azure region. + Last updated 10/11/2022
After you have successfully deployed the target registry, migrated content, and
## Next steps * Learn more about [importing container images](container-registry-import-images.md) to an Azure container registry from a public registry or another private registry.
-* See the [Resource Manager template reference](/azure/templates/microsoft.containerregistry/registries) for Azure Container Registry.
+* See the [Resource Manager template reference](/azure/templates/microsoft.containerregistry/registries) for Azure Container Registry.
container-registry Quickstart Connected Registry Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-registry/quickstart-connected-registry-portal.md
Last updated 10/11/2022 -+ # Quickstart: Create a connected registry using the Azure portal
container-registry Security Controls Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-registry/security-controls-policy.md
description: Lists Azure Policy Regulatory Compliance controls available for Azu
Previously updated : 06/12/2023 Last updated : 06/27/2023
cosmos-db Cmk Troubleshooting Guide https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/cmk-troubleshooting-guide.md
+
+ Title: Troubleshooting guide for customer-managed keys
+
+description: This document is meant to serve as a troubleshooting guide for Cosmos DB CMK accounts that have gone into revoked state
+++ Last updated : 06/07/2023++
+ms.devlang: azurecli
++
+# Troubleshooting Revocation Scenarios for your Customer-Managed Keys Configured Azure Cosmos DB account
++
+Data stored in your Azure Cosmos DB account is automatically and seamlessly encrypted with keys that the customer manages as a second layer of encryption. When the Azure Cosmos DB account can no longer access the Azure Key Vault key per the Azure Cosmos DB account setting (see _KeyVaultKeyUri_), the account goes into revoke state. In this state, the only operations allowed are account updates that refresh the current assigned default identity or account deletion. Data plane operations like reading or writing documents are restricted.
+
+This troubleshooting guide shows you how to restore access when running into the most common errors with Customer managed keys. Check either the error message received each time a restricted operation is performed or by reading the _CmkError_ property on your Azure Cosmos DB account.
+
+## Default Identity is unauthorized to access the Azure Key Vault key
+
+### Reason for error?
+
+You see the error when the default identity associated with the Azure Cosmos DB account is no longer authorized to perform either a get, a wrap or unwrap call to the Key Vault.
+
+### Troubleshooting
+
+When using access policies, verify that the get, wrap, and unwrap permissions on your Key Vault are assigned to the identity set as the default identity for the respective Azure Cosmos DB account.
+
+In case you're using RBAC, verify that the "Key Vault Crypto Service Encryption User" role to the default identity is assigned.
+
+Another option is to create a new identity with [the expected permission](./how-to-setup-customer-managed-keys.md) and set it as the new default identity via the Azure Cosmos DB account update operation.
+
+After assigning the permissions, wait upwards to one hour for the account to stop being in revoke state. If the issue isn't resolved after more than two hours, contact customer service.
+
+## Azure Active Directory Token Acquisition error
+
+### Reason for error?
+
+You see this error when Azure Cosmos DB is unable to obtain the default's identity Microsoft Azure Active Directory access token. The token is used for communicating with the Azure Key Vault in order to wrap and unwrap the data encryption key.
+
+### Troubleshooting
+
+Make sure that the current default identity assigned to the Azure Cosmos DB account is that of an existing Azure resource with all the correspondent permissions to access the Azure Key Vault.
+
+A troubleshooting solution, for example, would be to create a new identity with [the expected permission](./how-to-setup-customer-managed-keys.md) and set it as the new default identity via the Azure Cosmos DB account update operation.
+
+After updating the account's default identity, you need to wait upwards to one hour for the account to stop being in revoke state. If the issue isn't resolved after more than two hours, contact customer service.
+
+## Customer Managed Key does not exist
+
+### Reason for error?
+
+You see this error when the customer managed key isn't found on the specified Azure Key Vault.
+
+### Troubleshooting
+
+Check if the Azure Key Vault or the specified key exist and restore them if accidentally got deleted, then wait for one hour. If the issue isn't resolved after more than 2 hours, contact customer service.
+
+## Invalid Azure Cosmos DB default identity
+
+### Reason for error?
+
+The Azure Cosmos DB account goes into revoke state if it doesn't have any of these identity types set as a default identity:
+
+- FirstPartyIdentity
+- SystemAssignedIdentity
+- UserAssignedIdentity
+- DelegatedSystemAssignedIdentity
+- DelegatedUserAssignedIdentity
+
+### Troubleshooting
+
+Make sure that your default identity is that of a valid Azure resource and has all of [the expected permission](./how-to-setup-customer-managed-keys.md) to access the Azure Key Vault. Once the permissions have been assigned, wait upwards to one hour for the account to stop being in revoke state. If the issue isn't resolved after more than two hours, contact customer service.
+
+## Improper Syntax Detected on the Key Vault URI Property
+
+### Reason for error?
+
+You see this error when internal validation detects that the Key Vault URI property on the Azure Cosmos DB account is different than expected.
+
+### Troubleshooting
+
+You need to update your account's _KeyVaultkeyUri_ property to a valid Key Vault key URI. An example of a valid Azure Key Vault's key Uri would be: "https://ContosoKeyVault.vault.azure.net/keys". It's important to mention that including the version of the key isn't needed.
+
+Once the _KeyVaultKeyUri_ property has been updated, wait upwards to one hour for the account to stop being in revoke state. If the issue isn't resolved after more than two hours, contact customer service.
+
+## Internal unwrapping procedure error
+
+### Reason for error?
+
+You see the error message when the Azure Cosmos DB service is unable to unwrap the key properly.
+
+### Troubleshooting
+
+In case that either the Key Vault or the Costumer Managed Key has been recently deleted; restore the resource and wait for one hour. If the issue isn't resolved after more than 2 hours, contact customer service.
+
+## Unable to Resolve the Key Vault's DNS
+
+### Reason for error?
+
+You see the error message when the Key Vault DNS name can't be resolved. The error may indicate that there's a major issue within the Azure Key Vault service that blocks Cosmos DB from accessing your key.
+
+### Troubleshooting
+
+If the Key Vault has been recently deleted, you need to restore it. If not, wait upwards of two hours for the account to become available again. If none of these solutions unblock the account, contact customer service.
cosmos-db How To Restore In Account Continuous Backup https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/how-to-restore-in-account-continuous-backup.md
-+ Last updated 05/08/2023 zone_pivot_groups: azure-cosmos-db-apis-nosql-mongodb-gremlin-table
cosmos-db Migrate Passwordless https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/migrate-passwordless.md
Last updated 06/01/2023 -+ # Migrate an application to use passwordless connections with Azure Cosmos DB for NoSQL
cosmos-db Abs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/abs.md
Title: ABS in Azure Cosmos DB query language
-description: Learn about how the Absolute(ABS) SQL system function in Azure Cosmos DB returns the positive value of the specified numeric expression
-
+ Title: ABS
+
+description: An Azure Cosmos DB for NoSQL system function that returns the positive value of the specified numeric expression
+++ - Previously updated : 03/04/2020--+ Last updated : 07/01/2023+
-# ABS (Azure Cosmos DB)
+
+# ABS (NoSQL query)
+ [!INCLUDE[NoSQL](../../includes/appliesto-nosql.md)]
- Returns the absolute (positive) value of the specified numeric expression.
+Returns the absolute (positive) value of the specified numeric expression.
## Syntax ```sql
-ABS (<numeric_expr>)
+ABS(<numeric_expr>)
``` ## Arguments
-
-*numeric_expr*
- Is a numeric expression.
+
+| | Description |
+| | |
+| **`numeric_expr`** | A numeric expression. |
## Return types
- Returns a numeric expression.
+Returns a numeric expression.
## Examples
- The following example shows the results of using the `ABS` function on three different numbers.
+The following example shows the results of using this function on three different numbers.
```sql
-SELECT ABS(-1) AS abs1, ABS(0) AS abs2, ABS(1) AS abs3
+SELECT VALUE {
+ absoluteNegativeOne: ABS(-1),
+ absoluteZero: ABS(0),
+ absoluteOne: ABS(1)
+}
```
- Here is the result set.
-
```json
-[{abs1: 1, abs2: 0, abs3: 1}]
+[
+ {
+ "absoluteNegativeOne": 1,
+ "absoluteZero": 0,
+ "absoluteOne": 1
+ }
+]
``` ## Remarks
-This system function will benefit from a [range index](../../index-policy.md#includeexclude-strategy).
+- This function benefits from the use of a [range index](../../index-policy.md#includeexclude-strategy).
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)-- [Introduction to Azure Cosmos DB](../../introduction.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
+- [`IS_NUMBER`](is-number.md)
cosmos-db Acos https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/acos.md
This system function won't utilize the index.
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Aggregate Avg https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-avg.md
This system function will benefit from a [range index](../../index-policy.md#inc
## Next steps -- [Mathematical functions in Azure Cosmos DB](mathematical-functions.md)-- [System functions in Azure Cosmos DB](system-functions.md)
+- [System functions in Azure Cosmos DB](system-functions.yml)
- [Aggregate functions in Azure Cosmos DB](aggregate-functions.md)
cosmos-db Aggregate Count https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-count.md
This system function will benefit from a [range index](../../index-policy.md#inc
## Next steps -- [Mathematical functions in Azure Cosmos DB](mathematical-functions.md)-- [System functions in Azure Cosmos DB](system-functions.md)
+- [System functions in Azure Cosmos DB](system-functions.yml)
- [Aggregate functions in Azure Cosmos DB](aggregate-functions.md)
cosmos-db Aggregate Functions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-functions.md
These aggregate system functions will benefit from a [range index](../../index-p
## Next steps - [Introduction to Azure Cosmos DB](../../introduction.md)-- [System functions](system-functions.md)
+- [System functions](system-functions.yml)
- [User defined functions](udfs.md)
cosmos-db Aggregate Max https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-max.md
When comparing different types data, the following priority order is used (in de
## Next steps -- [Mathematical functions in Azure Cosmos DB](mathematical-functions.md)-- [System functions in Azure Cosmos DB](system-functions.md)
+- [System functions in Azure Cosmos DB](system-functions.yml)
- [Aggregate functions in Azure Cosmos DB](aggregate-functions.md)
cosmos-db Aggregate Min https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-min.md
When comparing different types data, the following priority order is used (in as
## Next steps -- [Mathematical functions in Azure Cosmos DB](mathematical-functions.md)-- [System functions in Azure Cosmos DB](system-functions.md)
+- [System functions in Azure Cosmos DB](system-functions.yml)
- [Aggregate functions in Azure Cosmos DB](aggregate-functions.md)
cosmos-db Aggregate Sum https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/aggregate-sum.md
This system function will benefit from a [range index](../../index-policy.md#inc
## Next steps -- [Mathematical functions in Azure Cosmos DB](mathematical-functions.md)-- [System functions in Azure Cosmos DB](system-functions.md)
+- [System functions in Azure Cosmos DB](system-functions.yml)
- [Aggregate functions in Azure Cosmos DB](aggregate-functions.md)
cosmos-db Array Concat https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/array-concat.md
This system function will not utilize the index.
## Next steps -- [Array functions Azure Cosmos DB](array-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Array Contains https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/array-contains.md
Title: ARRAY_CONTAINS in Azure Cosmos DB query language
-description: Learn about how the Array Contains SQL system function in Azure Cosmos DB returns a Boolean indicating whether the array contains the specified value
-
+ Title: ARRAY_CONTAINS
+
+description: An Azure Cosmos DB for NoSQL system function that returns a boolean indicating whether the array contains the specified value
+++ - Previously updated : 09/13/2019--+ Last updated : 07/01/2023+
-# ARRAY_CONTAINS (Azure Cosmos DB)
+
+# ARRAY_CONTAINS (NoSQL query)
+ [!INCLUDE[NoSQL](../../includes/appliesto-nosql.md)]
-Returns a Boolean indicating whether the array contains the specified value. You can check for a partial or full match of an object by using a boolean expression within the command.
+Returns a boolean indicating whether the array contains the specified value. You can check for a partial or full match of an object by using a boolean expression within the function.
## Syntax ```sql
-ARRAY_CONTAINS (<arr_expr>, <expr> [, bool_expr])
+ARRAY_CONTAINS (<array_expr>, <expr> [, <bool_expr>])
``` ## Arguments
-*arr_expr*
- Is the array expression to be searched.
-
-*expr*
- Is the expression to be found.
-
-*bool_expr*
- Is a boolean expression. If it evaluates to 'true' and if the specified search value is an object, the command checks for a partial match (the search object is a subset of one of the objects). If it evaluates to 'false', the command checks for a full match of all objects within the array. The default value if not specified is false.
+| | Description |
+| | |
+| **`arr_expr`** | An array expression. |
+| **`expr`** | Expression to search for within the array. |
+| **`bool_expr`** | A boolean expression indicating whether the search should check for a partial match (`true`) or a full match (`false`). If not specified, the default value is `false`. |
## Return types
- Returns a Boolean value.
+Returns a boolean value.
## Examples
- The following example how to check for membership in an array using `ARRAY_CONTAINS`.
+The following example illustrates how to check for specific values or objects in an array using this function.
```sql
-SELECT
- ARRAY_CONTAINS(["apples", "strawberries", "bananas"], "apples") AS b1,
- ARRAY_CONTAINS(["apples", "strawberries", "bananas"], "mangoes") AS b2
-```
-
- Here is the result set.
-
-```json
-[{"b1": true, "b2": false}]
-```
-
-The following example how to check for a partial match of a JSON in an array using ARRAY_CONTAINS.
-
-```sql
-SELECT
- ARRAY_CONTAINS([{"name": "apples", "fresh": true}, {"name": "strawberries", "fresh": true}], {"name": "apples"}, true) AS b1,
- ARRAY_CONTAINS([{"name": "apples", "fresh": true}, {"name": "strawberries", "fresh": true}], {"name": "apples"}) AS b2,
- ARRAY_CONTAINS([{"name": "apples", "fresh": true}, {"name": "strawberries", "fresh": true}], {"name": "mangoes"}, true) AS b3
-```
-
- Here is the result set.
+SELECT VALUE {
+ containsItem: ARRAY_CONTAINS(["coats", "jackets", "sweatshirts"], "coats"),
+ missingItem: ARRAY_CONTAINS(["coats", "jackets", "sweatshirts"], "hoodies"),
+ containsFullMatchObject: ARRAY_CONTAINS([{ category: "shirts", color: "blue" }], { category: "shirts", color: "blue" }),
+ missingFullMatchObject: ARRAY_CONTAINS([{ category: "shirts", color: "blue" }], { category: "shirts" }),
+ containsPartialMatchObject: ARRAY_CONTAINS([{ category: "shirts", color: "blue" }], { category: "shirts" }, true),
+ missingPartialMatchObject: ARRAY_CONTAINS([{ category: "shirts", color: "blue" }], { category: "shorts", color: "blue" }, true)
+}
+```
```json
-[{
- "b1": true,
- "b2": false,
- "b3": false
-}]
+[
+ {
+ "containsItem": true,
+ "missingItem": false,
+ "containsFullMatchObject": true,
+ "missingFullMatchObject": false,
+ "containsPartialMatchObject": true,
+ "missingPartialMatchObject": false
+ }
+]
``` ## Remarks
-This system function will benefit from a [range index](../../index-policy.md#includeexclude-strategy).
+- This system function benefits from a [range index](../../index-policy.md#includeexclude-strategy).
## Next steps -- [Array functions Azure Cosmos DB](array-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)-- [Introduction to Azure Cosmos DB](../../introduction.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
+- [`ARRAY_CONCAT`](array-concat.md)
cosmos-db Array Functions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/array-functions.md
- Title: Array functions in Azure Cosmos DB query language
-description: Learn about how the array functions let you perform operations on arrays in Azure Cosmos DB
---- Previously updated : 09/13/2019---
-# Array functions (Azure Cosmos DB)
-
-The array functions let you perform operations on arrays in Azure Cosmos DB.
-
-## Functions
-
-The following scalar functions perform an operation on an array input value and return numeric, boolean or array value:
-
-* [ARRAY_CONCAT](array-concat.md)
-* [ARRAY_CONTAINS](array-contains.md)
-* [ARRAY_LENGTH](array-length.md)
-* [ARRAY_SLICE](array-slice.md)
--
-
-
-
-## Next steps
--- [System functions Azure Cosmos DB](system-functions.md)-- [Introduction to Azure Cosmos DB](../../introduction.md)-- [User Defined Functions](udfs.md)-- [Aggregates](aggregate-functions.md)
cosmos-db Array Length https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/array-length.md
Title: ARRAY_LENGTH in Azure Cosmos DB query language
-description: Learn about how the Array length SQL system function in Azure Cosmos DB returns the number of elements of the specified array expression
-
+ Title: ARRAY_LENGTH
+
+description: An Azure Cosmos DB for NoSQL system function that returns the number of items in an array.
+++ - Previously updated : 03/03/2020--+ Last updated : 07/01/2023+
-# ARRAY_LENGTH (Azure Cosmos DB)
+
+# ARRAY_LENGTH (NoSQL query)
+ [!INCLUDE[NoSQL](../../includes/appliesto-nosql.md)]
- Returns the number of elements of the specified array expression.
+Returns the number of elements in the specified array expression.
## Syntax ```sql
-ARRAY_LENGTH(<arr_expr>)
+ARRAY_LENGTH(<array_expr>)
```
-
+ ## Arguments
-
-*arr_expr*
- Is an array expression.
-
+
+| | Description |
+| | |
+| **`array_expr`** | An array expression. |
+ ## Return types
-
- Returns a numeric expression.
-
+
+Returns a numeric expression.
+ ## Examples
- The following example how to get the length of an array using `ARRAY_LENGTH`.
-
+The following example illustrates how to get the length of an array using the function.
+ ```sql
-SELECT ARRAY_LENGTH(["apples", "strawberries", "bananas"]) AS len
-```
-
- Here is the result set.
-
+SELECT VALUE {
+ length: ARRAY_LENGTH([70, 86, 92, 99, 85, 90, 82]),
+ emptyLength: ARRAY_LENGTH([]),
+ nullLength: ARRAY_LENGTH(null)
+}
+```
+ ```json
-[{"len": 3}]
+[
+ {
+ "length": 7,
+ "emptyLength": 0
+ }
+]
```
-
+ ## Remarks
-This system function will not utilize the index.
+- This system function doesn't use the index.
## Next steps -- [Array functions Azure Cosmos DB](array-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)-- [Introduction to Azure Cosmos DB](../../introduction.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
+- [`ARRAY_SLICE`](array-slice.md)
cosmos-db Array Slice https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/array-slice.md
Title: ARRAY_SLICE in Azure Cosmos DB query language
-description: Learn about how the Array slice SQL system function in Azure Cosmos DB returns part of an array expression
-
+ Title: ARRAY_SLICE
+
+description: An Azure Cosmos DB for NoSQL system function that returns a subset of the items in an array.
+++ - Previously updated : 03/03/2020--+ Last updated : 07/01/2023+
-# ARRAY_SLICE (Azure Cosmos DB)
+
+# ARRAY_SLICE (NoSQL query)
+ [!INCLUDE[NoSQL](../../includes/appliesto-nosql.md)]
- Returns part of an array expression.
+Returns a subset of an array expression using the index and length specified.
## Syntax ```sql
-ARRAY_SLICE (<arr_expr>, <num_expr> [, <num_expr>])
+ARRAY_SLICE(<array_expr>, <numeric_expr_1> [, <numeric_expr_2>])
``` ## Arguments
-
-*arr_expr*
- Is any array expression.
-
-*num_expr*
- Zero-based numeric index at which to begin the array. Negative values may be used to specify the starting index relative to the last element of the array i.e. -1 references the last element in the array.
-*num_expr*
- Optional numeric expression that sets the maximum number of elements in the resulting array.
+| | Description |
+| | |
+| **`array_expr`** | An array expression. |
+| **`numeric_expr_1`** | A numeric expression indicating the index where to begin the array for the subset. Optionally, negative values can be used to specify the starting index relative to the last element of the array. |
+| **`numeric_expr_2` *(Optional)*** | An optional numeric expression indicating the maximum length of elements in the resulting array. |
## Return types
-
- Returns an array expression.
-
+
+Returns an array expression.
+ ## Examples
- The following example shows how to get different slices of an array using `ARRAY_SLICE`.
+The following example shows how to get different slices of an array using the function.
```sql
-SELECT
- ARRAY_SLICE(["apples", "strawberries", "bananas"], 1) AS s1,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], 1, 1) AS s2,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], -2, 1) AS s3,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], -2, 2) AS s4,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], 1, 0) AS s5,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], 1, 1000) AS s6,
- ARRAY_SLICE(["apples", "strawberries", "bananas"], 1, -100) AS s7
-
-```
-
- Here is the result set.
-
+SELECT VALUE {
+ sliceFromStart: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], 0),
+ sliceFromSecond: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], 1),
+ sliceFromLast: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], -1),
+ sliceFromSecondToLast: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], -2),
+ sliceThreeFromStart: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], 0, 3),
+ sliceTwelveFromStart: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], 0, 12),
+ sliceFiveFromThird: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], 3, 5),
+ sliceOneFromSecondToLast: ARRAY_SLICE([70, 86, 92, 99, 85, 90, 82], -2, 1)
+}
+```
+ ```json
-[{
- "s1": ["strawberries", "bananas"],
- "s2": ["strawberries"],
- "s3": ["strawberries"],
- "s4": ["strawberries", "bananas"],
- "s5": [],
- "s6": ["strawberries", "bananas"],
- "s7": []
-}]
+[
+ {
+ "sliceFromStart": [70, 86, 92, 99, 85, 90, 82],
+ "sliceFromSecond": [86, 92, 99, 85, 90, 82],
+ "sliceFromLast": [82],
+ "sliceFromSecondToLast": [90, 82],
+ "sliceThreeFromStart": [70, 86, 92],
+ "sliceTwelveFromStart": [70, 86, 92, 99, 85, 90, 82],
+ "sliceFiveFromThird": [99, 85, 90, 82],
+ "sliceOneFromSecondToLast": [90]
+ }
+]
``` ## Remarks
-This system function will not utilize the index.
+- This system function doesn't use the index.
## Next steps -- [Array functions Azure Cosmos DB](array-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)-- [Introduction to Azure Cosmos DB](../../introduction.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
+- [`ARRAY_LENGTH`](array-length.md)
cosmos-db Asin https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/asin.md
This system function will not utilize the index.
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Atan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/atan.md
This system function won't utilize the index.
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Atn2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/atn2.md
This system function will not utilize the index.
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Ceiling https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/ceiling.md
Title: CEILING in Azure Cosmos DB query language
-description: Learn about how the CEILING SQL system function in Azure Cosmos DB returns the smallest integer value greater than, or equal to, the specified numeric expression.
-
+ Title: CEILING
+
+description: An Azure Cosmos DB for NoSQL system function that returns the smallest integer value greater than or equal to the specified numeric expression.
+++ - Previously updated : 09/13/2019--+ Last updated : 07/01/2023+
-# CEILING (Azure Cosmos DB)
+
+# CEILING (NoSQL query)
+ [!INCLUDE[NoSQL](../../includes/appliesto-nosql.md)]
- Returns the smallest integer value greater than, or equal to, the specified numeric expression.
+Returns the smallest integer value greater than or equal to the specified numeric expression.
## Syntax ```sql
-CEILING (<numeric_expr>)
-```
-
+CEILING(<numeric_expr>)
+```
+ ## Arguments
-
-*numeric_expr*
- Is a numeric expression.
-
+
+| | Description |
+| | |
+| **`numeric_expr`** | A numeric expression. |
+ ## Return types
-
- Returns a numeric expression.
+
+Returns a numeric expression.
## Examples
-
- The following example shows positive numeric, negative, and zero values with the `CEILING` function.
-
+
+The following example shows positive numeric, negative, and zero values evaluated with this function.
+ ```sql
-SELECT CEILING(123.45) AS c1, CEILING(-123.45) AS c2, CEILING(0.0) AS c3
-```
-
- Here is the result set.
-
+SELECT VALUE {
+ ceilingPostiveNumber: CEILING(62.6),
+ ceilingNegativeNumber: CEILING(-145.12),
+ ceilingSmallNumber: CEILING(0.2989),
+ ceilingZero: CEILING(0.0),
+ ceilingNull: CEILING(null)
+}
+```
+ ```json
-[{c1: 124, c2: -123, c3: 0}]
-```
+[
+ {
+ "ceilingPostiveNumber": 63,
+ "ceilingNegativeNumber": -145,
+ "ceilingSmallNumber": 1,
+ "ceilingZero": 0
+ }
+]
+```
## Remarks
-This system function will benefit from a [range index](../../index-policy.md#includeexclude-strategy).
+- This system function benefits from a [range index](../../index-policy.md#includeexclude-strategy).
## Next steps -- [Mathematical functions Azure Cosmos DB](mathematical-functions.md)-- [System functions Azure Cosmos DB](system-functions.md)
+- [System functions Azure Cosmos DB](system-functions.yml)
- [Introduction to Azure Cosmos DB](../../introduction.md)
cosmos-db Choose https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/nosql/query/choose.md
+
+ Title: CHOOSE
+
+description: An Azure Cosmos DB for NoSQL system function that returns the expression at the specified index of a list.
++++++ Last updated : 07/01/2023+++
+# CHOOSE (NoSQL query)
+
+Returns the expression at the specified index of a list, or Undefined if the index exceeds the bounds of the list\.
+
+## Syntax
+
+```sql
+CHOOSE(<numeric_expr>, <expr_1> [, <expr_N>])
+```
+
+## Arguments
+
+| | Description |
+| | |
+| **`numeric_expr`** | A numeric expression, which specifies the index used to get a specific expression in the list. The starting index of the list is `1`. |
+| **`expr_1`** | The first e