Updates from: 06/07/2023 01:14:48
Service Microsoft Docs article Related commit history on GitHub Change details
active-directory-b2c Billing https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/billing.md
Previously updated : 03/06/2023 Last updated : 06/06/2023
Your Azure AD B2C tenant must also be linked to the appropriate Azure pricing ti
Azure AD B2C's [Go-Local add-on](data-residency.md#go-local-add-on) enables you to create Azure AD B2C tenant within the country/region you choose when you [create your Azure AD B2C](tutorial-create-tenant.md). *Go-Local* refers to MicrosoftΓÇÖs commitment to allow some customers to configure some services to store their data at rest in the Geo of the customerΓÇÖs choice, typically a country/region. This feature isn't available in all countries/regions. > [!NOTE]
-> If you enable Go-Local add-on , the 50,000 free MAUs per month given by your AD B2C subscription doesn't apply for Go-Local add-on . You'll incur a charge per MAU, on the Go-Local add-on from the first MAU. However, you'll continue to enjoy free 50,000 MAUs per month on the other features available on your Azure AD B2C [Premium P1 or P2 pricing](https://azure.microsoft.com/pricing/details/active-directory-b2c/).
-
+> If you enable Go-Local add-on, the 50,000 free MAUs per month given by your Azure AD B2C subscription doesn't apply for Go-Local add-on. You'll incur a charge per MAU, on the Go-Local add-on from the first MAU. However, you'll continue to enjoy free 50,000 MAUs per month on the other features available on your Azure AD B2C [Premium P1 or P2 pricing](https://azure.microsoft.com/pricing/details/active-directory-b2c/).
## Link an Azure AD B2C tenant to a subscription
active-directory-b2c Custom Policy Developer Notes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/custom-policy-developer-notes.md
Previously updated : 03/06/2023 Last updated : 06/06/2023
The following table summarizes the Security Assertion Markup Language (SAML) app
| Feature | Status | Notes | | - | :--: | -- |
-| [Go-Local add-on](data-residency.md#go-local-add-on) | Preview | Azure AD B2C's [Go-Local add-on](data-residency.md#go-local-add-on) enables you to create Azure AD B2C tenant within the country/region you choose when you [create your Azure AD B2C](tutorial-create-tenant.md). |
+| [Go-Local add-on](data-residency.md#go-local-add-on) | GA | Azure AD B2C's [Go-Local add-on](data-residency.md#go-local-add-on) enables you to create Azure AD B2C tenant within the country/region you choose when you [create your Azure AD B2C](tutorial-create-tenant.md). |
## Responsibilities of custom policy feature-set developers
active-directory-b2c Data Residency https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/data-residency.md
Previously updated : 03/06/2023 Last updated : 06/06/2023
To find the exact location where your data is located per country/country, refer
### Go-Local add-on
-*Go-Local* refers to MicrosoftΓÇÖs commitment to allow some customers to configure some services to store their data at rest in the Geo of the customerΓÇÖs choice, typically a country/region. Go-Local is as way fulfilling corporate policies and compliance requirements. You choose the country/region where you want to store your data when you [create your Azure AD B2C](tutorial-create-tenant.md).
+*Go-Local* refers to MicrosoftΓÇÖs commitment to allow some customers to configure some services to store their data at rest in the Geo of the customerΓÇÖs choice, typically a country/region. Go-Local is as way of fulfilling corporate policies and compliance requirements. You choose the country/region where you want to store your data when you [create your Azure AD B2C](tutorial-create-tenant.md).
-The Go-Local add-on is a paid add-on, but it's optional. If you choose to use it, you'll incur an extra charge in addition to your Azure AD B2C Premium P1 or P2 licenses. See more information in [Billing model](billing.md).
+The Go-Local add-on is a paid add-on, but it's optional. If you choose to use it, you'll incur an extra charge in addition to your Azure AD B2C **Premium P1 or P2** licenses. See more information in [Billing model](billing.md).
At the moment, the following countries/regions have the local data residence option:
At the moment, the following countries/regions have the local data residence opt
#### What do I need to do?
-|If you're in | What to do |
-|-||
-| Australia | If you've an existing Azure AD B2C tenant that you created since **April 2021**, then your data is resident in Australia. You need to opt in to start using Go-Local add-on. <br> If you're creating a new Azure AD B2C tenant, you can enable Go-Local add-on when you create it.|
-| Japan | You can enable Go-Local add-on when you create a new Azure AD B2C tenant. |
--
+If you've an existing Azure AD B2C tenant, you need to opt in to start using Go-Local add-on. If you're creating a new Azure AD B2C tenant, you can enable Go-Local add-on when you create it. Learn how to [create your Azure AD B2C](tutorial-create-tenant.md) tenant.
## EU Data Boundary
active-directory-b2c Tutorial Create Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory-b2c/tutorial-create-tenant.md
Previously updated : 01/20/2023 Last updated : 06/06/2023
Before you create your Azure AD B2C tenant, you need to take the following consi
## Create an Azure AD B2C tenant >[!NOTE]
->If you're unable to create Azure AD B2C tenant, [review your user settings page](tenant-management-check-tenant-creation-permission.md) to ensure that tenant creation isn't switched off. If tenant creation is switched on, ask your _Global Administrator_ to assign you a _Tenant Creator_ role.
+>If you're unable to create Azure AD B2C tenant, [review your user settings page](tenant-management-check-tenant-creation-permission.md) to ensure that tenant creation isn't switched off. If tenant creation is switched on, ask your *Global Administrator* to assign you a **Tenant Creator** role.
1. Sign in to the [Azure portal](https://portal.azure.com/).
active-directory Plan Auto User Provisioning https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-provisioning/plan-auto-user-provisioning.md
Consider your organizational needs to determine the strategy for deploying user
### Engage the right stakeholders
-When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and accountabilities.
+When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure you're engaging the right stakeholders](../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and accountabilities.
### Plan communications
Communication is critical to the success of any new service. Proactively communi
### Plan a pilot
-We recommend that the initial configuration of automatic user provisioning is in a test environment with a small subset of users before scaling it to all users in production. See [best practices](../fundamentals/active-directory-deployment-plans.md#best-practices-for-a-pilot) for running a pilot.
+We recommend that the initial configuration of automatic user provisioning is in a test environment with a small subset of users before scaling it to all users in production. See [best practices](../fundamentals/deployment-plans.md#best-practices-for-a-pilot) for running a pilot.
#### Best practices for a pilot  
active-directory Plan Cloud Hr Provision https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/app-provisioning/plan-cloud-hr-provision.md
Consider your organizational needs while you determine the strategy for this dep
### Engage the right stakeholders
-When technology projects fail, they typically do so owing to mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md). Also make sure that stakeholder roles in the project are well understood. Document the stakeholders and their project input and accountabilities.
+When technology projects fail, they typically do so owing to mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/deployment-plans.md). Also make sure that stakeholder roles in the project are well understood. Document the stakeholders and their project input and accountabilities.
Include a representative from the HR organization who can provide inputs on existing HR business processes and worker identity plus job data-processing requirements.
Communication is critical to the success of any new service. Proactively communi
Integrating HR business processes and identity workflows from the cloud HR app to target systems requires a considerable amount of data validation, data transformation, data cleansing, and end-to-end testing before you can deploy the solution into production.
-Run the initial configuration in a [pilot environment](../fundamentals/active-directory-deployment-plans.md#best-practices-for-a-pilot) before you scale it to all users in production.
+Run the initial configuration in a [pilot environment](../fundamentals/deployment-plans.md#best-practices-for-a-pilot) before you scale it to all users in production.
## Select cloud HR provisioning connector apps
active-directory Concept Authentication Strengths https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/concept-authentication-strengths.md
In external user scenarios, the authentication methods that can satisfy authenti
|SMS as second factor | &#x2705; | &#x2705; | |Voice call | &#x2705; | &#x2705; | |Microsoft Authenticator push notification | &#x2705; | &#x2705; |
-|Microsoft Authenticator phone sign-in | &#x2705; | &#x2705; |
+|Microsoft Authenticator phone sign-in | &#x2705; | |
|OATH software token | &#x2705; | &#x2705; | |OATH hardware token | &#x2705; | | |FIDO2 security key | &#x2705; | |
active-directory How To Migrate Mfa Server To Mfa User Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-migrate-mfa-server-to-mfa-user-authentication.md
For more information about migrating applications to Azure, see [Resources for m
- [Migrate from Microsoft MFA Server to Azure AD MFA (Overview)](how-to-migrate-mfa-server-to-azure-mfa.md) - [Migrate applications from Windows Active Directory to Azure AD](../manage-apps/migrate-application-authentication-to-azure-active-directory.md)-- [Plan your cloud authentication strategy](../fundamentals/active-directory-deployment-plans.md)
+- [Plan your cloud authentication strategy](../fundamentals/deployment-plans.md)
active-directory Howto Authentication Passwordless Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-authentication-passwordless-deployment.md
The wizard will use your inputs to craft a step-by-step plan for you to follow.
## Plan the project
-When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood.
+When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood.
### Plan a pilot
-When you deploy passwordless authentication, you should first enable one or more pilot groups. You can create groups specifically for this purpose. Add the users who will participate in the pilot to the groups. Then, enable new passwordless authentication methods for the selected groups. See [best practices for a pilot](../fundamentals/active-directory-deployment-plans.md).
+When you deploy passwordless authentication, you should first enable one or more pilot groups. You can create groups specifically for this purpose. Add the users who will participate in the pilot to the groups. Then, enable new passwordless authentication methods for the selected groups. See [best practices for a pilot](../fundamentals/deployment-plans.md).
### Plan communications
Select the user row, and then select the **Authentication Details** tab to view
* [Learn how passwordless authentication works](concept-authentication-passwordless.md)
-* [Deploy other identity features](../fundamentals/active-directory-deployment-plans.md)
+* [Deploy other identity features](../fundamentals/deployment-plans.md)
active-directory Howto Authentication Passwordless Security Key Windows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-authentication-passwordless-security-key-windows.md
To enable the use of security keys using Intune, complete the following steps:
Configuration of security keys for sign-in isn't dependent on configuring Windows Hello for Business.
+> [!NOTE]
+> This will not enable security keys on already provisioned devices. In that case use the next method (Targeted Intune deployment)
+ ### Targeted Intune deployment To target specific device groups to enable the credential provider, use the following custom settings via Intune:
active-directory Howto Mfa Getstarted https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-mfa-getstarted.md
For a guided walkthrough of many of the recommendations in this article, see the
## Next steps
-[Deploy other identity features](../fundamentals/active-directory-deployment-plans.md)
+[Deploy other identity features](../fundamentals/deployment-plans.md)
active-directory Howto Sspr Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/howto-sspr-deployment.md
Consider your organizational needs while you determine the strategy for this dep
### Engage the right stakeholders
-When technology projects fail, they typically do so due to mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you are engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and accountabilities.
+When technology projects fail, they typically do so due to mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you are engaging the right stakeholders](../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and accountabilities.
#### Required administrator roles
When technology projects fail, they typically do so due to mismatched expectatio
### Plan a pilot
-We recommend that the initial configuration of SSPR is in a test environment. Start with a pilot group by enabling SSPR for a subset of users in your organization. See [Best practices for a pilot](../fundamentals/active-directory-deployment-plans.md).
+We recommend that the initial configuration of SSPR is in a test environment. Start with a pilot group by enabling SSPR for a subset of users in your organization. See [Best practices for a pilot](../fundamentals/deployment-plans.md).
To create a group, see how to [create a group and add members in Azure Active Directory](../fundamentals/active-directory-groups-create-azure-portal.md).
active-directory Claims Challenge https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/claims-challenge.md
GET https://login.microsoftonline.com/14c2f153-90a7-4689-9db7-9543bf084dad/oauth
&response_mode=form_post &login_hint=kalyan%ccontoso.onmicrosoft.com &domain_hint=organizations
-claims=%7B%22access_token%22%3A%7B%22acrs%22%3A%7B%22essential%22%3Atrue%2C%22value%22%3A%22c1%22%7D%7D%7D
+&claims=%7B%22access_token%22%3A%7B%22acrs%22%3A%7B%22essential%22%3Atrue%2C%22value%22%3A%22c1%22%7D%7D%7D
``` The claims challenge should be passed as a part of all calls to Azure AD's [/authorize](v2-oauth2-auth-code-flow.md#request-an-authorization-code) endpoint until a token is successfully retrieved, after which it is no longer needed.
active-directory Custom Claims Provider Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/custom-claims-provider-reference.md
To develop your own REST API for the token issuance start event, use the followi
Your custom extension in Azure AD makes an HTTP call to your REST API with a JSON payload. The JSON payload contains user profile data, authentication context attributes, and information about the application the user wants to sign-in. The JSON attributes can be used to perform extra logic by your API. The request to your API is in the following format:
-```json
+```http
+POST https://your-api.com/endpoint
+ { "type": "microsoft.graph.authenticationEvent.tokenIssuanceStart", "source": "/tenants/<Your tenant GUID>/applications/<Your Test Application App Id>",
active-directory Plan Device Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/devices/plan-device-deployment.md
Consider your organizational needs while you determine the strategy for this dep
### Engage the right stakeholders
-When technology projects fail, they typically do because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders,](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood.
+When technology projects fail, they typically do because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders,](../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood.
For this plan, add the following stakeholders to your list:
Communication is critical to the success of any new service. Proactively communi
### Plan a pilot
-We recommend that the initial configuration of your integration method is in a test environment, or with a small group of test devices. See [Best practices for a pilot](../fundamentals/active-directory-deployment-plans.md).
+We recommend that the initial configuration of your integration method is in a test environment, or with a small group of test devices. See [Best practices for a pilot](../fundamentals/deployment-plans.md).
You may want to do a [targeted deployment of hybrid Azure AD join](hybrid-azuread-join-control.md) before enabling it across the entire organization.
Review supported and unsupported platforms for integrated devices:
| Device management tools | Azure AD registered | Azure AD joined | Hybrid Azure AD joined | | | :: | :: | :: |
-| [Mobile Device Management (MDM) ](/windows/client-management/mdm/azure-active-directory-integration-with-mdm) <br>Example: Microsoft Intune | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | ![Checkmark for these values.](./media/plan-device-deployment/check.png) |
+| [Mobile Device Management (MDM)](/windows/client-management/mdm/azure-active-directory-integration-with-mdm) <br>Example: Microsoft Intune | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | ![Checkmark for these values.](./media/plan-device-deployment/check.png) |
| [Co-management with Microsoft Intune and Microsoft Configuration Manager](/mem/configmgr/comanage/overview) <br>(Windows 10 or newer) | | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | ![Checkmark for these values.](./media/plan-device-deployment/check.png) | | [Group policy](/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831791(v=ws.11))<br>(Windows only) | | | ![Checkmark for these values.](./media/plan-device-deployment/check.png) |
active-directory Clean Up Unmanaged Accounts https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/clean-up-unmanaged-accounts.md
+
+ Title: Clean up unmanaged Azure Active Directory accounts
+description: Clean up unmanaged accounts using email one-time password and PowerShell modules in Azure AD
++++ Last updated : 05/02/2023++++++++
+# Clean up unmanaged Azure Active Directory accounts
+
+Prior to August 2022, Azure Active Directory B2B (Azure AD B2B) supported self-service sign-up for email-verified users. With this feature, users create Azure AD accounts, when they verify email ownership. These accounts were created in unmanaged (or viral) tenants: users created accounts with an organization domain, not under IT team management. Access persists after users leave the organization.
+
+To learn more, see, [What is self-service sign-up for Azure AD?](./directory-self-service-signup.md)
+
+ > [!NOTE]
+ > Unmanaged Azure AD accounts via Azure AD B2B were deprecated. As of August 2022, new B2B invitations can't be redeemed. However, invitations prior to August 2022 were redeemable with unmanaged Azure AD accounts.
+
+## Remove unmanaged Azure AD accounts
+
+Use the following guidance to remove unmanaged Azure AD accounts from Azure AD tenants. Tool features help identify viral users in the Azure AD tenant. You can reset the user redemption status.
+
+* Use the sample application in [Azure-samples/Remove-unmanaged-guests](https://github.com/Azure-Samples/Remove-Unmanaged-Guests).
+* Use PowerShell cmdlets in [AzureAD/MSIdentityTools](https://github.com/AzureAD/MSIdentityTools/wiki/).
+
+### Redeem invitations
+
+After you run a tool, users with unmanaged Azure AD accounts access the tenant, and re-redeem their invitations. However, Azure AD prevents users from redeeming with an unmanaged Azure AD account. They can redeem with another account type. Google Federation and SAML/WS-Federation aren't enabled by default. Therefore, users redeem with a Microsoft account (MSA) or email one-time password (OTP). MSA is recommended.
+
+Learn more: [Invitation redemption flow](../external-identities/redemption-experience.md#invitation-redemption-flow)
+
+## Overtaken tenants and domains
+
+It's possible to convert some unmanaged tenants to managed tenants.
+
+Learn more: [Take over an unmanaged directory as administrator in Azure AD](./domains-admin-takeover.md)
+
+Some overtaken domains might not be updated. For example, a missing DNS TXT record indicates an unmanaged state. Implications are:
+
+* For guest users from unmanaged tenants, redemption status is reset. A consent prompt appears.
+ * Redemption occurs with same account
+* The tool might identify unmanaged users as false positives after you reset unmanaged user redemption status
+
+## Reset redemption with a sample application
+
+Use the sample application on [Azure-Samples/Remove-Unmanaged-Guests](https://github.com/Azure-Samples/Remove-Unmanaged-Guests).
+
+## Reset redemption using MSIdentityTools PowerShell Module
+
+MSIdentityTools PowerShell Module is a collection of cmdlets and scripts, which you use in the Microsoft identity platform and Azure AD. Use the cmdlets and scripts to augment PowerShell SDK capabilities. See, [microsoftgraph/msgraph-sdk-powershell](https://github.com/microsoftgraph/msgraph-sdk-powershell).
+
+Run the following cmdlets:
+
+* `Install-Module Microsoft.Graph -Scope CurrentUser`
+* `Install-Module MSIdentityTools`
+* `Import-Module msidentitytools,microsoft.graph`
+
+To identify unmanaged Azure AD accounts, run:
+
+* `Connect-MgGraph -Scope User.Read.All`
+* `Get-MsIdUnmanagedExternalUser`
+
+To reset unmanaged Azure AD account redemption status, run:
+
+* `Connect-MgGraph -Scopes User.ReadWriteAll`
+* `Get-MsIdUnmanagedExternalUser | Reset-MsIdExternalUser`
+
+To delete unmanaged Azure AD accounts, run:
+
+* `Connect-MgGraph -Scopes User.ReadWriteAll`
+* `Get-MsIdUnmanagedExternalUser | Remove-MgUser`
+
+## Resource
+
+The following tool returns a list of external unmanaged users, or viral users, in the tenant. </br> See, [Get-MSIdUnmanagedExternalUser](https://github.com/AzureAD/MSIdentityTools/wiki/Get-MsIdUnmanagedExternalUser).
active-directory Licensing Powershell Graph Examples https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/enterprise-users/licensing-powershell-graph-examples.md
++
+ Title: Microsoft Graph PowerShell examples for group licensing
+description: Microsoft Graph PowerShell group based licensing examples
+
+keywords: Azure AD licensing
+documentationcenter: ''
++++++ Last updated : 05/05/2023++++
+# Microsoft Graph PowerShell group-based licensing examples
+
+Group-based licensing in Azure Active Directory (Azure AD), part of Microsoft Entra, is available through the [Azure portal](https://portal.azure.com). There are useful tasks that can be performed using [Microsoft Graph PowerShell Cmdlets](/powershell/microsoftgraph/get-started). In this article, we go over some examples using Microsoft Graph PowerShell.
+
+> [!NOTE]
+> Before you begin running cmdlets, make sure you connect to your organization first, by running the `Connect-MgGraph` cmdlet.
+
+> [!WARNING]
+> These samples are provided for demonstration purposes only. We recommend testing them on a smaller scale or in a separate test environment before relying on them in your production environment. You may also need to modify the samples to meet your specific environment's requirements.
+
+## Assign licenses to a group
+
+[Group based licensing](../fundamentals/active-directory-licensing-whatis-azure-portal.md) provides a convenient way to manage license assignment. You can assign one or more product licenses to a group and those licenses are assigned to all members of the group.
+
+```powershell
+# Import the Microsoft.Graph.Groups module
+Import-Module Microsoft.Graph.Groups
+$groupId = "911f05cf-f635-440c-b888-e54c73e0ef1a"
+
+# Create a hashtable to store the parameters for the Set-MgGroupLicense cmdlet
+$params = @{
+ AddLicenses = @(
+ @{
+ # Remove the DisabledPlans key as we don't need to disable any service plans
+ # Specify the SkuId of the license you want to assign
+ SkuId = "c42b9cae-ea4f-4ab7-9717-81576235ccac"
+ }
+ )
+ # Keep the RemoveLicenses key empty as we don't need to remove any licenses
+ RemoveLicenses = @(
+ )
+}
+
+# Call the Set-MgGroupLicense cmdlet to update the licenses for the specified group
+# Replace $groupId with the actual group ID
+Set-MgGroupLicense -GroupId $groupId -BodyParameter $params
+
+```
+
+## View product licenses assigned to a group
+++
+```powershell
+(Get-MgGroup -GroupId 99c4216a-56de-42c4-a4ac-1111cd8c7c41 -Property "AssignedLicenses" | Select-Object -ExpandProperty AssignedLicenses).SkuId
+
+```
++
+## Get all groups with licenses
++
+```powershell
+# Import the Microsoft.Graph.Groups module
+Import-Module Microsoft.Graph.Groups
+# Get all groups and licenses
+$groups = Get-MgGroup -All
+$groupsWithLicenses = @()
+# Loop through each group and check if it has any licenses assigned
+foreach ($group in $groups) {
+ $licenses = Get-MgGroup -GroupId $group.Id -Property "AssignedLicenses, Id, DisplayName" | Select-Object AssignedLicenses, DisplayName, Id
+ if ($licenses.AssignedLicenses) {
+ $groupData = [PSCustomObject]@{
+ ObjectId = $group.Id
+ DisplayName = $group.DisplayName
+ Licenses = $licenses.AssignedLicenses
+ }
+ $groupsWithLicenses += $groupData
+ }
+}
+
+```
+
+## Get statistics for groups with licenses
++
+```powershell
+# Import User Graph Module
+Import-Module Microsoft.Graph.Users
+# Authenticate to MS Graph
+Connect-MgGraph -Scopes "User.Read.All", "Directory.Read.All", "Group.ReadWrite.All"
+#get all groups with licenses
+$groups = Get-MgGroup -All -Property LicenseProcessingState, DisplayName, Id, AssignedLicenses | Select-Object displayname, Id, LicenseProcessingState, AssignedLicenses | Select-Object DisplayName, Id, AssignedLicenses -ExpandProperty LicenseProcessingState | Select-Object DisplayName, State, Id, AssignedLicenses | Where-Object {$_.State -eq "ProcessingComplete"}
+$groupInfoArray = @()
+# Filter the groups to only include those that have licenses assigned
+$groups = $groups | Where-Object {$_.AssignedLicenses -ne $null}
+# For each group, get the group name, license types, total user count, licensed user count, and license error count
+foreach ($group in $groups) {
+ $groupInfo = New-Object PSObject
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "Group Name" -Value $group.DisplayName
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "Group ID" -Value $group.Id
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "License Types" -Value ($group.AssignedLicenses | Select-Object -ExpandProperty SkuId)
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "Total User Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Measure-Object).Count
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "Licensed User Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Where-Object {$_. LicenseProcessingState -eq "ProcessingComplete"} | Measure-Object).Count
+ $groupInfo | Add-Member -MemberType NoteProperty -Name "License Error Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Where-Object {$_.LicenseProcessingState -eq "ProcessingFailed"} | Measure-Object).Count
+ $groupInfoArray += $groupInfo
+}
+
+# Format the output and print it to the console
+$groupInfoArray | Format-Table -AutoSize
+
+```
++
+## Get all groups with license errors
++
+```powershell
+# Import User Graph Module
+Import-Module Microsoft.Graph.Users
+# Authenticate to MS Graph
+Connect-MgGraph -Scopes "Group.Read.All"
+# Get all groups in the tenant with license assigned and with errors
+$groups = Get-MgGroup -All -Property LicenseProcessingState, DisplayName, Id, AssignedLicenses | Select-Object displayname, Id, LicenseProcessingState, AssignedLicenses | Select-Object DisplayName, Id, AssignedLicenses -ExpandProperty LicenseProcessingState | Select-Object DisplayName, State, Id, AssignedLicenses | Where-Object {$_.State -eq "ProcessingFailed" -and $_.AssignedLicenses -ne $null }
+# Display the results and format output
+$groups | Format-Table -AutoSize
+
+```
++
+## Get all users with license errors in a group
+
+Given a group that contains some license-related errors, you can now list all users affected by those errors. A user can have errors from other groups, too. However, in this example we limit results only to errors relevant to the group in question by checking the **ReferencedObjectId** property of each **IndirectLicenseError** entry on the user.
++
+```powershell
+# Import User Graph Module
+Import-Module Microsoft.Graph.Users
+# Authenticate to MS Graph
+Connect-MgGraph -Scopes "Group.Read.All", "User.Read.All"
+# Get all groups in the tenant with license assigned
+$groups = Get-MgGroup -All -Property LicenseProcessingState, DisplayName, Id, AssignedLicenses | Select-Object displayname, Id, LicenseProcessingState, AssignedLicenses | Select-Object DisplayName, Id, AssignedLicenses | Where-Object {$_.AssignedLicenses -ne $null }
+#output array
+$groupInfoArray = @()
+# Get All Members from the groups and check their license status
+foreach($group in $groups) {
+ $groupMembers = Get-MgGroupMember -GroupId $group.Id -All -Property LicenseProcessingState, DisplayName, Id, AssignedLicenses | Select-Object displayname, Id, LicenseProcessingState, AssignedLicenses | Select-Object DisplayName, Id, AssignedLicenses -ExpandProperty LicenseProcessingState | Select-Object DisplayName, Id, AssignedLicenses | Where-Object {$_.AssignedLicenses -ne $null }
+ foreach($member in $groupMembers) {
+ Write-Host "Member $($member.DisplayName)"
+ if($member.LicenseProcessingState -eq "ProcessingFailed") {
+ $group | Add-Member -MemberType NoteProperty -Name "License Error" -Value $member.DisplayName
+ $groupInfoArray += $group
+ }
+ }
+}
+
+# Format the output and print it to the console
+
+if ($groupInfoArray.Length -gt 0) {
+ $groupInfoArray | Format-Table -AutoSize
+}
+else {
+ Write-Host "No License Errors"
+}
+
+```
++
+## Get all users with license errors in the entire organization
+
+The following script can be used to get all users who have license errors from one or more groups. The script prints one row per user, per license error, which allows you to clearly identify the source of each error.
++
+```powershell
+# Import User Graph Module
+Import-Module Microsoft.Graph.Users
+# Authenticate to MS Graph
+Connect-MgGraph -Scopes "User.Read.All"
+# Get All Users From the Tenant with licenses assigned
+$users = Get-MgUser -All -Property AssignedLicenses, LicenseAssignmentStates, DisplayName | Select-Object DisplayName, AssignedLicenses -ExpandProperty LicenseAssignmentStates | Select-Object DisplayName, AssignedByGroup, State, Error, SkuId
+#count the number of users found with errors
+$count = 0
+# Loop through each user and check the Error property for None value
+foreach($user in $users) {
+ if($user.Error -ne "None") {
+ $count += 1
+ Write-Host "User $($user.DisplayName) has a license error"
+ }
+}
+if ($count -le 0) {
+ write-host "No user found with license errors"
+}
+```
++++
+## Check if user license is assigned directly or inherited from a group
+
+```powershell
+# Connect to Microsoft Graph using Connect-MgGraph
+Connect-MgGraph -Scopes "User.Read.All"
+
+# Get all users using Get-MgUser with a filter
+$users = Get-MgUser -Filter "accountEnabled eq true"
+
+# Create a hash table to store the SKU IDs for each user
+$skus = @{}
+
+# Loop through all users and get their license details using Get-MgUserLicenseDetail
+foreach ($user in $users) {
+ $userSkus = @{}
+
+ # Get the user's license details using Get-MgUserLicenseDetail
+ $licenseDetails = Get-MgUserLicenseDetail -UserId $user.Id
+
+ # Loop through all the licenses and add the SKU ID to the hash table
+ foreach ($license in $licenseDetails) {
+ $userSkus[$license.SkuId] = @{
+ AssignedDirectly = $license.AssignedLicenses.Count -gt 0
+ AssignedThroughGroups = $license.AssignedLicensesViaGroup.Count -gt 0
+ }
+ }
+
+ # Add the user's SKU IDs to the main hash table
+ $skus[$user.Id] = $userSkus
+}
+
+# Display the SKU IDs for each user
+foreach ($userId in $skus.Keys) {
+ $user = Get-MgUser -Filter "userPrincipalName eq '$userId'"
+ Write-Host "User: $($user.UserPrincipalName)"
+ Write-Host "SKU IDs:"
+
+ foreach ($skuId in $skus[$userId].Keys) {
+ $sku = Get-MgSubscribedSku -SkuId $skuId
+ Write-Host "- $($sku.DisplayName)"
+ Write-Host " Assigned directly: $($skus[$userId][$skuId].AssignedDirectly)"
+ Write-Host " Assigned through groups: $($skus[$userId][$skuId].AssignedThroughGroups)"
+ }
+
+ Write-Host ""
+}
+++
+## Remove direct licenses for users with group licenses
+
+The purpose of this script is to remove unnecessary direct licenses from users who already inherit the same license from a group; for example, as part of a [transition to group-based licensing](licensing-groups-migrate-users.md).
+
+> [!NOTE]
+>To ensure that users do not lose access to services and data, it is important to confirm that directly assigned licenses do not provide more service functionality than the inherited licenses. It is not currently possible to use PowerShell to determine which services are enabled through inherited licenses versus direct licenses. Therefore, the script uses a minimum level of services that are known to be inherited from groups to check and ensure that users do not experience unexpected service loss.
++
+```powershell
+Import-Module Microsoft.Graph
+
+# Connect to the Microsoft Graph
+Connect-MgGraph
+
+# Get the group to be processed
+$groupId = "48ca647b-7e4d-41e5-aa66-40cab1e19101"
+
+# Get the license to be removed - Office 365 E3
+$skuId = "contoso:ENTERPRISEPACK"
+
+# Minimum set of service plans we know are inherited by this group
+$expectedDisabledPlans = @("Exchange Online", "SharePoint Online", "Lync Online")
+
+# Get the users in the group
+$users = Get-MgUser -GroupObjectId $groupId
+
+# For each user, get the license for the specified SKU
+foreach ($user in $users) {
+ $license = GetUserLicense $user $skuId
+
+ # If the user has the license assigned directly, continue to the next user
+ if (UserHasLicenseAssignedDirectly $user $skuId) {
+ continue
+ }
+
+ # If the user is inheriting the license from the specified group, continue to the next user
+ if (UserHasLicenseAssignedFromThisGroup $user $skuId $groupId) {
+ continue
+ }
+
+ # Get the list of disabled service plans for the SKU
+ $disabledPlans = GetDisabledPlansForSKU $skuId $expectedDisabledPlans
+
+ # Get the list of unexpected enabled plans for the user
+ $extraPlans = GetUnexpectedEnabledPlansForUser $user $skuId $expectedDisabledPlans
+
+ # If there are any unexpected enabled plans, print them to the console
+ if ($extraPlans.Count -gt 0) {
+ Write-Warning "The user $user has the following unexpected enabled plans for the $skuId SKU: $extraPlans"
+ }
+}
+```
+++
+## Next steps
+
+To learn more about the feature set for license management through groups, see the following articles:
+
+* [What is group-based licensing in Azure Active Directory?](../fundamentals/active-directory-licensing-whatis-azure-portal.md)
+* [Assigning licenses to a group in Azure Active Directory](./licensing-groups-assign.md)
+* [Identifying and resolving license problems for a group in Azure Active Directory](licensing-groups-resolve-problems.md)
active-directory How To Single Page Application React Prepare App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/how-to-single-page-application-react-prepare-app.md
Identity related **npm** packages must be installed in the project to enable use
1. Open *authConfig.js* and add the following code snippet: ```javascript
- /*
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License.
- */
+ /*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License.
+ */
import { LogLevel } from '@azure/msal-browser'; /**
- * Configuration object to be passed to MSAL instance on creation.
- * For a full list of MSAL.js configuration parameters, visit:
- * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md
- */
+ * Configuration object to be passed to MSAL instance on creation.
+ * For a full list of MSAL.js configuration parameters, visit:
+ * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md
+ */
export const msalConfig = { auth: { clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply.
- authority: 'https://Enter_the_Tenant_Name_Here.ciamlogin.com/', // Replace "Enter_the_Tenant_Name_Here" with your tenant name
+ authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Id_Here', // Defaults to "https://login.microsoftonline.com/common"
redirectUri: '/', // Points to window.location.origin. You must register this URI on Azure Portal/App Registration. postLogoutRedirectUri: '/', // Indicates the page to navigate after logout. navigateToLoginRequestUrl: false, // If "true", will navigate back to the original request location before processing the auth code response.
Identity related **npm** packages must be installed in the project to enable use
}; /**
- * Scopes you add here will be prompted for user consent during sign-in.
- * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
- * For more information about OIDC scopes, visit:
- * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes
- */
+ * Scopes you add here will be prompted for user consent during sign-in.
+ * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
+ * For more information about OIDC scopes, visit:
+ * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes
+ */
export const loginRequest = { scopes: [],
- extraQueryParameters: {
- dc: "ESTS-PUB-EUS-AZ1-FD000-TEST1"
- }
+ };
+
+ /**
+ * An optional silentRequest object can be used to achieve silent SSO
+ * between applications by providing a "login_hint" property.
+ */
+ export const silentRequest = {
+ scopes: ["openid", "profile"],
+ loginHint: "example@domain.net"
}; ```
active-directory Microsoft Graph Operations Branding https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-branding.md
- Title: Manage branding resources with Microsoft Graph
-description: Learn how to manage branding resources in an Azure AD for customers tenant by calling the Microsoft Graph API. You use an application identity to automate the process.
-------- Previously updated : 05/23/2023--
-#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage operations in my Azure AD customer tenant.
--
-# Manage Azure Active Directory for customers company branding with the Microsoft Graph API
-
-Using the Microsoft Graph API allows you to manage resources in your Azure Active Directory (AD) for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to branding. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
-
-> [!NOTE]
-> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
-## Company branding
-
-Customers can customize look and feel of sign-in pages which appear when users sign in to tenant-specific apps. Developers can also read the company's branding information and customize their app experience to tailor it specifically for the signed-in user using their company's branding.
-
-You can't change your original configuration's default language. However, companies can add different branding based on locale. For language-specific branding, see the organizationalBrandingLocalization object.
--- [Get company branding](/graph/api/organizationalbranding-get)-- [Update company branding](/graph/api/organizationalbranding-update)-
-## Company branding - localization
-
-Resource that supports managing language-specific branding. While you can't change your original configuration's language, this resource allows you to create a new configuration for a different language.
--- [List localizations](/graph/api/organizationalbranding-list-localizations)-- [Create localization](/graph/api/organizationalbranding-post-localizations)-- [Get localization](/graph/api/organizationalbrandinglocalization-get)-- [Update localization](/graph/api/organizationalbrandinglocalization-update)-- [Delete localization](/graph/api/organizationalbrandinglocalization-delete)--
-## How to programmatically manage Microsoft Graph
-
-When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
-
-> [!NOTE]
-> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
-
-## Next steps
--- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Microsoft Graph Operations Custom Extensions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-custom-extensions.md
- Title: Manage custom extension resources with Microsoft Graph
-description: Learn how to manage custom extension resources in an Azure AD for customers tenant by calling the Microsoft Graph API and using an application identity to automate the process.
-------- Previously updated : 05/23/2023--
-#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage custom extension operations in my Azure AD customer tenant.
--
-# Manage Azure Active Directory (AD) for customers custom extension resources with Microsoft Graph
-
-Using the Microsoft Graph API allows you to manage resources in your Azure AD for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to custom extensions. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
--
-> [!NOTE]
-> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
-## Custom authentication extensions (Preview)
-
-Custom authentication extensions define interactions with external systems during a user authentication session. This is an abstract type that's inherited by the onTokenIssuanceStartCustomExtension derived type.
--- [List custom authentication extensions](/graph/api/identitycontainer-list-customauthenticationextensions)-- [Create custom authentication extension](/graph/api/identitycontainer-post-customauthenticationextensions)-- [Get custom authentication extension](/graph/api/customauthenticationextension-get)-- [Update custom authentication extension](/graph/api/customauthenticationextension-update)-- [Delete custom authentication extension](/graph/api/customauthenticationextension-delete)-
-## How to programmatically manage Microsoft Graph
-
-When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
-
-> [!NOTE]
-> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
-## Next steps
--- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Microsoft Graph Operations User Flow https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations-user-flow.md
- Title: Manage user flow resources with Microsoft Graph
-description: Learn how to manage user flow resources in an Azure AD for customers tenant by calling the Microsoft Graph API and using an application identity to automate the process.
-------- Previously updated : 05/23/2023--
-#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage user flow operations in my Azure AD customer tenant.
--
-# Manage Azure Active Directory for customers user flow resources with Microsoft Graph
-
-Using the Microsoft Graph API allows you to manage resources in your Azure Active Directory (AD) for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to user flows. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
--
-> [!NOTE]
-> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
-
-## User flows (Preview)
-
-User flows are used to enable a self-service sign-up experience for users within an Azure AD customer tenant. User flows define the experience the end user sees while signing up, including which identity providers they can use to authenticate, along with which attributes are collected as part of the sign-up process. The sign-up experience for an application is defined by a user flow, and multiple applications can use the same user flow.
-
-Configure pre-built policies for sign-up, sign-in, combined sign-up and sign-in, password reset, and profile update.
--- [List user flows](/graph/api/identitycontainer-list-authenticationeventsflows)-- [Create a user flow](/graph/api/identitycontainer-post-authenticationeventsflows)-- [Get a user flow](/graph/api/authenticationeventsflow-get)-- [Delete a user flow](/graph/api/authenticationeventsflow-delete)-
-## Identity providers (Preview)
-
-Get the identity providers that are defined for an external identities self-service sign-up user flow that's represented by an externalUsersSelfServiceSignupEventsFlow object type.
--- [List identity providers](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-list-identityproviders)-- [Add identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-post-identityproviders)-- [Remove identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-delete-identityproviders)-
-## Attributes (Preview)
--- [List attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-list-attributes)-- [Add attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-post-attributes)-- [Remove attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-delete-attributes)--
-## How to programmatically manage Microsoft Graph
-
-When you want to manage Microsoft Graph, you can either do it as the application using the application permissions, or you can use delegated permissions. For delegated permissions, either the user or an administrator consents to the permissions that the app requests. The app is delegated with the permission to act as a signed-in user when it makes calls to the target resource. Application permissions are used by apps that do not require a signed in user present and thus require application permissions. Because of this, only administrators can consent to application permissions.
-
-> [!NOTE]
-> Delegated permissions for users signing in through user flows or custom policies cannot be used against delegated permissions for Microsoft Graph API.
-
-## Next steps
--- To learn more about the Microsoft Graph API, see [Microsoft Graph overview](/graph/overview).
active-directory Microsoft Graph Operations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/microsoft-graph-operations.md
+
+ Title: Manage resources with Microsoft Graph
+description: Learn how to manage user resources in an Azure AD for customers tenant by calling the Microsoft Graph API and using an application identity to automate the process.
++++++++ Last updated : 05/31/2023++
+#Customer intent: As a dev, devops, I want to learn how to use the Microsoft Graph to manage operations in my Azure AD customer tenant.
++
+# Manage Azure Active Directory for customers resources with Microsoft Graph
+Using the Microsoft Graph API allows you to manage resources in your Azure Active Directory (AD) for customers directory. The following Microsoft Graph API operations are supported for the management of resources related to user flows, custom extensions and custom branding. Each link in the following sections targets the corresponding page within the Microsoft Graph API reference for that operation.
+
+> [!NOTE]
+> You can also programmatically create an Azure AD for customers directory itself, along with the corresponding Azure resource linked to an Azure subscription. This functionality isn't exposed through the Microsoft Graph API, but through the Azure REST API. For more information, see [Directory Tenants - Create Or Update](/rest/api/azurestack/directory-tenants/create-or-update).
+
+### Register a Microsoft Graph API application
+In order to use the Microsoft Graph API, you need to register an application in your Azure AD for customers tenant. This application will be used to authenticate and authorize your application to call the Microsoft Graph API.
+
+During registration, you'll specify a **Redirect URI** which redirects the user after authentication with Azure Active Directory. The app registration process also generates a unique identifier known as an **Application (client) ID**.
+
+The following steps show you how to register your app in the Microsoft Entra admin center:
+
+1. Sign in to the [Microsoft Entra admin center](https://entra.microsoft.com/).
+
+1. If you have access to multiple tenants, make sure you use the directory that contains your Azure AD for customers tenant:
+
+ 1. Select the **Directories + subscriptions** icon in the portal toolbar.
+
+ 1. On the **Portal settings | Directories + subscriptions** page, find your Azure AD for customers directory in the **Directory name** list, and then select **Switch**.
+
+1. On the sidebar menu, select **Azure Active Directory**.
+
+1. Select **Applications**, then select **App Registrations**.
+
+1. Select **+ New registration**.
+
+1. In the **Register an application page** that appears, enter your application's registration information:
+
+ 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example *ciam-client-app*.
+
+ 1. Under **Supported account types**, select **Accounts in this organizational directory only**.
+
+1. Select **Register**.
+
+1. The application's **Overview pane** is displayed when registration is complete. Record the **Directory (tenant) ID** and the **Application (client) ID** to be used in your application source code.
+
+### Grant API Access to your application
+
+For your application to access data in Microsoft Graph API, grant the registered application the relevant application permissions. The effective permissions of your application are the full level of privileges implied by the permission. For example, to create, read, update, and delete every user in your Azure AD for customers tenant, add the User.ReadWrite.All permission.
+
+1. Under **Manage**, select **API permissions**.
+
+1. Under **Configured permissions**, select **Add a permission**.
+
+1. Select the **Microsoft APIs** tab, then select **Microsoft Graph**.
+
+1. Select **Application permissions**.
+
+1. Expand the appropriate permission group and select the check box of the permission to grant to your management application. For example:
+
+ * **User** > **User.ReadWrite.All**: For user migration or user management scenarios.
+
+ * **Group** > **Group.ReadWrite.All**: For creating groups, read and update group memberships, and delete groups.
+
+ * **AuditLog** > **AuditLog.Read.All**: For reading the directory's audit logs.
+
+ * **Policy** > **Policy.ReadWrite.TrustFramework**: For continuous integration/continuous delivery (CI/CD) scenarios. For example, custom policy deployment with Azure Pipelines.
+
+1. Select **Add permissions**. As directed, wait a few minutes before proceeding to the next step.
+
+1. Select **Grant admin consent for (your tenant name)**.
+
+1. If you are not currently signed-in with Global Administrator account, sign in with an account in your Azure AD for customers tenant that's been assigned at least the *Cloud application administrator* role and then select **Grant admin consent for (your tenant name)**.
+
+1. Select **Refresh**, and then verify that "Granted for ..." appears under **Status**. It might take a few minutes for the permissions to propagate.
+
+After you have registered your application, you need to add a client secret to your application. This client secret will be used to authenticate your application to call the Microsoft Graph API.
+
+The application uses the client secret to prove its identity when it requests for tokens.
+
+1. From the **App registrations** page, select the application that you created (such as *ciam-client-app*) to open its **Overview** page.
+
+1. Under **Manage**, select **Certificates & secrets**.
+
+1. Select **New client secret**.
+
+1. In the **Description** box, enter a description for the client secret (for example, `ciam app client secret`).
+
+1. Under **Expires**, select a duration for which the secret is valid (per your organizations security rules), and then select **Add**.
+
+1. Record the secret's **Value**. You'll use this value for configuration in a later step.
+
+> [!NOTE]
+> The secret value won't be displayed again, and is not retrievable by any means, after you navigate away from the certificates and secrets page, so make sure you record it. <br> For enhanced security, consider using **certificates** instead of client secrets.
+
+## User flows (Preview)
+
+User flows are used to enable a self-service sign-up experience for users within an Azure AD customer tenant. User flows define the experience the end user sees while signing up, including which identity providers they can use to authenticate, along with which attributes are collected as part of the sign-up process. The sign-up experience for an application is defined by a user flow, and multiple applications can use the same user flow.
+
+Configure pre-built policies for sign-up, sign-in, combined sign-up and sign-in, password reset, and profile update.
+
+- [List user flows](/graph/api/identitycontainer-list-authenticationeventsflows)
+- [Create a user flow](/graph/api/identitycontainer-post-authenticationeventsflows)
+- [Get a user flow](/graph/api/authenticationeventsflow-get)
+- [Delete a user flow](/graph/api/authenticationeventsflow-delete)
+
+## Identity providers (Preview)
+
+Get the identity providers that are defined for an external identities self-service sign-up user flow that's represented by an externalUsersSelfServiceSignupEventsFlow object type.
+
+- [List identity providers](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-list-identityproviders)
+- [Add identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-post-identityproviders)
+- [Remove identity provider](/graph/api/onauthenticationmethodloadstartexternalusersselfservicesignup-delete-identityproviders)
+
+## Attributes (Preview)
+
+- [List attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-list-attributes)
+- [Add attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-post-attributes)
+- [Remove attributes](/graph/api/onattributecollectionexternalusersselfservicesignup-delete-attributes)
+
+## Company branding
+
+Customers can customize look and feel of sign-in pages which appear when users sign in to tenant-specific apps. Developers can also read the company's branding information and customize their app experience to tailor it specifically for the signed-in user using their company's branding.
+
+You can't change your original configuration's default language. However, companies can add different branding based on locale. For language-specific branding, see the organizationalBrandingLocalization object.
+
+- [Get company branding](/graph/api/organizationalbranding-get)
+- [Update company branding](/graph/api/organizationalbranding-update)
+
+## Company branding - localization
+
+Resource that supports managing language-specific branding. While you can't change your original configuration's language, this resource allows you to create a new configuration for a different language.
+
+- [List localizations](/graph/api/organizationalbranding-list-localizations)
+- [Create localization](/graph/api/organizationalbranding-post-localizations)
+- [Get localization](/graph/api/organizationalbrandinglocalization-get)
+- [Update localization](/graph/api/organizationalbrandinglocalization-update)
+- [Delete localization](/graph/api/organizationalbrandinglocalization-delete)
+
+> [!NOTE]
+> Delegated permissions for users signing in through user flows cannot be used against delegated permissions for Microsoft Graph API.
active-directory Spa Quickstart Portal Angular Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/spa-quickstart-portal-angular-ciam.md
+
+ Title: "Quickstart: Add sign in to an Angular SPA"
+description: Learn how to run a sample Angular SPA to sign in users
+++++++++ Last updated : 06/06/2023++
+# Portal quickstart for Angular SPA
+
+> In this quickstart, you download and run a code sample that demonstrates how an Angular single-page application (SPA) can sign in users with Azure Active Directory for customers.
+>
+> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
+> 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/).
+>
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
+> ```console
+> cd SPA && npm install && npm start
+> ```
+>
+> 1. Open your browser, visit `http://localhost:4200`, select **Sign-in**, then follow the prompts.
+>
active-directory Spa Quickstart Portal React Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/spa-quickstart-portal-react-ciam.md
+
+ Title: "Quickstart: Add sign in to a React SPA"
+description: Learn how to run a sample React SPA to sign in users
+++++++++ Last updated : 06/06/2023++
+# Portal quickstart for React SPA
+
+> In this quickstart, you download and run a code sample that demonstrates how a React single-page application (SPA) can sign in users with Azure Active Directory for customers.
+>
+> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
+> 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/).
+>
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
+> ```console
+> cd SPA && npm install && npm start
+> ```
+>
+> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts.
+>
active-directory Spa Quickstart Portal Vanilla Js Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/spa-quickstart-portal-vanilla-js-ciam.md
+
+ Title: "Quickstart: Add sign in to a JavaScript SPA"
+description: Learn how to run a sample JavaScript SPA to sign in users
++++++++++ Last updated : 06/06/2023++
+# Portal quickstart for JavaScript application
+
+> In this quickstart, you download and run a code sample that demonstrates how a JavaScript SPA can sign in users with Azure Active Directory for customers.
+>
+> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
+> 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/).
+>
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
+> ```console
+> cd App && npm install && npm start
+> ```
+>
+> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts.
+>
active-directory Web App Quickstart Portal Dotnet Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/web-app-quickstart-portal-dotnet-ciam.md
+
+ Title: "Quickstart: Add sign in to ASP.NET web app"
+description: Learn how to run a sample ASP.NET web app to sign in users
++++++++++ Last updated : 06/06/2023++
+# Portal quickstart for ASP.NET web app
+
+> In this quickstart, you download and run a code sample that demonstrates how ASP.NET web app can sign in users with Azure Active Directory for customers.
+>
+> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
+> 1. Make sure you've installed [.NET SDK v7](https://dotnet.microsoft.com/download/dotnet/7.0) or later.
+>
+> 1. Unzip the sample app.
+>
+> 1. In your terminal, locate the sample app folder, then run the following command:
+>
+> ```console
+> dotnet run
+> ```
+>
+> 1. Open your browser, visit `https://localhost:7274`, select **Sign-in**, then follow the prompts.
+>
active-directory Web App Quickstart Portal Node Js Ciam https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/external-identities/customers/web-app-quickstart-portal-node-js-ciam.md
+
+ Title: "Quickstart: Add sign in to a Node.js/Express web app"
+description: Learn how to run a sample Node.js/Express web app to sign in users
++++++++++ Last updated : 06/06/2023++
+# Portal quickstart for Node.js/Express web app
+
+> In this quickstart, you download and run a code sample that demonstrates how a Node.js/Express web app can sign in users with Azure Active Directory for customers.
+>
+> [!div renderon="portal" id="display-on-portal" class="sxs-lookup"]
+> 1. Make sure you've installed [Node.js](https://nodejs.org/en/download/).
+>
+> 1. Unzip the sample app
+>
+> 1. In your terminal, locate the sample app folder, then run the following commands:
+>
+> ```console
+> cd App && npm install && npm start
+> ```
+>
+> 1. Open your browser, visit `http://localhost:3000`, select **Sign-in**, then follow the prompts.
+>
active-directory Azure Active Directory B2c Deployment Plans https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/azure-active-directory-b2c-deployment-plans.md
Technology project success depends on managing expectations, outcomes, and respo
- Ask questions, get answers, and receive notifications - Identify a partner or resource outside your organization to support you
-Learn more: [Include the right stakeholders](active-directory-deployment-plans.md)
+Learn more: [Include the right stakeholders](deployment-plans.md)
### Communications
active-directory Concept Secure Remote Workers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/concept-secure-remote-workers.md
The following table is intended to highlight the key actions for the following l
## Next steps -- For detailed deployment guidance for individual features of Azure AD, review the [Azure AD project deployment plans](active-directory-deployment-plans.md).
+- For detailed deployment guidance for individual features of Azure AD, review the [Azure AD project deployment plans](deployment-plans.md).
- Organizations can use [identity secure score](identity-secure-score.md) to track their progress against other Microsoft recommendations.
active-directory Deployment Plans https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/deployment-plans.md
+
+ Title: Azure Active Directory deployment plans
+description: Guidance on Azure Active Directory deployment, such as authentication, devices, hybrid scenarios, governance, and more.
+++++++ Last updated : 01/17/2023+++++
+# Azure Active Directory deployment plans
+
+Use the following guidance to help deploy Azure Active Directory (Azure AD). Learn about business value, planning considerations, and operational procedures. You can use a browser Print to PDF function to create offline documentation.
+
+## Your stakeholders
+
+When beginning your deployment plans, include your key stakeholders. Identify and document stakeholders, roles, responsibilities. Titles and roles can differ from one organization to another, however the ownership areas are similar.
+
+|Role |Responsibility |
+|-|-|
+|Sponsor|An enterprise senior leader with authority to approve and/or assign budget and resources. The sponsor is the connection between managers and the executive team.|
+|End user|The people for whom the service is implemented. Users can participate in a pilot program.|
+|IT Support Manager|Provides input on the supportability of proposed changesΓÇ»|
+|Identity architect or Azure Global Administrator|Defines how the change aligns with identity management infrastructure|
+|Application business owner |Owns the affected application(s), which might include access management. Provides input on the user experience.
+|Security owner|Confirms the change plan meets security requirements|
+|Compliance manager|Ensures compliance with corporate, industry, or governmental requirements|
+
+### RACI
+
+RACI is an acronym derived from four key responsibilities:
+
+* **Responsible**
+* **Accountable**
+* **Consulted**
+* **Informed**
+
+Use these terms to clarify and define roles and responsibilities in your project, and for other cross-functional or departmental projects and processes.
+
+## Authentication
+
+Use the following list to plan for authentication deployment.
+
+* **Azure AD multi-factor authentication (MFA)** - Using admin-approved authentication methods, Azure AD MFA helps safeguard access to your data and applications while meeting the demand for a simple sign-in process:
+ * See the video, [How to configure and enforce multi-factor authentication in your tenant](https://www.youtube.com/watch?v=qNndxl7gqVM)
+ * See, [Plan an Azure Active Directory Multi-Factor Authentication deployment](../authentication/howto-mfa-getstarted.md)
+* **Conditional Access** - Implement automated access-control decisions for users to access cloud apps, based on conditions:
+ * See, [What is Conditional Access?](../conditional-access/overview.md)
+ * See, [Plan a Conditional Access deployment](../conditional-access/plan-conditional-access.md)
+* **Azure AD self-service password reset (SSPR)** - Help users reset a password without administrator intervention:
+ * See, [Passwordless authentication options for Azure AD](../authentication/concept-authentication-passwordless.md)
+ * See, [Plan an Azure Active Directory self-service password reset deployment](../authentication/howto-sspr-deployment.md)
+* **Passwordless authentication** - Implement passwordless authentication using the Microsoft Authenticator app or FIDO2 Security keys:
+ * See, [Enable passwordless sign-in with Microsoft Authenticator](../authentication/howto-authentication-passwordless-phone.md)
+ * See, [Plan a passwordless authentication deployment in Azure Active Directory](../authentication/howto-authentication-passwordless-deployment.md)
+
+## Applications and devices
+
+Use the following list to help deploy applications and devices.
+
+* **Single sign-on (SSO)** - Enable user access to apps and resources while signing in once, without being required to enter credentials again:
+ * See, [What is SSO in Azure AD?](../manage-apps/what-is-single-sign-on.md)
+ * See, [Plan a SSO deployment](../manage-apps/plan-sso-deployment.md)
+* **My Apps portal** - A web-based portal to discover and access applications. Enable user productivity with self-service, for instance requesting access to groups, or managing access to resources on behalf of others.
+ * See, [My Apps portal overview](../manage-apps/myapps-overview.md)
+* **Devices** - Evaluate device integration methods with Azure AD, choose the implementation plan, and more.
+ * See, [Plan your Azure Active Directory device deployment](../devices/plan-device-deployment.md)
+
+## Hybrid scenarios
+
+The following list describes features and services for productivity gains in hybrid scenarios.
+
+* **Active Directory Federation Services (AD FS)** - Migrate user authentication from federation to cloud with pass-through authentication or password hash sync:
+ * See, [What is federation with Azure AD?](../hybrid/whatis-fed.md)
+ * See, [Migrate from federation to cloud authentication](../hybrid/migrate-from-federation-to-cloud-authentication.md)
+* **Azure AD Application Proxy** - Enable employees to be productive at any place or time, and from a device. Learn about software as a service (SaaS) apps in the cloud and corporate apps on-premises. Azure AD Application Proxy enables access without virtual private networks (VPNs) or demilitarized zones (DMZs):
+ * See, [Remote access to on-premises applications through Azure AD Application Proxy](../app-proxy/application-proxy.md)
+ * See, [Plan an Azure AD Application Proxy deployment](../app-proxy/application-proxy-deployment-plan.md)
+* **Seamless single sign-on (Seamless SSO)** - Use Seamless SSO for user sign-in, on corporate devices connected to a corporate network. Users don't need to enter passwords to sign in to Azure AD, and usually don't need to enter usernames. Authorized users access cloud-based apps without extra on-premises components:
+ * See, [Azure Active Directory SSO: Quickstart](../hybrid/how-to-connect-sso-quick-start.md)
+ * See, [Azure Active Directory Seamless SSO: Technical deep dive](../hybrid/how-to-connect-sso-how-it-works.md)
+
+## Users
+
+* **User identities** - Learn about automation to create, maintain, and remove user identities in cloud apps, such as Dropbox, Salesforce, ServiceNow, and more.
+ * See, [Plan an automatic user provisioning deployment in Azure Active Directory](../app-provisioning/plan-auto-user-provisioning.md)
+* **Identity governance** - Create identity governance and enhance business processes that rely on identity data. With HR products, such as Workday or Successfactors, manage employee and contingent-staff identity lifecycle with rules. These rules map Joiner-Mover-Leaver processes, such as New Hire, Terminate, Transfer, to IT actions such as Create, Enable, Disable.
+ * See, [Plan cloud HR application to Azure Active Directory user provisioning](../app-provisioning/plan-cloud-hr-provision.md)
+* **Azure AD B2B collaboration** - Improve external-user collaboration with secure access to applications:
+ * See, [B2B collaboration overview](../external-identities/what-is-b2b.md)
+ * See, [Plan an Azure Active Directory B2B collaboration deployment](../fundamentals/secure-external-access-resources.md)
+
+## Identity Governance and reporting
+
+Use the following list to learn about identity governance and reporting. Items in the list refer to Microsoft Entra.
+
+Learn more: [Secure access for a connected worldΓÇömeet Microsoft Entra](https://www.microsoft.com/en-us/security/blog/?p=114039)
+
+* **Privileged identity management (PIM)** - Manage privileged administrative roles across Azure AD, Azure resources, and other Microsoft Online Services. Use it for just-in-time access, request approval workflows, and fully integrated access reviews to help prevent malicious activities:
+ * See, [Start using Privileged Identity Management](../privileged-identity-management/pim-getting-started.md)
+ * See, [Plan a Privileged Identity Management deployment](../privileged-identity-management/pim-deployment-plan.md)
+* **Reporting and monitoring** - Your Azure AD reporting and monitoring solution design has dependencies and constraints: legal, security, operations, environment, and processes.
+ * See, [Azure Active Directory reporting and monitoring deployment dependencies](../reports-monitoring/plan-monitoring-and-reporting.md)
+* **Access reviews** - Understand and manage access to resources:
+ * See, [What are access reviews?](../governance/access-reviews-overview.md)
+ * See, [Plan a Microsoft Entra access reviews deployment](../governance/deploy-access-reviews.md)
+* **Identity governance** - Meet your compliance and risk management objectives for access to critical applications. Learn how to enforce accurate access.
+ * See, [Govern access for applications in your environment](../governance/identity-governance-applications-prepare.md)
+
+## Best practices for a pilot
+
+Use pilots to test with a small group, before making a change for larger groups, or everyone. Ensure each use case in your organization is tested.
+
+### Pilot: Phase 1
+
+In your first phase, target IT, usability, and other users who can test and provide feedback. Use this feedback to gain insights on potential issues for support staff, and to develop communications and instructions you send to all users.
+
+### Pilot: Phase 2
+
+Widen the pilot to larger groups of users by using dynamic membership, or by manually adding users to the targeted group(s).
+
+Learn more: [Dynamic membership rules for groups in Azure Active Directory](../enterprise-users/groups-dynamic-membership.md)
active-directory Five Steps To Full Application Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/five-steps-to-full-application-integration.md
For the following services, there are Azure AD integration tutorials.
* [Tutorial: Azure AD SSO integration with Akamai](../saas-apps/akamai-tutorial.md) * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](../saas-apps/citrix-netscaler-tutorial.md) * Formerly known as Citrix Netscaler
-* [Integrate F5 BIG-IP with Azure AD](../manage-apps/f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](../manage-apps/f5-integration.md)
* [Tutorial: Integrate Zscaler Private Access (ZPA) with Azure AD](../saas-apps/zscalerprivateaccess-tutorial.md) ## Integrate apps your developers build
active-directory Ops Guide Ops https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/ops-guide-ops.md
There are seven aspects to a secure Identity infrastructure. This list will help
## Next steps
-Refer to the [Azure AD deployment plans](active-directory-deployment-plans.md) for implementation details on any capabilities you haven't deployed.
+Refer to the [Azure AD deployment plans](deployment-plans.md) for implementation details on any capabilities you haven't deployed.
active-directory Secure Best Practices https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-best-practices.md
+
+ Title: Best practices to secure with Azure Active Directory
+description: Best practices we recommend you follow to secure your isolated environments in Azure Active Directory.
+++++++ Last updated : 7/5/2022++++++
+# Best practices for all isolation architectures
+
+The following are design considerations for all isolation configurations. Throughout this content, there are many links. We link to content, rather than duplicate it here, so you'll always have access to the most up-to-date information.
+
+For general guidance on how to configure Azure Active Directory (Azure AD) tenants (isolated or not), refer to the [Azure AD feature deployment guide](../fundamentals/active-directory-deployment-checklist-p2.md).
+
+>[!NOTE]
+>For all isolated tenants we suggest you use clear and differentiated branding to help avoid human error of working in the wrong tenant.
+
+## Isolation security principles
+
+When designing isolated environments, it's important to consider the following principles:
+
+* **Use only modern authentication** - Applications deployed in isolated environments must use claims-based modern authentication (for example, SAML, * Auth, OAuth2, and OpenID Connect) to use capabilities such as federation, Azure AD B2B collaboration, delegation, and the consent framework. This way, legacy applications that have dependency on legacy authentication methods such as NT LAN Manager (NTLM) won't carry forward in isolated environments.
+
+* **Enforce strong authentication** - Strong authentication must always be used when accessing the isolated environment services and infrastructure. Whenever possible, [passwordless authentication](../authentication/concept-authentication-passwordless.md) such as [Windows for Business Hello](/windows/security/identity-protection/hello-for-business/hello-overview) or a [FIDO2 security keys](../authentication/howto-authentication-passwordless-security-key.md)) should be used.
+
+* **Deploy secure workstations** - [Secure workstations](/security/compass/privileged-access-devices) provide the mechanism to ensure that the platform and the identity that platform represents is properly attested and secured against exploitation. Two other approaches to consider are:
+
+ * Use Windows 365 Cloud PCs (Cloud PC) with the Microsoft Graph API.
+
+ * Use [Conditional Access](../conditional-access/concept-condition-filters-for-devices.md) and filter for devices as a condition.
+
+* **Eliminate legacy trust mechanisms** - Isolated directories and services shouldn't establish trust relationships with other environments through legacy mechanisms such as Active Directory trusts. All trusts between environments should be established with modern constructs such as federation and claims-based identity.
+
+* **Isolate services** - Minimize the surface attack area by protecting underlying identities and service infrastructure from exposure. Enable access only through modern authentication for services and secure remote access (also protected by modern authentication) for the infrastructure.
+
+* **Directory-level role assignments** - Avoid or reduce numbers of directory-level role assignments (User Administrator on directory scope instead of AU-scoping) or service-specific directory roles with control plane actions (Knowledge Admin with permissions to manage security group memberships).
+
+In addition to the guidance in the [Azure Active Directory general operations guide](../fundamentals/ops-guide-ops.md), we also recommend the following considerations for isolated environments.
+
+## Human identity provisioning
+
+### Privileged Accounts
+
+Provision accounts in the isolated environment for administrative personnel and IT teams who operate the environment. This enables you to add stronger security policies such as device-based access control for [secure workstations](/security/compass/privileged-access-deployment). As discussed in previous sections, nonproduction environments can potentially utilize Azure AD B2B collaboration to onboard privileged accounts to the non-production tenants using the same posture and security controls designed for privileged access in their production environment.
+
+Cloud-only accounts are the simplest way to provision human identities in an Azure AD tenant and it's a good fit for green field environments. However, if there's an existing on-premises infrastructure that corresponds to the isolated environment (for example, pre-production or management Active Directory forest), you could consider synchronizing identities from there. This holds especially true if the on-premises infrastructure described herein is used for IaaS solutions that require server access to manage the solution data plane. For more information on this scenario, see [Protecting Microsoft 365 from on-premises attacks](../fundamentals/protect-m365-from-on-premises-attacks.md). Synchronizing from isolated on-premises environments might also be needed if there are specific regulatory compliance requirements such as smart-card only authentication.
+
+>[!NOTE]
+>There are no technical controls to do identity proofing for Azure AD B2B accounts. External identities provisioned with Azure AD B2B are bootstrapped with a single factor. The mitigation is for the organization to have a process to proof the required identities prior to a B2B invitation being issued, and regular access reviews of external identities to manage the lifecycle. Consider enabling a Conditional Access policy to control the MFA registration.
+
+### Outsourcing high risk roles
+
+To mitigate inside threats, it's possible to outsource access to the global administrator, and privileged role administrator roles to be managed service provider using Azure B2B collaboration or delegating access through a CSP partner or lighthouse. This access can be controlled by in-house staff via approval flows in Azure Privileged Identity Management (PIM). This approach can greatly reduce inside threats. This is an approach that you can use to meet compliance demands for customers that have concerns.
+
+## Nonhuman identity provisioning
+
+### Emergency access accounts
+
+Provision [emergency access accounts](../roles/security-emergency-access.md) for "break glass" scenarios where normal administrative accounts can't be used in the event you're accidentally locked out of your Azure AD organization. For on-premises environments using federation systems such as Active Directory Federation Services (AD FS) for authentication, maintain alternate cloud-only credentials for your global administrators to ensure service delivery during an on-premises infrastructure outage.
+
+### Azure managed identities
+
+Use [Azure managed identities](../managed-identities-azure-resources/overview.md) for Azure resources that require a service identity. Check the [list of services that support managed identities](../managed-identities-azure-resources/managed-identities-status.md) when designing your Azure solutions.
+
+If managed identities aren't supported or not possible, consider [provisioning service principal objects](../develop/app-objects-and-service-principals.md).
+
+### Hybrid service accounts
+
+Some hybrid solutions might require access to both on-premises and cloud resources. An example of a use case would be an Identity Governance solution that uses a service account on premises for access to AD DS and requires access to Azure AD.
+
+On-premises service accounts typically don't have the ability to sign in interactively, which means that in cloud scenarios they can't fulfill strong credential requirements such as multi-factor authentication (MFA). In this scenario, don't use a service account that has been synced from on-premises, but instead use a managed identity \ service principal. For service principal (SP), use a certificate as a credential, or [protect the SP with Conditional Access](../conditional-access/workload-identity.md).
+
+If there are technical constraints that don't make this possible and the same account must be used for both on-premises and cloud, then implement compensating controls such as Conditional Access to lock down the hybrid account to come from a specific network location.
+
+## Resource assignment
+
+An enterprise solution may be composed of multiple Azure resources and its access should be managed and governed as a logical unit of assignment - a resource group. In that scenario, Azure AD security groups can be created and associated with the proper permissions and role assignment across all solution resources, so that adding or removing users from those groups results in allowing or denying access to the entire solution.
+
+We recommend you use security groups to grant access to Microsoft services that rely on licensing to provide access (for example, Dynamics 365, Power BI).
+
+Azure AD cloud native groups can be natively governed from the cloud when combined with [Azure AD access reviews](../governance/access-reviews-overview.md) and [Azure AD entitlement management](../governance/access-reviews-overview.md). Organizations who already have on-premises group governance tools can continue to use those tools and rely on identity synchronization with Azure AD Connect to reflect group membership changes.
+
+Azure AD also supports direct user assignment to third-party SaaS services (for example, Salesforce, Service Now) for single sign-on and identity provisioning. Direct assignments to resources can be natively governed from the cloud when combined with [Azure AD access reviews](../governance/access-reviews-overview.md) and [Azure AD entitlement management](../fundamentals/ops-guide-ops.md). Direct assignment might be a good fit for end-user facing assignment.
+
+Some scenarios might require granting access to on-premises resources through on-premises Active Directory security groups. For those cases, consider the synchronization cycle to Azure AD when designing processes SLA.
+
+## Authentication management
+
+This section describes the checks to perform and actions to take for credential management and access policies based on your organization's security posture.
+
+### Credential management
+
+#### Strong credentials
+
+All human identities (local accounts and external identities provisioned through B2B collaboration) in the isolated environment must be provisioned with strong authentication credentials such as multi-factor authentication or a FIDO key. Environments with an underlying on-premises infrastructure with strong authentication such as smart card authentication can continue using smart card authentication in the cloud.
+
+#### Passwordless credentials
+
+A [passwordless solution](../authentication/concept-authentication-passwordless.md) is the best solution for ensuring the most convenient and secure method of authentication. Passwordless credentials such as [FIDO security keys](../authentication/howto-authentication-passwordless-security-key.md) and [Windows Hello for Business](/windows/security/identity-protection/hello-for-business/hello-overview) are recommended for human identities with privileged roles.
+
+#### Password protection
+
+If the environment is synchronized from an on-premises Active Directory forest, you should deploy [Azure AD password protection](../authentication/concept-password-ban-bad-on-premises.md) to eliminate weak passwords in your organization. [Azure AD smart lockout](../authentication/howto-password-smart-lockout.md) should also be used in hybrid or cloud-only environments to lock out bad actors who are trying to guess your users' passwords or use brute-force methods to get in.
+
+#### Self-service password management
+
+Users needing to change or reset their passwords is one of the biggest sources of volume and cost of help desk calls. In addition to cost, changing the password as a tool to mitigate a user risk is a fundamental step in improving the security posture of your organization. At a minimum, deploy [Self-Service Password Management](../authentication/howto-sspr-deployment.md) for human and test accounts with passwords to deflect help desk calls.
+
+#### External identities passwords
+
+By using Azure AD B2B collaboration, an [invitation and redemption process](../external-identities/what-is-b2b.md) lets external users such as partners, developers, and subcontractors use their own credentials to access your company's resources. This mitigates the need to introduce more passwords into the isolated tenants.
+
+>[!Note]
+>Some applications, infrastructure, or workflows might require a local credential. Evaluate this on a case-by-case basis.
+
+#### Service principals credentials
+
+For scenarios where service principals are needed, use certificate credentials for service principals or [Conditional Access for workload identities](../conditional-access/workload-identity.md). If necessary, use client secrets as an exception to organizational policy.
+
+In both cases, Azure Key Vault can be used with Azure managed identities, so that the runtime environment (for example, an Azure function) can retrieve the credential from the key vault.
+
+Check this example to [create service principals with self-signed certificate](../develop/howto-authenticate-service-principal-powershell.md) for authentication of service principals with certificate credentials.
+
+### Access policies
+
+In the following sections are recommendations for Azure solutions. For general guidance on Conditional Access policies for individual environments, check the [CA Best practices](../conditional-access/overview.md), [Azure AD Operations Guide](../fundamentals/ops-guide-auth.md), and [Conditional Access for Zero Trust](/azure/architecture/guide/security/conditional-access-zero-trust):
+
+* Define [Conditional Access policies](../conditional-access/workload-identity.md) for the [Microsoft Azure Management](../authentication/howto-password-smart-lockout.md) cloud app to enforce identity security posture when accessing Azure Resource Manager. This should include controls on MFA and device-based controls to enable access only through secure workstations (more on this in the Privileged Roles section under Identity Governance). Additionally, use [Conditional Access to filter for devices](../conditional-access/concept-condition-filters-for-devices.md).
+
+* All applications onboarded to isolated environments must have explicit Conditional Access policies applied as part of the onboarding process.
+
+* Define Conditional Access policies for [security information registration](../conditional-access/howto-conditional-access-policy-registration.md) that reflects a secure root of trust process on-premises (for example, for workstations in physical locations, identifiable by IP addresses, that employees must visit in person for verification).
+
+* Consider managing Conditional Access policies at scale with automation using [MS Graph CA API](../conditional-access/howto-conditional-access-apis.md)). For example, you can use the API to configure, manage, and monitor CA policies consistently across tenants.
+
+* Consider using Conditional Access to restrict workload identities. Create a policy to limit or better control access based on location or other relevant circumstances.
+
+### Authentication Challenges
+
+* External identities provisioned with Azure AD B2B might need to reprovision multi-factor authentication (MFA) credentials in the resource tenant. This might be necessary if a cross-tenant access policy hasn't been set up with the resource tenant. This means that onboarding to the system is bootstrapped with a single factor. With this approach, the risk mitigation is for the organization to have a process to proof the user and credential risk profile prior to a B2B invitation being issued. Additionally, define Conditional Access to the registration process as described previously.
+
+* Use [External identities cross-tenant access settings](../external-identities/cross-tenant-access-overview.md) to manage how they collaborate with other Azure AD organizations and other Microsoft Azure clouds through B2B collaboration and [B2B direct connect](../external-identities/cross-tenant-access-settings-b2b-direct-connect.md).
+
+* For specific device configuration and control, you can use device filters in Conditional Access policies to [target or exclude specific devices](../conditional-access/concept-condition-filters-for-devices.md). This enables you to restrict access to Azure management tools from a designated secure admin workstation (SAW). Other approaches you can take include using [Azure Virtual desktop](../../virtual-desktop/environment-setup.md), [Azure Bastion](../../bastion/bastion-overview.md), or [Cloud PC](/graph/cloudpc-concept-overview).
+
+* Billing management applications such as Azure EA portal or MCA billing accounts aren't represented as cloud applications for Conditional Access targeting. As a compensating control, define separate administration accounts and target Conditional Access policies to those accounts using an "All Apps" condition.
+
+## Identity Governance
+
+### Privileged roles
+
+Below are some identity governance principles to consider across all the tenant configurations for isolation.
+
+* **No standing access** - No human identities should have standing access to perform privileged operations in isolated environments. Azure Role-based access control (RBAC) integrates with [Azure AD Privileged Identity Management](../privileged-identity-management/pim-configure.md) (PIM). PIM provides just-in-time activation determined by security gates such as Multi-Factor Authentication, approval workflow, and limited duration.
+
+* **Number of admins** - Organizations should define minimum and maximum number of humans holding a privileged role to mitigate business continuity risks. With too few privileged roles, there may not be enough time-zone coverage. Mitigate security risks by having as few administrators as possible, following the least-privilege principle.
+
+* **Limit privileged access** - Create cloud-only and role-assignable groups for high privilege or sensitive privileges. This offers protection of the assigned users and the group object.
+
+* **Least privileged access** - Identities should only be granted the permissions needed to perform the privileged operations per their role in the organization.
+
+ * Azure RBAC [custom roles](../../role-based-access-control/custom-roles.md) allow designing least privileged roles based on organizational needs. We recommend that custom roles definitions are authored or reviewed by specialized security teams and mitigate risks of unintended excessive privileges. Authoring of custom roles can be audited through [Azure Policy](https://github.com/Azure/azure-policy/blob/master/built-in-policies/policyDefinitions/General/Subscription_AuditCustomRBACRoles_Audit.json).
+
+ * To mitigate accidental use of roles that aren't meant for wider use in the organization, use Azure Policy to define explicitly which role definitions can be used to assign access. Learn more from this [GitHub Sample](https://github.com/Azure/azure-policy/tree/master/samples/Authorization/allowed-role-definitions).
+
+* **Privileged access from secure workstations** - All privileged access should occur from secure, locked down devices. Separating these sensitive tasks and accounts from daily use workstations and devices protect privileged accounts from phishing attacks, application and OS vulnerabilities, various impersonation attacks, and credential theft attacks such as keystroke logging, [Pass-the-Hash](https://aka.ms/AzureADSecuredAzure/27a), and Pass-The-Ticket.
+
+Some approaches you can use for [using secure devices as part of your privileged access story](/security/compass/privileged-access-devices) include using Conditional Access policies to [target or exclude specific devices](../conditional-access/concept-condition-filters-for-devices.md), using [Azure Virtual desktop](../../virtual-desktop/environment-setup.md), [Azure Bastion](../../bastion/bastion-overview.md), or [Cloud PC](/graph/cloudpc-concept-overview), or creating Azure-managed workstations or privileged access workstations.
+
+* **Privileged role process guardrails** - Organizations must define processes and technical guardrails to ensure that privileged operations can be executed whenever needed while complying with regulatory requirements. Examples of guardrails criteria include:
+
+ * Qualification of humans with privileged roles (for example, full-time employee/vendor, clearance level, citizenship)
+
+ * Explicit incompatibility of roles (also known as separation of duties). Examples include teams with Azure AD directory roles shouldn't be responsible for managing Azure Resource Manager privileged roles, etc.
+
+ * Whether direct user or groups assignments are preferred for which roles.
+
+### Resource access
+
+* **Attestation** - Identities that hold privileged roles should be reviewed periodically to keep membership current and justified. [Azure AD Access Reviews](../governance/access-reviews-overview.md) integrate with Azure RBAC roles, group memberships and Azure AD B2B external identities.
+
+* **Lifecycle** - Privileged operations might require access to multiple resources such as line of business applications, SaaS Applications, and Azure resource groups and subscriptions. [Azure AD Entitlement Management](../governance/entitlement-management-overview.md) allows defining access packages that represent a set resource that is assigned to users as a unit, establish a validity period, approval workflows, etc.
+
+### Governance challenges
+
+* The Azure Enterprise (Azure EA) Agreement portal doesn't integrate with Azure RBAC or Conditional Access. The mitigation for this is to use dedicated administration accounts that can be targeted with policies and additional monitoring.
+
+* The Azure EA Enterprise portal doesn't provide an audit log. To mitigate this, consider an automated governed process to provision subscriptions with the considerations described above and use dedicated EA accounts and audit the authentication logs.
+
+* [Microsoft Customer Agreement](../../cost-management-billing/understand/mca-overview.md) (MCA) roles don't integrate natively with PIM. To mitigate this, use dedicated MCA accounts and monitor usage of these accounts.
+
+* Monitoring IAM assignments outside Azure AD PIM isn't automated through Azure Policies. The mitigation is to not grant Subscription Owner or User Access Administrator roles to engineering teams. Instead create groups assigned to least privileged roles such as Contributor and delegate the management of those groups to engineering teams.
+
+* Privileged roles in Azure AD B2C tenants aren't integrated with Azure AD PIM. The mitigation is to create dedicated accounts in the organization's Azure AD tenant, onboard them in the Azure AD B2C tenant and apply conditional access policies to these dedicated administration accounts.
+
+* Azure AD B2C tenant privileged roles aren't integrated with Azure AD Access Reviews. The mitigation is to create dedicated accounts in the organization's Azure AD tenant, add these accounts to a group and perform regular access reviews on this group.
+
+* There are no technical controls to subordinate the creation of tenants to an organization. However, the activity is recorded in the Audit log. The onboarding to the billing plane is a compensating control at the gate. This needs to be complemented with monitoring and alerts instead.
+
+* There's no out-of-the box product to implement the subscription provisioning workflow recommended above. Organizations need to implement their own workflow.
+
+## Tenant and subscription lifecycle management
+
+### Tenant lifecycle
+
+* We recommend implementing a process to request a new corporate Azure AD tenant. The process should account for:
+
+ * Business justification to create it. Creating a new Azure AD tenant will increase complexity significantly, so it's key to ascertain if a new tenant is necessary.
+
+ * The Azure cloud in which it should be created (for example, Commercial, Government, etc.).
+
+ * Whether this is production or not production
+
+ * Directory data residency requirements
+
+ * Global Administrators who will manage it
+
+ * Training and understanding of common security requirements.
+
+* Upon approval, the Azure AD tenant will be created, configured with necessary baseline controls, and onboarded in the billing plane, monitoring, etc.
+
+* Regular review of the Azure AD tenants in the billing plane needs to be implemented to detect and discover tenant creation outside the governed process. Refer to the *Inventory and Visibility* section of this document for further details.
+
+* Azure AD B2C tenant creation can be controlled using Azure Policy. The policy executes when an Azure subscription is associated to the B2C tenant (a pre-requisite for billing). Customers can limit the creation of Azure AD B2C tenants to specific management groups.
+
+### Subscription lifecycle
+
+Below are some considerations when designing a governed subscription lifecycle process:
+
+* Define a taxonomy of applications and solutions that require Azure resources. All teams requesting subscriptions should supply their "product identifier" when requesting subscriptions. This information taxonomy will determine:
+
+ * Azure AD tenant to provision the subscription
+
+ * Azure EA account to use for subscription creation
+
+ * Naming convention
+
+ * Management group assignment
+
+ * Other aspects such as tagging, cross-charging, product-view usage, etc.
+
+* Don't allow ad-hoc subscription creation through the portals or by other means. Instead consider managing [subscriptions programmatically using Azure Resource Manager](../../cost-management-billing/manage/programmatically-create-subscription.md) and pulling consumption and billing reports [programmatically](/rest/api/consumption/). This can help limit subscription provisioning to authorized users and enforce your policy and taxonomy goals. Guidance on following [AZOps principals](https://github.com/azure/azops/wiki/introduction) can be used to help create a practical solution.
+
+* When a subscription is provisioned, create Azure AD cloud groups to hold standard Azure Resource Manager Roles needed by application teams such as Contributor, Reader and approved custom roles. This enables you to manage Azure RBAC role assignments with governed privileged access at scale.
+
+ 1. Configure the groups to become eligible for Azure RBAC roles using Azure AD PIM with the corresponding controls such as activation policy, access reviews, approvers, etc.
+
+ 1. Then [delegate the management of the groups](../enterprise-users/groups-self-service-management.md) to solution owners.
+
+ 1. As a guardrail, don't assign product owners to User Access Administrator or Owner roles to avoid inadvertent direct assignment of roles outside Azure AD PIM, or potentially changing the subscription to a different tenant altogether.
+
+ 1. For customers who choose to enable cross-tenant subscription management in non-production tenants through Azure Lighthouse, make sure that the same access policies from the production privileged account (for example, privileged access only from [secured workstations](/security/compass/privileged-access-deployment)) are enforced when authenticating to manage subscriptions.
+
+* If your organization has pre-approved reference architectures, the subscription provisioning can be integrated with resource deployment tools such as [Azure Blueprints](../../governance/blueprints/overview.md) or [Terraform](https://www.terraform.io).
+
+* Given the tenant affinity to Azure Subscriptions, subscription provisioning should be aware of multiple identities for the same human actor (employee, partner, vendor, etc.) across multiple tenants and assign access accordingly.
+
+### Azure AD B2C tenants
+
+* In an Azure AD B2C tenant, the built-in roles don't support PIM. To increase security, we recommend using Azure AD B2B collaboration to onboard the engineering teams managing Customer Identity Access Management (CIAM) from your Azure tenant, and assign them to Azure AD B2C privileged roles.
+
+* Following the emergency access guidelines for Azure AD above, consider creating equivalent [emergency access accounts](../roles/security-emergency-access.md) in addition to the external administrators described above.
+
+* We recommend the logical ownership of the underlying Azure AD subscription of the B2C tenant aligns with the CIAM engineering teams, in the same way that the rest of Azure subscriptions are used for the B2C solutions.
+
+## Operations
+
+The following are additional operational considerations for Azure AD, specific to multiple isolated environments. Check the [Azure Cloud Adoption Framework](/azure/cloud-adoption-framework/manage/), the [Microsoft cloud security benchmark](/security/benchmark/azure/) and [Azure AD Operations guide](./ops-guide-ops.md) for detailed guidance to operate individual environments.
+
+### Cross-environment roles and responsibilities
+
+**Enterprise-wide SecOps architecture** - Members of operations and security teams from all environments in the organization should jointly define the following:
+
+* Principles to define when environments need to be created, consolidated, or deprecated.
+
+* Principles to define management group hierarchy on each environment.
+
+* Billing plane (EA portal / MCA) security posture, operational posture, and delegation approach.
+
+* Tenant creation process.
+
+* Enterprise application taxonomy.
+
+* Azure subscription provisioning process.
+
+* Isolation and administration autonomy boundaries and risk assessment across teams and environments.
+
+* Common baseline configuration and security controls (technical and compensating) and operational baselines to be used in all environments.
+
+* Common standard operational procedures and tooling that spans multiple environments (for example, monitoring, provisioning).
+
+* Agreed upon delegation of roles across multiple environments.
+
+* Segregation of duty across environments.
+
+* Common supply chain management for privileged workstations.
+
+* Naming conventions.
+
+* Cross-environment correlation mechanisms.
+
+**Tenant creation** - A specific team should own creating the tenant following standardized procedures defined by enterprise-wide SecOps architecture. This includes:
+
+* Underlying license provisioning (for example, Microsoft 365).
+
+* Onboarding to corporate billing plan (for example, Azure EA or MCA).
+
+* Creation of Azure management group hierarchy.
+
+* Configuration of management policies for various perimeters including identity, data protection, Azure, etc.
+
+* Deployment of security stack per agreed upon cybersecurity architecture, including diagnostic settings, SIEM onboarding, CASB onboarding, PIM onboarding, etc.
+
+* Configuration of Azure AD roles based on agreed upon delegation.
+
+* Configuration and distribution of initial privileged workstations.
+
+* Provisioning emergency access accounts.
+
+* Configuration of identity provisioning stack.
+
+**Cross-environment tooling architecture** - Some tools such as identity provisioning and source control pipelines might need to work across multiple environments. These tools should be considered critical to the infrastructure and must be architected, designed, implemented, and managed as such. As a result, architects from all environments should be involved whenever cross-environment tools need to be defined.
+
+### Inventory and visibility
+
+**Azure subscription discovery** - For each discovered tenant, an Azure AD global administrator can [elevate access](../../role-based-access-control/elevate-access-global-admin.md) to gain visibility of all subscriptions in the environment. This elevation will assign the global administrator the User Access Administrator built-in role at the root management group.
+
+>[!NOTE]
+>This action is highly privileged and might give the admin access to subscriptions that hold extremely sensitive information if that data has not been properly isolated.
+
+**Enabling read access to discover resources** - Management groups enable RBAC assignment at scale across multiple subscriptions. Customers can grant a Reader role to a centralized IT team by configuring a role assignment in the root management group, which will propagate to all subscriptions in the environment.
+
+**Resource discovery** - After gaining resource Read access in the environment, [Azure Resource Graph](../../governance/resource-graph/overview.md) can be used to query resources in the environment.
+
+### Logging and monitoring
+
+**Central security log management** - Ingest logs from each environment in a [centralized way](/security/benchmark/azure/security-control-logging-monitoring), following consistent best practices across environments (for example, diagnostics settings, log retention, SIEM ingestion, etc.). [Azure Monitor](../../azure-monitor/overview.md) can be used to ingest logs from different sources such as endpoint devices, network, operating systems' security logs, etc.
+
+Detailed information on using automated or manual processes and tools to monitor logs as part of your security operations is available at [Azure Active Directory security operation guide](https://github.com/azure/azops/wiki/introduction).
+
+Some environments might have regulatory requirements that limit which data (if any) can leave a given environment. If centralized monitoring across environments isn't possible, teams should have operational procedures to correlate activities of identities across environments for auditing and forensics purposes such as cross-environment lateral movement attempts. It's recommended that the object unique identifiers human identities belonging to the same person is discoverable, potentially as part of the identity provisioning systems.
+
+The log strategy must include the following Azure AD logs for each tenant used in the organization:
+
+* Sign-in activity
+
+* Audit logs
+
+* Risk events
+
+Azure AD provides [Azure Monitor integration](../reports-monitoring/concept-activity-logs-azure-monitor.md) for the sign-in activity log and audit logs. Risk events can be ingested through [Microsoft Graph API](/graph/tutorial-riskdetection-api).
+
+The following diagram shows the different data sources that need to be incorporated as part of the monitoring strategy:
+
+Azure AD B2C tenants can be [integrated with Azure Monitor](../../active-directory-b2c/azure-monitor.md). We recommend monitoring of Azure AD B2C using the same criteria discussed above for Azure AD.
+
+Subscriptions that have enabled cross-tenant management with Azure Lighthouse can enable cross-tenant monitoring if the logs are collected by Azure Monitor. The corresponding Log Analytics workspaces can reside in the resource tenant and can be analyzed centrally in the managing tenant using Azure Monitor workbooks. To learn more, check [Monitor delegated resources at scale - Azure Lighthouse](../../lighthouse/how-to/monitor-at-scale.md).
+
+### Hybrid infrastructure OS security logs
+
+All hybrid identity infrastructure OS logs should be archived and carefully monitored as a Tier 0 system, given the surface area implications. This includes:
+
+* AD FS servers and Web Application Proxy
+
+* Azure AD Connect
+
+* Application Proxy Agents
+
+* Password write-back agents
+
+* Password Protection Gateway machines
+
+* NPS that has the Azure AD Multi-Factor Authentication RADIUS extension
+
+[Azure AD Connect Health](../hybrid/whatis-azure-ad-connect.md) must be deployed to monitor identity synchronization and federation (when applicable) for all environments.
+
+**Log storage retention** - All environments should have a cohesive log storage retention strategy, design, and implementation to facilitate a consistent toolset (for example, SIEM systems such as Azure Sentinel), common queries, investigation, and forensics playbooks. Azure Policy can be used to set up diagnostic settings.
+
+**Monitoring and log reviewing** - The operational tasks around identity monitoring should be consistent and have owners in each environment. As described above, strive to consolidate these responsibilities across environments to the extent allowed by regulatory compliance and isolation requirements.
+
+The following scenarios must be explicitly monitored and investigated:
+
+* **Suspicious activity** - All [Azure AD risk events](../identity-protection/overview-identity-protection.md) should be monitored for suspicious activity. All tenants should define the network [named locations](../conditional-access/location-condition.md) to avoid noisy detections on location-based signals. [Azure AD Identity Protection](../identity-protection/overview-identity-protection.md) is natively integrated with Azure Security Center. It's recommended that any risk detection investigation includes all the environments the identity is provisioned (for example, if a human identity has an active risk detection in the corporate tenant, the team operating the customer facing tenant should also investigate the activity of the corresponding account in that environment).
+
+* **User entity behavioral analytics (UEBA) alerts** - UEBA should be used to get insightful information based on anomaly detection. [Microsoft Microsoft 365 Defender for Cloud Apps](https://www.microsoft.com/security/business/siem-and-xdr/microsoft-defender-cloud-apps) provides [UEBA in the cloud](/defender-cloud-apps/tutorial-ueba). Customers can integrate [on-premises UEBA from Microsoft Microsoft 365 Defender for Identity](/defender-cloud-apps/mdi-integration). MCAS reads signals from Azure AD Identity Protection.
+
+* **Emergency access accounts activity** - Any access using [emergency access accounts](../fundamentals/security-operations-privileged-accounts.md) should be monitored and [alerts](../users-groups-roles/directory-emergency-access.md) created for investigations. This monitoring must include:
+
+ * Sign-ins
+
+ * Credential management
+
+ * Any updates on group memberships
+
+ * Application Assignments
+
+* **Billing management accounts** - Given the sensitivity of accounts with billing management roles in Azure EA or MCA, and their significant privilege, it's recommended to monitor and alert:
+
+ * Sign in attempts by accounts with billing roles.
+
+ * Any attempt to authenticate to applications other than the EA Portal.
+
+ * Any attempt to authenticate to applications other than Azure Resource Management if using dedicated accounts for MCA billing tasks.
+
+ * Assignment to Azure resources using dedicated accounts for MCA billing tasks.
+
+* **Privileged role activity** - Configure and review security [alerts generated by Azure AD PIM](../privileged-identity-management/pim-how-to-configure-security-alerts.md). If locking down direct RBAC assignments isn't fully enforceable with technical controls (for example, Owner role has to be granted to product teams to do their job), then monitor direct assignment of privileged roles outside PIM by generating alerts whenever a user is assigned directly to access the subscription with Azure RBAC.
+
+* **Classic role assignments** - Organizations should use the modern Azure RBAC role infrastructure instead of the classic roles. As a result, the following events should be monitored:
+
+ * Assignment to classic roles at the subscription level
+
+* **Tenant-wide configurations** - Any tenant-wide configuration service should generate alerts in the system.
+
+ * Updating Custom Domains
+
+ * Updating branding
+
+ * Azure AD B2B allow/block list
+
+ * Azure AD B2B allowed identity providers (SAML IDPs through direct federation or Social Logins)
+
+ * Conditional Access Policies changes
+
+* **Application and service principal objects**
+
+ * New Applications / Service principals that might require Conditional Access policies
+
+ * Application Consent activity
+
+* **Management group activity** - The following Identity Aspects of management groups should be monitored:
+
+ * RBAC role assignments at the MG
+
+ * Azure Policies applied at the MG
+
+ * Subscriptions moved between MGs
+
+ * Any changes to security policies to the Root MG
+
+* **Custom roles**
+
+ * Updates of the custom role definitions
+
+ * New custom roles created
+
+* **Custom governance rules** - If your organizations established any separation of duties rules (for example, a holder of a Global Administrator tenant GA can't be owner/contributor of subscriptions), create alerts or configure periodic reviews to detect violations.
+
+**Other monitoring considerations** - Azure subscriptions that contain resources used for Log Management should be considered as critical infrastructure (Tier 0) and locked down to the Security Operations team of the corresponding environment. Consider using tools such as Azure Policy to enforce additional controls to these subscriptions.
+
+### Operational tools
+
+**Cross-environment** tooling design considerations:
+
+* Whenever possible, operational tools that will be used across multiple tenants should be designed to run as an Azure AD multi-tenant application to avoid redeployment of multiple instances on each tenant and avoid operational inefficiencies. The implementation should include authorization logic in to ensure that isolation between users and data is preserved.
+
+* Add alerts and detections to monitor any cross-environment automation (for example, identity provisioning) and threshold limits for fail-safes. For example, you may want an alert if deprovisioning of user accounts reaches a specific level, as it may indicate a bug or operational error that could have broad impact.
+
+* Any automation that orchestrates cross-environment tasks should be operated as highly privileged system. This system should be homed to the highest security environment and pull from outside sources if data from other environments is required. Data validation and thresholds need to be applied to maintain system integrity. A common cross-environment task is identity lifecycle management to remove identities from all environments for a terminated employee.
+
+**IT service management tools** - Organizations using IT Service Management (ITSM) systems such as ServiceNow should configure [Azure AD PIM role activation settings](../privileged-identity-management/pim-how-to-change-default-settings.md) to request a ticket number as part of the activation purposes.
+
+Similarly, Azure Monitor can be integrated with ITSM systems through the [IT Service Management Connector](../../azure-monitor/alerts/itsmc-overview.md).
+
+**Operational practices** - Minimize operational activities that require direct access to the environment to human identities. Instead model them as Azure Pipelines that execute common operations (for example, add capacity to a PaaS solution, run diagnostics, etc.) and model direct access to the Azure Resource Manager interfaces to "break glass" scenarios.
+
+### Operations challenges
+
+* Activity of Service Principal Monitoring is limited for some scenarios
+
+* Azure AD PIM alerts don't have an API. The mitigation is to have a regular review of those PIM alerts.
+
+* Azure EA Portal doesn't provide monitoring capabilities. The mitigation is to have dedicated administration accounts and monitor the account activity.
+
+* MCA doesn't provide audit logs for billing tasks. The mitigation is to have dedicated administration accounts and monitor the account activity.
+
+* Some services in Azure needed to operate the environment need to be redeployed and reconfigured across environments as they can't be multi-tenant or multi-cloud.
+
+* There's no full API coverage across Microsoft Online Services to fully achieve infrastructure as code. The mitigation is to use APIs as much as possible and use portals for the remainder. This [Open-Source initiative](https://microsoft365dsc.com/) to help you with determining an approach that might work for your environment.
+
+* There's no programmatic capability to discover resource tenants that have delegated subscription access to identities in a managing tenant. For example, if an email address enabled a security group in the contoso.com tenant to manage subscriptions in the fabrikam.com tenant, administrators in the contoso.com don't have an API to discover that this delegation took place.
+
+* Specific account activity monitoring (for example, break-glass account, billing management account) isn't provided out of the box. The mitigation is for customers to create their own alert rules.
+
+* Tenant-wide configuration monitoring isn't provided out of the box. The mitigation is for customers to create their own alert rules.
+
+## Next steps
+
+* [Introduction to delegated administration and isolated environments](secure-introduction.md)
+
+* [Azure AD fundamentals](secure-with-azure-ad-fundamentals.md)
+
+* [Azure resource management fundamentals](secure-with-azure-ad-resource-management.md)
+
+* [Resource isolation in a single tenant](secure-with-azure-ad-single-tenant.md)
+
+* [Resource isolation with multiple tenants](secure-with-azure-ad-multiple-tenants.md)
active-directory Secure Fundamentals https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-fundamentals.md
+
+ Title: Fundamentals of securing with Azure Active Directory
+description: Fundamentals of securing your tenants in Azure Active Directory.
+++++++ Last updated : 7/5/2022++++++
+# Azure Active Directory fundamentals
+
+Azure Active Directory (Azure AD) provides an identity and access boundary for Azure resources and trusting applications. Most environment-separation requirements can be fulfilled with delegated administration in a single Azure AD tenant. This configuration reduces management overhead of your systems. However, some specific cases, for example complete resource and identity isolation, require multiple tenants.
+
+You must determine your environment separation architecture based on your needs. Areas to consider include:
+
+* **Resource separation**. If a resource can change directory objects such as user objects, and the change would interfere with other resources, the resource may need to be isolated in a multi-tenant architecture.
+
+* **Configuration separation**. Tenant-wide configurations affect all resources. The effect of some tenant-wide configurations can be scoped with conditional access (CA) policies and other methods. If you have a need for different tenant configurations that can't be scoped with CA policies, you may need a multi-tenant architecture.
+
+* **Administrative separation**. You can delegate the administration of management groups, subscriptions, resource groups, resources, and some policies within a single tenant. A Global Administrator always has access to everything within the tenant. If you need to ensure that the environment doesn't share administrators with another environment, you need a multi-tenant architecture.
+
+To stay secure, you must follow best practices for identity provisioning, authentication management, identity governance, lifecycle management, and operations consistently across all tenants.
+
+## Terminology
+
+This list of terms is commonly associated with Azure AD and relevant to this content:
+
+**Azure AD tenant**. A dedicated and trusted instance of Azure AD that is automatically created when your organization signs up for a Microsoft cloud service subscription. Examples of subscriptions include Microsoft Azure, Microsoft Intune, or Microsoft 365. An Azure AD tenant generally represents a single organization or security boundary. The Azure AD tenant includes the users, groups, devices, and applications used to perform identity and access management (IAM) for tenant resources.
+
+**Environment**. In the context of this content, an environment is a collection of Azure subscriptions, Azure resources, and applications that are associated with one or more Azure AD tenets. The Azure AD tenant provides the identity control plane to govern access to these resources.
+
+**Production environment**. In the context of this content, a production environment is the live environment with the infrastructure and services that end users directly interact with. For example, a corporate or customer-facing environment.
+
+**Non-production environment**. In the context of this content, a nonproduction environment refers to an environment used for:
+
+* Development
+
+* Testing
+
+* Lab purposes
+
+Non-production environments are commonly referred to as sandbox environments.
+
+**Identity**. An identity is a directory object that can be authenticated and authorized for access to a resource. Identity objects exist for human identities and non-human identities. Non-human entities include:
+
+* Application objects
+
+* Workload identities (formerly described as service principles)
+
+* Managed identities
+
+* Devices
+
+**Human identities** are user objects that generally represent people in an organization. These identities are either created and managed directly in Azure AD or are synchronized from an on-premises Active Directory to Azure AD for a given organization. These types of identities are referred to as **local identities**. There can also be user objects invited from a partner organization or a social identity provider using [Azure AD B2B collaboration](../external-identities/what-is-b2b.md). In this content, we refer to these types of identity as **external identities**.
+
+**Non-human identities** include any identity not associated with a human. This type of identity is an object such as an application that requires an identity to run. In this content, we refer to this type of identity as a **workload identity**. Various terms are used to describe this type of identity, including [application objects and service principals](../../marketplace/manage-aad-apps.md).
+
+* **Application object**. An Azure AD application is defined by its application object. The object resides in the Azure AD tenant where the application registered. The tenant is known as the application's "home" tenant.
+
+ * **Single-tenant** applications are created to only authorize identities coming from the "home" tenant.
+
+ * **Multi-tenant** applications allow identities from any Azure AD tenant to authenticate.
+
+* **Service principal object**. Although there are [exceptions](../../marketplace/manage-aad-apps.md), application objects can be considered the *definition* of an application. Service principal objects can be considered an instance of an application. Service principals generally reference an application object, and one application object is referenced by multiple service principals across directories.
+
+**Service principal objects** are also directory identities that can perform tasks independently from human intervention. The service principal defines the access policy and permissions for a user or application in the Azure AD tenant. This mechanism enables core features such as authentication of the user or application during sign-in and authorization during resource access.
+
+Azure AD allows application and service principal objects to authenticate with a password (also known as an application secret), or with a certificate. The use of passwords for service principals is discouraged and [we recommend using a certificate](../develop/howto-create-service-principal-portal.md) whenever possible.
+
+* **Managed identities for Azure resources**. Managed identities are special service principals in Azure AD. This type of service principal can be used to authenticate against services that support Azure AD authentication without needing to store credentials in your code or handle secrets management. For more information, see [What are managed identities for Azure resources?](../managed-identities-azure-resources/overview.md)
+
+* **Device identity**: A device identity verifies the device in the authentication flow has undergone a process to attest the device is legitimate and meets the technical requirements. Once the device has successfully completed this process, the associated identity can be used to further control access to an organization's resources. With Azure AD, devices can authenticate with a certificate.
+
+Some legacy scenarios required a human identity to be used in *non-human* scenarios. For example, when service accounts being used in on-premises applications such as scripts or batch jobs require access to Azure AD. This pattern isn't recommended and we recommend you use [certificates](../authentication/concept-certificate-based-authentication-technical-deep-dive.md). However, if you do use a human identity with password for authentication, protect your Azure AD accounts with [Azure Active Directory Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md).
+
+**Hybrid identity**. A hybrid identity is an identity that spans on-premises and cloud environments. This provides the benefit of being able to use the same identity to access on-premises and cloud resources. The source of authority in this scenario is typically an on-premises directory, and the identity lifecycle around provisioning, de-provisioning and resource assignment is also driven from on-premises. For more information, see [Hybrid identity documentation](../hybrid/index.yml).
+
+**Directory objects**. An Azure AD tenant contains the following common objects:
+
+* **User objects** represent human identities and non-human identities for services that currently don't support service principals. User objects contain attributes that have the required information about the user including personal details, group memberships, devices, and roles assigned to the user.
+
+* **Device objects** represent devices that are associated with an Azure AD tenant. Device objects contain attributes that have the required information about the device. This includes the operating system, associated user, compliance state, and the nature of the association with the Azure AD tenant. This association can take multiple forms depending on the nature of the interaction and trust level of the device.
+
+ * **Hybrid Domain Joined**. Devices that are owned by the organization and [joined](../devices/concept-azure-ad-join-hybrid.md) to both the on-premises Active Directory and Azure AD. Typically a device purchased and managed by an organization and managed by System Center Configuration Manager.
+
+ * **Azure AD Domain Joined**. Devices that are owned by the organization and joined to the organization's Azure AD tenant. Typically a device purchased and managed by an organization that is joined to Azure AD and managed by a service such as [Microsoft Intune](https://www.microsoft.com/microsoft-365/enterprise-mobility-security/microsoft-intune).
+
+ * **Azure AD Registered**. Devices not owned by the organization, for example, a personal device, used to access company resources. Organizations may require the device be enrolled via [Mobile Device Management (MDM)](https://www.microsoft.com/itshowcase/mobile-device-management-at-microsoft), or enforced through [Mobile Application Management (MAM)](/office365/enterprise/office-365-client-support-mobile-application-management) without enrollment to access resources. This capability can be provided by a service such as Microsoft Intune.
+
+* **Group objects** contain objects for the purposes of assigning resource access, applying controls, or configuration. Group objects contain attributes that have the required information about the group including the name, description, group members, group owners, and the group type. Groups in Azure AD take multiple forms based on an organization's requirements and can be mastered in Azure AD or synchronized from on-premises Active Directory Domain Services (AD DS).
+
+ * **Assigned groups**. In Assigned groups, users are added to or removed from the group manually, synchronized from on-premises AD DS, or updated as part of an automated scripted workflow. An assigned group can be synchronized from on-premises AD DS or can be homed in Azure AD.
+
+ * **Dynamic membership groups**. In Dynamic groups, users are assigned to the group automatically based on defined attributes. This allows group membership to be dynamically updated based on data held within the user objects. A dynamic group can only be homed in Azure AD.
+
+**Microsoft Account (MSA)**. You can create Azure subscriptions and tenants using Microsoft Accounts (MSA). A Microsoft Account is a personal account (as opposed to an organizational account) and is commonly used by developers and for trial scenarios. When used, the personal account is always made a guest in an Azure AD tenant.
+
+## Azure AD functional areas
+
+These are the functional areas provided by Azure AD that are relevant to isolated environments. To learn more about the capabilities of Azure AD, see [What is Azure Active Directory?](../fundamentals/active-directory-whatis.md).
+
+### Authentication
+
+**Authentication**. Azure AD provides support for authentication protocols compliant with open standards such as Open ID Connect, OAuth and SAML. Azure AD also provides capabilities to allow organizations to federate existing on-premises identity providers such as Active Directory Federation Services (AD FS) to authenticate access to Azure AD integrated applications.
+
+Azure AD provides industry-leading strong authentication options that organizations can use to secure access to resources. Azure Active Directory Multi-Factor Authentication, device authentication and password-less capabilities allow organizations to deploy strong authentication options that suit their workforce's requirements.
+
+**Single sign-on (SSO)**. With single sign-on, users sign in once with one account to access all resources that trust the directory such as domain-joined devices, company resources, software as a service (SaaS) applications, and all Azure AD integrated applications. For more information, see [single sign-on to applications in Azure Active Directory](../manage-apps/what-is-single-sign-on.md).
+
+### Authorization
+
+**Resource access assignment**. Azure AD provides and secures access to resources. Assigning access to a resource in Azure AD can be done in two ways:
+
+* **User assignment**: The user is directly assigned access to the resource and the appropriate role or permission is assigned to the user.
+
+* **Group assignment**: A group containing one or more users is assigned to the resource and the appropriate role or permission is assigned to the group
+
+**Application access policies**. Azure AD provides capabilities to further control and secure access to your organization's applications.
+
+**Conditional Access**. Azure AD Conditional Access policies are tools to bring user and device context into the authorization flow when accessing Azure AD resources. Organizations should explore use of Conditional Access policies to allow, deny, or enhance authentication based on user, risk, device, and network context. For more information, see the [Azure AD Conditional Access documentation](../conditional-access/index.yml).
+
+**Azure AD Identity Protection**. This feature enables organizations to automate the detection and remediation of identity-based risks, investigate risks, and export risk detection data to third-party utilities for further analysis. For more information, see [overview on Azure AD Identity Protection](../identity-protection/overview-identity-protection.md).
+
+### Administration
+
+**Identity management**. Azure AD provides tools to manage the lifecycle of user, group, and device identities. [Azure AD Connect](../hybrid/whatis-azure-ad-connect.md) enables organizations to extend current, on-premises identity management solution to the cloud. Azure AD Connect manages the provisioning, de-provisioning, and updates to these identities in Azure AD.
+
+Azure AD also provides a portal and the Microsoft Graph API to allow organizations to manage identities or integrate Azure AD identity management into existing workflows or automation. To learn more about Microsoft Graph, see [Use the Microsoft Graph API](/graph/use-the-api).
+
+**Device management**. Azure AD is used to manage the lifecycle and integration with cloud and on-premises device management infrastructures. It also is used to define policies to control access from cloud or on-premises devices to your organizational data. Azure AD provides the lifecycle services of devices in the directory and the credential provisioning to enable authentication. It also manages a key attribute of a device in the system that is the level of trust. This detail is important when designing a resource access policy. For more information, see [Azure AD Device Management documentation](../devices/index.yml).
+
+**Configuration management**. Azure AD has service elements that need to be configured and managed to ensure the service is configured to an organization's requirements. These elements include domain management, SSO configuration, and application management to name but a few. Azure AD provides a portal and the Microsoft Graph API to allow organizations to manage these elements or integrate into existing processes. To learn more about Microsoft Graph, see [Use the Microsoft Graph API](/graph/use-the-api).
+
+### Governance
+
+**Identity lifecycle**. Azure AD provides capabilities to create, retrieve, delete, and update identities in the directory, including external identities. Azure AD also [provides services to automate the identity lifecycle](../app-provisioning/how-provisioning-works.md) to ensure it's maintained in line with your organization's needs. For example, using Access Reviews to remove external users who haven't signed in for a specified period.
+
+**Reporting and analytics**. An important aspect of identity governance is visibility into user actions. Azure AD provides insights into your environment's security and usage patterns. These insights include detailed information on:
+
+* What your users access
+
+* Where they access it from
+
+* The devices they use
+
+* Applications used to access
+
+Azure AD also provides information on the actions that are being performed within Azure AD, and reports on security risks. For more information, see [Azure Active Directory reports and monitoring](../reports-monitoring/index.yml).
+
+**Auditing**. Auditing provides traceability through logs for all changes done by specific features within Azure AD. Examples of activities found in audit logs include changes made to any resources within Azure AD like adding or removing users, apps, groups, roles, and policies. Reporting in Azure AD enables you to audit sign-in activities, risky sign-ins, and users flagged for risk. For more information, see [Audit activity reports in the Azure portal](../reports-monitoring/concept-audit-logs.md).
+
+**Access certification**. Access certification is the process to prove that a user is entitled to have access to a resource at a point in time. Azure AD Access Reviews continually review the memberships of groups or applications and provide insight to determine whether access is required or should be removed. This enables organizations to effectively manage group memberships, access to enterprise applications, and role assignments to make sure only the right people have continued access. For more information, see [What are Azure AD access reviews?](../governance/access-reviews-overview.md)
+
+**Privileged access**. [Azure AD Privileged Identity Management](../privileged-identity-management/pim-configure.md) (PIM) provides time-based and approval-based role activation to mitigate the risks of excessive, unnecessary, or misused access permissions to Azure resources. It's used to protect privileged accounts by lowering the exposure time of privileges and increasing visibility into their use through reports and alerts.
+
+### Self-service management
+
+**Credential registration**. Azure AD provides capabilities to manage all aspects of user identity lifecycle and self-service capabilities to reduce the workload of an organization's helpdesk.
+
+**Group management**. Azure AD provides capabilities that enable users to request membership in a group for resource access and to create groups that can be used for securing resources or collaboration. These capabilities can be controlled by the organization so that appropriate controls are put in place.
+
+### Consumer Identity and Access Management (IAM)
+
+**Azure AD B2C**. Azure AD B2C is a service that can be enabled in an Azure subscription to provide identities to consumers for your organization's customer-facing applications. This is a separate island of identity and these users don't appear in the organization's Azure AD tenant. Azure AD B2C is managed by administrators in the tenant associated with the Azure subscription.
+
+## Next steps
+
+* [Introduction to delegated administration and isolated environments](secure-introduction.md)
+
+* [Azure resource management fundamentals](secure-with-azure-ad-resource-management.md)
+
+* [Resource isolation in a single tenant](secure-with-azure-ad-single-tenant.md)
+
+* [Resource isolation with multiple tenants](secure-with-azure-ad-multiple-tenants.md)
+
+* [Best practices](secure-best-practices.md)
active-directory Secure Introduction https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-introduction.md
+
+ Title: Delegated administration to secure with Azure Active Directory
+description: Introduction to delegated administration and isolated environments in Azure Active Directory.
+++++++ Last updated : 7/5/2022++++++
+# Introduction to delegated administration and isolated environments
+
+An Azure Active Directory (Azure AD) single-tenant architecture with delegated administration is often adequate for separating environments. As detailed in other sections of this article, Microsoft provides many tools to do this. However, there may be times when your organization requires a degree of isolation beyond what can be achieved in a single tenant.
+
+Before discussing specific architectures, it's important to understand:
+
+* How a typical single tenant works.
+
+* How administrative units in Azure AD work.
+
+* The relationships between Azure resources and Azure AD tenants.
+
+* Common requirements driving isolation.
+
+## Azure AD tenant as a security boundary
+
+An Azure AD tenant provides identity and access management (IAM) capabilities to applications and resources used by the organization.
+
+An identity is a directory object that can be authenticated and authorized for access to a resource. Identity objects exist for human identities and non-human identities. To differentiate between human and non-human identities, human identities are referred to as identities and non-human identities are referred to as workload identities. Non-human entities include application objects, service principals, managed identities, and devices. The terminology is inconsistent across the industry, but generally a workload identity is something you need for your software entity to authenticate with some system.
+
+To distinguish between human and non-human identities, different terms are emerging across the IT industry to distinguish between the two:
+
+* **Identity** - Identity started by describing the Active Directory (AD) and Azure AD object used by humans to authenticate. In this series of articles, identity refers to objects that represent humans.
+
+* **Workload identity** - In Azure Active Directory (Azure AD), workload identities are applications, service principals, and managed identities. The workload identity is used to authenticate and access other services and resources.
+
+For more information on workload identities, see [What are workload identities](../develop/workload-identities-overview.md).
+
+The Azure AD tenant is an identity security boundary that is under the control of global administrators. Within this security boundary, administration of subscriptions, management groups, and resource groups can be delegated to segment administrative control of Azure resources. While not directly interacting, these groupings are dependent on tenant-wide configurations of policies and settings. And those settings and configurations are under the control of the Azure AD Global Administrators.
+
+Azure AD is used to grant objects representing identities access to applications and Azure resources. In that sense both Azure resources and applications trusting Azure AD are resources that can be managed with Azure AD. In the following diagram, The Azure AD tenant boundary shows the Azure AD identity objects and the configuration tools. Below the directory are the resources that use the identity objects for identity and access management. Following best practices, the environment is set up with a test environment to test the proper operation of IAM.
+
+![Diagram that shows shows Azure AD tenant boundary.](media/secure-introduction/tenant-boundary.png)
+
+### Access to apps that use Azure AD
+
+Identities can be granted access to many types of applications. Examples include:
+
+* Microsoft productivity services such as Exchange Online, Microsoft Teams, and SharePoint Online
+
+* Microsoft IT services such as Azure Sentinel, Microsoft Intune, and Microsoft 365 Defender ATP
+
+* Microsoft Developer tools such as Azure DevOps and Microsoft Graph API
+
+* SaaS solutions such as Salesforce and ServiceNow
+
+* On-premises applications integrated with hybrid access capabilities such as Azure AD Application Proxy
+
+* Custom in-house developed applications
+
+Applications that use Azure AD require directory objects to be configured and managed in the trusted Azure AD tenant. Examples of directory objects include application registrations, service principals, groups, and [schema attribute extensions](/graph/extensibility-overview).
+
+### Access to Azure resources
+
+Users, groups, and service principal objects (workload identities) in the Azure AD tenant are granted roles by using [Azure Role Based Access Control](../../role-based-access-control/overview.md) (RBAC) and [Azure attribute-based access control](../../role-based-access-control/conditions-overview.md) (ABAC).
+
+* Azure RBAC enables you to provide access based on role as determined by security principal, role definition, and scope.
+
+* Azure ABAC builds on Azure RBAC by adding role assignment conditions based on attributes in the context of specific actions. A role assignment condition is another check that you can optionally add to your role assignment to provide more fine-grained access control.
+
+Azure resources, resource groups, subscriptions, and management groups are accessed through using these assigned RBAC roles. For example, the following diagram shows distribution of administrative capability in Azure AD using role-based access control.
+
+![Diagram that shows Azure AD role hierarchy.](media/secure-introduction/role-hierarchy.png)
+
+Azure resources that [support Managed Identities](../managed-identities-azure-resources/overview.md) allow resources to authenticate, be granted access to, and be assigned roles to other resources within the Azure AD tenant boundary.
+
+Applications using Azure AD for sign-in may also use Azure resources such as compute or storage as part of its implementation. For example, a custom application that runs in Azure and trusts Azure AD for authentication has directory objects and Azure resources.
+
+Lastly, all Azure resources in the Azure AD tenant affect tenant-wide [Azure Quotas and Limits](../../azure-resource-manager/management/azure-subscription-service-limits.md).
+
+### Access to Directory Objects
+
+As outlined in the previous diagram, identities, resources, and their relationships are represented in an Azure AD tenant as directory objects. Examples of directory objects include users, groups, service principals, and app registrations.
+
+Having a set of directory objects in the Azure AD tenant boundary engenders the following Capabilities:
+
+* Visibility. Identities can discover or enumerate resources, users, groups, access usage reporting and audit logs based on their permissions. For example, a member of the directory can discover users in the directory per Azure AD [default user permissions](../fundamentals/users-default-permissions.md).
+
+* Applications can affect objects. Applications can manipulate directory objects through Microsoft Graph as part of their business logic. Typical examples include reading/setting user attributes, updating user's calendar, sending emails on behalf of the user, etc. Consent is necessary to allow applications to affect the tenant. Administrators can consent for all users. For more information, see [Permissions and consent in the Microsoft identity platform](../develop/v2-admin-consent.md).
+
+>[!NOTE]
+>Use caution when using application permissions. For example, with Exchange Online, you should [scope application permissions to specific mailboxes and permissions](/graph/auth-limit-mailbox-access).
+
+* Throttling and service limits. Runtime behavior of a resource might trigger [throttling](/graph/throttling) in order to prevent overuse or service degradation. Throttling can occur at the application, tenant, or entire service level. Most commonly it occurs when an application has a large number of requests within or across tenants. Similarly, there are [Azure AD service limits and restrictions](../enterprise-users/directory-service-limits-restrictions.md) that might affect the runtime behavior of applications.
+
+## Administrative units for role management
+
+Administrative units restrict permissions in a role to any portion of your organization that you define. You could, for example, use administrative units to delegate the [Helpdesk Administrator](../roles/permissions-reference.md) role to regional support specialists, so they can manage users only in the region that they support. An administrative unit is an Azure AD resource that can be a container for other Azure AD resources. An administrative unit can contain only:
+
+* Users
+
+* Groups
+
+* Devices
+
+In the following diagram, administrative units are used to segment the Azure AD tenant further based on the business or organizational structure. This is useful when different business units or groups have dedicated IT support staff. The administrative units can be used to provide privileged permissions that are limited to a designated administrative unit.
+
+![Diagram that shows Azure AD Administrative units.](media/secure-introduction/administrative-units.png)
+
+For more information on administrative units, see [Administrative units in Azure Active Directory](../roles/administrative-units.md).
+
+### Common reasons for resource isolation
+
+Sometimes a group of resources should be isolated from other resources for security or other reasons, such as the resources have unique access requirements. This is a good use case for using administrative units. You must determine which users and security principals should have resource access and in what roles. Reasons to isolate resources might include:
+
+* Developer teams need the flexibility to safely iterate during the software development lifecycle of apps. But the development and testing of apps that write to Azure AD can potentially affect the Azure AD tenant through write operations. Some examples of this include:
+
+ * New applications that may change Office 365 content such as SharePoint sites, OneDrive, MS Teams, etc.
+
+ * Custom applications that can change data of users with MS Graph or similar APIs at scale (for example, applications that are granted Directory.ReadWrite.All)
+
+ * DevOps scripts that update large sets of objects as part of a deployment lifecycle.
+
+ * Developers of Azure AD integrated apps need the ability to create user objects for testing, and those user objects shouldn't have access to production resources.
+
+* Nonproduction Azure resources and applications that may affect other resources. For example, a new beta version of a SaaS application may need to be isolated from the production instance of the application and production user objects
+
+* Secret resources that should be shielded from discovery, enumeration, or takeover from existing administrators for regulatory or business critical reasons.
+
+## Configuration in a tenant
+
+Configuration settings in Azure AD can affect any resource in the Azure AD tenant through targeted, or tenant-wide management actions. Examples of tenant-wide settings include:
+
+* **External identities**: Global administrators for the tenant identify and control the external identities that can be provisioned in the tenant.
+
+ * Whether to allow external identities in the tenant.
+
+ * From which domain(s) external identities can be added.
+
+ * Whether users can invite users from other tenants.
+
+* **Named Locations**: Global administrators can create named locations, which can then be used to
+
+ * Block sign-ins from specific locations.
+
+ * Trigger conditional access policies such as MFA.
+
+ * Bypass security requirements
+
+>[!NOTE]
+>Using [Named Locations](../conditional-access/location-condition.md) can present some challenges to your [zero-trust journey](https://www.microsoft.com/security/business/zero-trust). Verify that using Named Locations fits into your security strategy and principles.
+Allowed authentication methods: Global administrators set the authentication methods allowed for the tenant.
+
+* **Self-service options**. Global Administrators set self-service options such as self-service-password reset and create Microsoft 365 groups at the tenant level.
+
+The implementation of some tenant-wide configurations can be scoped as long as they don't get overridden by global administration policies. For example:
+
+* If the tenant is configured to allow external identities, a resource administrator can still exclude those identities from accessing a resource.
+
+* If the tenant is configured to allow personal device registration, a resource administrator can exclude those devices from accessing specific resources.
+
+* If named locations are configured, a resource administrator can configure policies either allowing or excluding access from those locations.
+
+### Common reasons for configuration isolation
+
+Configurations, controlled by Global Administrators, affect resources. While some tenant-wide configuration can be scoped with policies to not apply or partially apply to a specific resource, others can't. If a resource has configuration needs that are unique, isolate it in a separate tenant. Examples of configuration isolation scenarios include:
+
+* Resources having requirements that conflict with existing tenant-wide security or collaboration postures. (for example allowed authentication types, device management policies, ability to self-service, identity proofing for external identities, etc.).
+
+* Compliance requirements that scope certification to the entire environment, including all resources and the Azure AD tenant itself, especially when those requirements conflict with or must exclude other organizational resources.
+
+* External user access requirements that conflict with production or sensitive resource policies.
+
+* Organizations that span multiple countries and regions, and companies hosted in a single Azure AD Tenant. For example, what settings and licenses are used in different countries or regions, or business subsidiaries.
+
+## Administration in a tenant
+
+Identities with privileged roles in the Azure AD tenant have the visibility and permissions to execute the configuration tasks described in the previous sections. Administration includes both the administration of identity objects such as users, groups, and devices, and the scoped implementation of tenant-wide configurations for authentication, authorization, etc.
+
+### Administration of directory objects
+
+Administrators manage how identity objects can access resources, and under what circumstances. They also can disable, delete, or modify directory objects based on their privileges. Identity objects include:
+
+* **Organizational identities**, such as the following, are represented by user objects:
+
+ * Administrators
+
+ * Organizational users
+
+ * Organizational developers
+
+ * Service Accounts
+
+ * Test users
+
+* **External identities** represent users from outside the organization such as:
+
+ * Partners, suppliers, or vendors that are provisioned with accounts local to the organization environment
+
+ * Partners, suppliers, or vendors that are provisioned via Azure B2B collaboration
+
+* **Groups** are represented by objects such as:
+
+ * Security groups
+
+ * [Microsoft 365 groups](/microsoft-365/community/all-about-groups)
+
+ * Dynamic Groups
+
+ * Administrative Units
+
+* **Devices** are represented by objects such as:
+
+ * Hybrid Azure AD joined devices (On-premises computers synchronized from on-premises Active Directory)
+
+ * Azure AD joined devices
+
+ * Azure AD registered mobile devices used by employees to access their workplace applications.
+
+ * Azure AD registered down-level devices (legacy). For example, Windows 2012 R2.
+
+* **Workload Identities**
+ * Managed identities
+
+ * Service principals
+
+ * Applications
+
+In a hybrid environment, identities are typically synchronized from the on-premises Active Directory environment using [Azure AD Connect](../hybrid/whatis-azure-ad-connect.md).
+
+### Administration of identity services
+
+Administrators with appropriate permissions can also manage how tenant-wide policies are implemented at the level of resource groups, security groups, or applications. When considering administration of resources, keep the following in mind. Each can be a reason to keep resources together, or to isolate them.
+
+* A **Global Administrator** can take control of any Azure subscription linked to the Tenant.
+
+* An **identity assigned an Authentication Administrator role** can require nonadministrators to reregister for MFA or FIDO authentication.
+
+* A **Conditional Access (CA) Administrator** can create CA policies that require users signing-in to specific apps to do so only from organization-owned devices. They can also scope configurations. For example, even if external identities are allowed in the tenant, they can exclude those identities from accessing a resource.
+
+* A **Cloud Application Administrator** can consent to application permissions on behalf of all users.
+
+### Common reasons for administrative isolation
+
+Who should have the ability to administer the environment and its resources? There are times when administrators of one environment must not have access to another environment. Examples include:
+
+* Separation of tenant-wide administrative responsibilities to further mitigate the risk of security and operational errors affecting critical resources.
+
+* Regulations that constrain who can administer the environment based on conditions such as citizenship, residency, clearance level, etc. that can't be accommodated with staff.
+
+## Security and operational considerations
+
+Given the interdependence between an Azure AD tenant and its resources, it's critical to understand the security and operational risks of compromise or error. If you're operating in a federated environment with synchronized accounts, an on-premises compromise can lead to an Azure AD compromise.
+
+* **Identity compromise** - Within the boundary of a tenant, any identity can be assigned any role, given the one providing access has sufficient privileges. While the effect of compromised non-privileged identities is largely contained, compromised administrators can have broad implications. For example, if an Azure AD global administrator account is compromised, Azure resources can become compromised. To mitigate risk of identity compromise, or bad actors, implement [tiered administration](/security/compass/privileged-access-access-model) and ensure that you follow principles of least privilege for [Azure AD Administrator Roles](../roles/delegate-by-task.md). Similarly, ensure that you create CA policies that specifically exclude test accounts and test service principals from accessing resources outside of the test applications. For more information on privileged access strategy, see [Privileged access: Strategy](/security/compass/privileged-access-strategy).
+
+* **Federated environment compromise**
+
+* **Trusting resource compromise** - Human identities aren't the only security consideration. Any compromised component of the Azure AD tenant can affect trusting resources based on its level of permissions at the tenant and resource level. The effect of a compromised component of an Azure AD trusting resource is determined by the privileges of the resource; resources that are deeply integrated with the directory to perform write operations can have profound impact in the entire tenant. Following [guidance for zero trust](/azure/architecture/guide/security/conditional-access-zero-trust) can help limit the impact of compromise.
+
+* **Application development** - Early stages of the development lifecycle for applications with writing privileges to Azure AD, where bugs can unintentionally write changes to the Azure AD objects, present a risk. Follow [Microsoft Identity platform best practices](../develop/identity-platform-integration-checklist.md) during development to mitigate these risks.
+
+* **Operational error** - A security incident can occur not only due to bad actors, but also because of an operational error by tenant administrators or the resource owners. These risks occur in any architecture. Mitigate these risks with separation of duties, tiered administration, following principles of least privilege, and following best practices before trying to mitigate by using a separate tenant.
+
+Incorporating zero-trust principles into your Azure AD design strategy can help guide your design to mitigate these considerations. For more information, visit [Embrace proactive security with Zero Trust](https://www.microsoft.com/security/business/zero-trust).
+
+## Next steps
+
+* [Azure AD fundamentals](secure-with-azure-ad-fundamentals.md)
+
+* [Azure resource management fundamentals](secure-with-azure-ad-resource-management.md)
+
+* [Resource isolation in a single tenant](secure-with-azure-ad-single-tenant.md)
+
+* [Resource isolation with multiple tenants](secure-with-azure-ad-multiple-tenants.md)
+
+* [Best practices](secure-best-practices.md)
active-directory Secure With Azure Ad Multiple Tenants https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-with-azure-ad-multiple-tenants.md
Devices: This tenant contains a reduced number of devices; only those that are n
## Next steps
-* [Introduction to delegated administration and isolated environments](secure-with-azure-ad-introduction.md)
+* [Introduction to delegated administration and isolated environments](secure-introduction.md)
* [Azure AD fundamentals](secure-with-azure-ad-fundamentals.md)
Devices: This tenant contains a reduced number of devices; only those that are n
* [Resource isolation in a single tenant](secure-with-azure-ad-single-tenant.md)
-* [Best practices](secure-with-azure-ad-best-practices.md)
+* [Best practices](secure-best-practices.md)
active-directory Secure With Azure Ad Resource Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-with-azure-ad-resource-management.md
For this isolated model, it's assumed that there's no connectivity to the VNet t
## Next steps
-* [Introduction to delegated administration and isolated environments](secure-with-azure-ad-introduction.md)
+* [Introduction to delegated administration and isolated environments](secure-introduction.md)
* [Azure AD fundamentals](secure-with-azure-ad-fundamentals.md)
For this isolated model, it's assumed that there's no connectivity to the VNet t
* [Resource isolation with multiple tenants](secure-with-azure-ad-multiple-tenants.md)
-* [Best practices](secure-with-azure-ad-best-practices.md)
+* [Best practices](secure-best-practices.md)
active-directory Secure With Azure Ad Single Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/secure-with-azure-ad-single-tenant.md
Configuration settings such authentication methods allowed, hybrid configuration
## Next steps
-* [Introduction to delegated administration and isolated environments](secure-with-azure-ad-introduction.md)
+* [Introduction to delegated administration and isolated environments](secure-introduction.md)
* [Azure AD fundamentals](secure-with-azure-ad-fundamentals.md)
Configuration settings such authentication methods allowed, hybrid configuration
* [Resource isolation with multiple tenants](secure-with-azure-ad-multiple-tenants.md)
-* [Best practices](secure-with-azure-ad-best-practices.md)
+* [Best practices](secure-best-practices.md)
active-directory Users Default Permissions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/fundamentals/users-default-permissions.md
You can restrict default permissions for member users in the following ways:
| **Create Microsoft 365 groups** | Setting this option to **No** prevents users from creating Microsoft 365 groups. Setting this option to **Some** allows a set of users to create Microsoft 365 groups. Global administrators and user administrators can still create Microsoft 365 groups. To learn how, see [Azure Active Directory cmdlets for configuring group settings](../enterprise-users/groups-settings-cmdlets.md). | | **Restrict access to Azure AD administration portal** | **What does this switch do?** <br>**No** lets non-administrators browse the Azure AD administration portal. <br>**Yes** Restricts non-administrators from browsing the Azure AD administration portal. Non-administrators who are owners of groups or applications are unable to use the Azure portal to manage their owned resources. </p><p></p><p>**What does it not do?** <br> It doesn't restrict access to Azure AD data using PowerShell, Microsoft GraphAPI, or other clients such as Visual Studio. <br>It doesn't restrict access as long as a user is assigned a custom role (or any role). </p><p></p><p>**When should I use this switch?** <br>Use this option to prevent users from misconfiguring the resources that they own. </p><p></p><p>**When should I not use this switch?** <br>Don't use this switch as a security measure. Instead, create a Conditional Access policy that targets Microsoft Azure Management that blocks non-administrators access to [Microsoft Azure Management](../conditional-access/concept-conditional-access-cloud-apps.md#microsoft-azure-management). </p><p></p><p> **How do I grant only a specific non-administrator users the ability to use the Azure AD administration portal?** <br> Set this option to **Yes**, then assign them a role like global reader. </p><p></p><p>**Restrict access to the Entra administration portal** <br>A Conditional Access policy that targets Microsoft Azure Management targets access to all Azure management. | | **Restrict non-admin users from creating tenants** | Users can create tenants in the Azure AD and Entra administration portal under Manage tenant. The creation of a tenant is recorded in the Audit log as category DirectoryManagement and activity Create Company. Anyone who creates a tenant becomes the Global Administrator of that tenant. The newly created tenant doesn't inherit any settings or configurations. </p><p></p><p>**What does this switch do?** <br> Setting this option to **Yes** restricts creation of Azure AD tenants to the Global Administrator or tenant creator roles. Setting this option to **No** allows non-admin users to create Azure AD tenants. Tenant create will continue to be recorded in the Audit log. </p><p></p><p>**How do I grant only a specific non-administrator users the ability to create new tenants?** <br> Set this option to Yes, then assign them the tenant creator role.|
-| **Restrict non-admin users from reading BitLocker key(s) for their owned devices** | Setting this option to **Yes** restricts users from being able to self-service recover BitLocker key(s) for their owned devices. Setting this option to **No** allows users to recover their BitLocker key(s). |
+| **Restrict users from recovering the BitLocker key(s) for their owned devices** | Setting this option to **Yes** restricts users from being able to self-service recover BitLocker key(s) for their owned devices. Users will have to contact their organization's helpdesk to retrieve their BitLocker keys. Setting this option to **No** allows users to recover their BitLocker key(s). |
| **Read other users** | This setting is available in Microsoft Graph and PowerShell only. Setting this flag to `$false` prevents all non-admins from reading user information from the directory. This flag doesn't prevent reading user information in other Microsoft services like Exchange Online.</p><p>This setting is meant for special circumstances, so we don't recommend setting the flag to `$false`. | The **Restrict non-admin users from creating tenants** option is shown [below](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/UserSettings)
active-directory Deploy Access Reviews https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/deploy-access-reviews.md
Consider your organizational needs to determine the strategy for deploying acces
### Engage the right stakeholders
-When technology projects fail, they typically do so because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that project roles are clear.
+When technology projects fail, they typically do so because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/deployment-plans.md) and that project roles are clear.
For access reviews, you'll likely include representatives from the following teams within your organization:
In your pilot, we recommend that you:
* Document any access removed as a part of the pilot in case you need to quickly restore it. * Monitor audit logs to ensure all events are properly audited.
-For more information, see [Best practices for a pilot](../fundamentals/active-directory-deployment-plans.md).
+For more information, see [Best practices for a pilot](../fundamentals/deployment-plans.md).
## Introduction to access reviews
active-directory Entitlement Management Access Package First https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/entitlement-management-access-package-first.md
An *access package* is a bundle of resources that a team or project needs and is
1. For **Enable requests**, select **Yes** to enable this access package to be requested as soon as it's created.
-1. To add a Verified ID requirement to the access package, select on **Add issuer** in the **Required Verified IDs** section. If you don't have the Verified ID service set up in your tenant, navigate to the **Verified ID** section of the Azure portal.
+1. If your organization is set up to receive verified IDs, there is an option to configure an access package to require requestors to provide a verified ID. To learn more, see: [Configure verified ID settings for an access package in entitlement management (Preview)](entitlement-management-verified-id-settings.md)
:::image type="content" source="media/entitlement-management-access-package-first/verified-id-picker.png" alt-text="Screenshot of the Verified ID picker selection.":::
-1. Search for an issuer in the dropdown and select the credential type you want users to present when requesting access.
-
- > [!NOTE]
- > If you select multiple issuers / credential types, users requesting access will be required to present **all** of the credential types you have included in this policy. To give users the option of presenting one of many credential types, please include each acceptable option in a separate policy.
1. Select **Next** to open the **Requestor information** tab.
In this step, you remove the changes you made and delete the **Marketing Campaig
1. Delete the **Marketing resources** group.
-## Set up group writeback in entitlement management
-
-To set up group writeback for Microsoft 365 groups in access packages, you must complete the following prerequisites:
--- Set up group writeback in the Azure portal. -- The Organizational Unit (OU) that will be used to set up group writeback in Azure AD Connect Configuration.-- Complete the [group writeback enablement steps](../hybrid/how-to-connect-group-writeback-enable.md) for Azure AD Connect.
-
-Using group writeback, you can now sync Microsoft 365 groups that are part of access packages to on-premises Active Directory. To sync the groups, follow the steps below:
-
-1. Create an Azure Active Directory Microsoft 365 group.
-
-1. Set the group to be written back to on-premises Active Directory. For instructions, see [Group writeback in the Azure portal](../enterprise-users/groups-write-back-portal.md).
-
-1. Add the group to an access package as a resource role. See [Create a new access package](entitlement-management-access-package-create.md#resource-roles) for guidance.
-
-1. Assign the user to the access package. See [View, add, and remove assignments for an access package](entitlement-management-access-package-assignments.md#directly-assign-a-user) for instructions to directly assign a user.
-
-1. After you've assigned a user to the access package, confirm that the user is now a member of the on-premises group once Azure AD Connect Sync cycle completes:
- 1. View the member property of the group in the on-premises OU OR
- 1. Review the member Of on the user object.
-
-> [!NOTE]
-> Azure AD Connect's default sync cycle schedule is every 30 minutes. You may need to wait until the next cycle occurs to see results on-premises or choose to run the sync cycle manually to see results sooner.
- ## Next steps Advance to the next article to learn about common scenario steps in entitlement management.
active-directory Entitlement Management Group Writeback https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/entitlement-management-group-writeback.md
+
+ Title: Set up group writeback within entitlement management - Azure AD
+description: Learn how to set up group writeback in entitlement management.
+
+documentationCenter: ''
++
+editor: HANKI
++
+ na
++ Last updated : 02/23/2023+++++
+# Setting up group writeback within entitlement management
+
+This article shows you how to set up group writeback in entitlement management. Group writeback is a feature that allows you to write cloud groups back to your on-premises Active Directory instance by using Azure Active Directory (Azure AD) Connect sync.
+
+## Set up group writeback in entitlement management
++
+To set up group writeback for Microsoft 365 groups in access packages, you must complete the following prerequisites:
+
+- Set up group writeback in the Azure Active Directory admin center.
+- The Organizational Unit (OU) that is used to set up group writeback in Azure AD Connect Configuration.
+- Complete the [group writeback enablement steps](../hybrid/how-to-connect-group-writeback-enable.md) for Azure AD Connect.
+
+Using group writeback, you can now sync Microsoft 365 groups that are part of access packages to on-premises Active Directory. To sync the groups, follow the steps:
+
+1. Create an Azure Active Directory Microsoft 365 group.
+
+1. Set the group to be written back to on-premises Active Directory. For instructions, see [Group writeback in the Azure Active Directory admin center](../enterprise-users/groups-write-back-portal.md).
+
+1. Add the group to an access package as a resource role. See [Create a new access package](entitlement-management-access-package-create.md#resource-roles) for guidance.
+
+1. Assign the user to the access package. See [View, add, and remove assignments for an access package](entitlement-management-access-package-assignments.md#directly-assign-a-user) for instructions to directly assign a user.
+
+1. After you've assigned a user to the access package, confirm that the user is now a member of the on-premises group once Azure AD Connect Sync cycle completes:
+ 1. View the member property of the group in the on-premises OU OR
+ 1. Review the member Of on the user object.
+
+> [!NOTE]
+> Azure AD Connect's default sync cycle schedule is every 30 minutes. You may need to wait until the next cycle occurs to see results on-premises or choose to run the sync cycle manually to see results sooner.
+
+## Next steps
+
+- [Create and manage a catalog of resources in entitlement management](entitlement-management-catalog-create.md)
+- [Delegate access governance to access package managers in entitlement management](entitlement-management-delegate-managers.md)
active-directory Lifecycle Workflows Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/governance/lifecycle-workflows-deployment.md
Lifecycle Workflows are an [Azure AD Identity Governance](identity-governance-ov
Planning your Lifecycle Workflow deployment is essential to make sure you achieve your desired governance strategy for users in your organization.
-For more information on deployment plans, see [Azure AD deployment plans](../fundamentals/active-directory-deployment-plans.md)
+For more information on deployment plans, see [Azure AD deployment plans](../fundamentals/deployment-plans.md)
## License requirements
Consider your organizational needs to determine the strategy for deploying Lifec
### Engage the right stakeholders
-When technology projects fail, they typically do so because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that project roles are clear.
+When technology projects fail, they typically do so because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/deployment-plans.md) and that project roles are clear.
For Lifecycle Workflows, you'll likely include representatives from the following teams within your organization:
In your pilot, we recommend that you:
* Start with Lifecycle Workflows where the results are applied to a small subset of users. * Monitor audit logs to ensure all events are properly audited.
-For more information, see [Best practices for a pilot.](../fundamentals/active-directory-deployment-plans.md).
+For more information, see [Best practices for a pilot.](../fundamentals/deployment-plans.md).
active-directory Choose Ad Authn https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/choose-ad-authn.md
In today's world, threats are present 24 hours a day and come from everywhere. I
[Get started](../../fundamentals/active-directory-whatis.md) with Azure AD and deploy the right authentication solution for your organization.
-If you're thinking about migrating from federated to cloud authentication, learn more about [changing the sign-in method](plan-connect-user-signin.md). To help you plan and implement the migration, use [these project deployment plans](../../fundamentals/active-directory-deployment-plans.md), or consider using the new [Staged Rollout](how-to-connect-staged-rollout.md) feature to migrate federated users to using cloud authentication in a staged approach.
+If you're thinking about migrating from federated to cloud authentication, learn more about [changing the sign-in method](plan-connect-user-signin.md). To help you plan and implement the migration, use [these project deployment plans](../../fundamentals/deployment-plans.md), or consider using the new [Staged Rollout](how-to-connect-staged-rollout.md) feature to migrate federated users to using cloud authentication in a staged approach.
active-directory Concept Azure Ad Connect Sync Default Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/concept-azure-ad-connect-sync-default-configuration.md
The following contact objects are **not** synchronized to Azure AD:
### Group out-of-box rules A group object must satisfy the following to be synchronized:
-* Must have less than 50,000 members. This count is the number of members in the on-premises group.
+* Must have less than 250,000 members. This count is the number of members in the on-premises group.
* If it has more members before synchronization starts the first time, the group is not synchronized.
- * If the number of members grow from when it was initially created, then when it reaches 50,000 members it stops synchronizing until the membership count is lower than 50,000 again.
- * Note: The 50,000 membership count is also enforced by Azure AD. You are not able to synchronize groups with more members even if you modify or remove this rule.
+ * If the number of members grow from when it was initially created, then when it reaches 250,000 members it stops synchronizing until the membership count is lower than 250,000 again.
+ * Note: The 250,000 membership count is also enforced by Azure AD. You are not able to synchronize groups with more members even if you modify or remove this rule.
* If the group is a **Distribution Group**, then it must also be mail enabled. See [Contact out-of-box rules](#contact-out-of-box-rules) for this rule is enforced. The following group objects are **not** synchronized to Azure AD:
active-directory How To Connect Sso Quick Start https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/how-to-connect-sso-quick-start.md
Ensure that the following prerequisites are in place:
> [!NOTE] > > - Azure AD Connect versions 1.1.557.0, 1.1.558.0, 1.1.561.0, and 1.1.614.0 have a problem related to password hash sync. If you *don't* intend to use password hash sync in conjunction with pass-through authentication, review the [Azure AD Connect release notes](./reference-connect-version-history.md) to learn more.
- > - If you have an outgoing HTTP proxy, make sure that the URL `autologon.microsoftazuread-sso.com` is on your allowlist. You should specify this URL explicitly because the wildcard might not be accepted.
- **Use a supported Azure AD Connect topology**: Ensure that you're using one of the Azure AD Connect [supported topologies](plan-connect-topologies.md).
Ensure that the following prerequisites are in place:
- **Use the latest versions of Microsoft 365 clients**: To get a silent sign-on experience with Microsoft 365 clients (for example, with Outlook, Word, or Excel), your users must use versions 16.0.8730.xxxx or later.
+> [!NOTE]
+> If you have an outgoing HTTP proxy, make sure that the URL `autologon.microsoftazuread-sso.com` is on your allowlist. You should specify this URL explicitly because the wildcard might not be accepted.
+ ## Enable the feature Enable Seamless SSO through [Azure AD Connect](../whatis-hybrid-identity.md).
active-directory Howto Troubleshoot Upn Changes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/howto-troubleshoot-upn-changes.md
If the userPrincipalName attribute value doesn't correspond to a verified domain
Use our best practices to test bulk UPN changes. Have a tested roll-back plan for reverting UPNs if issues can't be resolved. After your pilot is running, target small user sets, with organizational roles, and sets of apps or devices. This process helps you understand the user experience. Include this information in your communications to stakeholders and users.
-Learn more: [Azure Active Directory deployment plans](../../fundamentals/active-directory-deployment-plans.md)
+Learn more: [Azure Active Directory deployment plans](../../fundamentals/deployment-plans.md)
Create a procedure to change UPNs for individual users. We recommend a procedure that includes documentation about known issues and workarounds.
active-directory Migrate From Federation To Cloud Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/migrate-from-federation-to-cloud-authentication.md
Although this deployment changes no other relying parties in your AD FS farm, yo
## Plan the project
-When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood.
+When technology projects fail, it's typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood.
### Plan communications
For a full list of steps to take to completely remove AD FS from the environment
## Next steps - [Learn about migrating applications](../../manage-apps/migration-resources.md)-- [Deploy other identity features](../../fundamentals/active-directory-deployment-plans.md)
+- [Deploy other identity features](../../fundamentals/deployment-plans.md)
active-directory Tshoot Connect Pass Through Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/connect/tshoot-connect-pass-through-authentication.md
You can get descriptive details of the error ('1328' in the preceding example) b
![Pass-through Authentication](./media/tshoot-connect-pass-through-authentication/pta3.png)
-### Domain Controller logs
+### Pass-through Authentication sign-in logs
-If audit logging is enabled, additional information can be found in the security logs of your Domain Controllers. A simple way to query sign-in requests sent by Pass-through Authentication Agents is as follows:
+If audit logging is enabled, additional information can be found in the security logs of your Pass-through Authentication server. A simple way to query sign-in requests is to filter security logs using the following query:
``` <QueryList>
active-directory Datawiza Configure Sha https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/datawiza-configure-sha.md
+
+ Title: Tutorial to configure Secure Hybrid Access with Azure Active Directory and Datawiza
+description: Learn to use Datawiza and Azure AD to authenticate users and give them access to on-premises and cloud apps.
+++++++ Last updated : 01/23/2023+++++
+# Tutorial: Configure Secure Hybrid Access with Azure Active Directory and Datawiza
+
+In this tutorial, learn how to integrate Azure Active Directory (Azure AD) with [Datawiza](https://www.datawiza.com/) for [hybrid access](../devices/concept-azure-ad-join-hybrid.md). [Datawiza Access Proxy (DAP)](https://www.datawiza.com) extends Azure AD to enable single sign-on (SSO) and provide access controls to protect on-premises and cloud-hosted applications, such as Oracle E-Business Suite, Microsoft IIS, and SAP. With this solution, enterprises can transition from legacy web access managers (WAMs), such as Symantec SiteMinder, NetIQ, Oracle, and IBM, to Azure AD without rewriting applications. Enterprises can use Datawiza as a no-code, or low-code, solution to integrate new applications to Azure AD. This approach enables enterprises to implement their Zero Trust strategy while saving engineering time and reducing costs.
+
+Learn more: [Zero Trust security](../../security/fundamentals/zero-trust.md)
+
+## Datawiza with Azure AD Authentication Architecture
+
+Datawiza integration includes the following components:
+
+* **[Azure AD](../fundamentals/active-directory-whatis.md)** - Identity and access management service that helps users sign in and access external and internal resources
+* **Datawiza Access Proxy (DAP)** - This service transparently passes identity information to applications through HTTP headers
+* **Datawiza Cloud Management Console (DCMC)** - UI and RESTful APIs for administrators to manage the DAP configuration and access control policies
+
+The following diagram illustrates the authentication architecture with Datawiza in a hybrid environment.
+
+ ![Architecture diagram of the authentication process for user access to an on-premises application.](./media/datawiza-configure-sha/datawiza-architecture-diagram.png)
+
+1. The user requests access to the on-premises or cloud-hosted application. DAP proxies the request to the application.
+2. DAP checks user authentication state. If there's no session token, or the session token is invalid, DAP sends the user request to Azure AD for authentication.
+3. Azure AD sends the user request to the endpoint specified during DAP registration in the Azure AD tenant.
+4. DAP evaluates policies and attribute values to be included in HTTP headers forwarded to the application. DAP might call out to the identity provider to retrieve the information to set the header values correctly. DAP sets the header values and sends the request to the application.
+5. The user is authenticated and is granted access.
+
+## Prerequisites
+
+To get started, you need:
+
+* An Azure subscription
+ * If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free/)
+* An [Azure AD tenant](../fundamentals/active-directory-access-create-new-tenant.md) linked to the Azure subscription
+* [Docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/) are required to run DAP
+ * Your applications can run on platforms, such as a virtual machine (VM) or bare metal
+* An on-premises or cloud-hosted application to transition from a legacy identity system to Azure AD
+ * In this example, DAP is deployed on the same server as the application
+ * The application runs on localhost: 3001. DAP proxies traffic to the application via localhost: 9772
+ * The traffic to the application reaches DAP, and is proxied to the application
+
+## Configure Datawiza Cloud Management Console
+
+1. Sign in to [Datawiza Cloud Management Console](https://console.datawiza.com/) (DCMC).
+2. Create an application on DCMC and generate a key pair for the app: `PROVISIONING_KEY` and `PROVISIONING_SECRET`.
+3. To create the app and generate the key pair, follow the instructions in [Datawiza Cloud Management Console](https://docs.datawiza.com/step-by-step/step2.html).
+4. Register your application in Azure AD with [One Click Integration With Azure AD](https://docs.datawiza.com/tutorial/web-app-azure-one-click.html).
+
+ ![Screenshot of the Automatic Generator feature on the Configure IdP dialog.](./media/datawiza-configure-sha/configure-idp.png)
+
+5. To use a web application, manually populate form fields: **Tenant ID**, **Client ID**, and **Client Secret**.
+
+ Learn more: To create a web application and obtain values, go to docs.datawiza.com for [Microsoft Azure AD](https://docs.datawiza.com/idp/azure.html) documentation.
+
+ ![Screenshot of the Configure IdP dialog with the Automatic Generator turned off.](./media/datawiza-configure-sha/use-form.png)
+
+6. Run DAP using either Docker or Kubernetes. The docker image is needed to create a sample header-based application.
+
+ - For Kubernetes, see [Deploy Datawiza Access Proxy with a Web App using Kubernetes](https://docs.datawiza.com/tutorial/web-app-AKS.html)
+ - For Docker, see [Deploy Datawiza Access Proxy With Your App](https://docs.datawiza.com/step-by-step/step3.html)
+ - You can use the following sample docker image docker-compose.yml file:
+
+ ```yaml
+
+ datawiza-access-broker:
+ image: registry.gitlab.com/datawiza/access-broker
+ container_name: datawiza-access-broker
+ restart: always
+ ports:
+ - "9772:9772"
+ environment:
+ PROVISIONING_KEY: #############################################
+ PROVISIONING_SECRET: ##############################################
+
+ header-based-app:
+ image: registry.gitlab.com/datawiza/header-based-app
+ restart: always
+ ports:
+ - "3001:3001"
+ ```
+
+7. Sign in to the container registry.
+8. Download the DAP images and the header-based application in this [Important Step](https://docs.datawiza.com/step-by-step/step3.html#important-step).
+9. Run the following command: `docker-compose -f docker-compose.yml up`.
+10. The header-based application has SSO enabled with Azure AD.
+11. In a browser, go to `http://localhost:9772/`.
+12. An Azure AD sign-in page appears.
+13. Pass user attributes to the header-based application. DAP gets user attributes from Azure AD and passes attributes to the application via a header or cookie.
+14. To pass user attributes such as email address, first name, and last name to the header-based application, see [Pass User Attributes](https://docs.datawiza.com/step-by-step/step4.html).
+15. To confirm configured user attributes, observe a green check mark next to each attribute.
+
+ ![Screenshot of the home page with host, email, firstname, and lastname attributes.](./media/datawiza-configure-sha/datawiza-application-home-page.png)
+
+## Test the flow
+
+1. Go to the application URL.
+2. DAP redirects you to the Azure AD sign-in page.
+3. After authentication, you're redirected to DAP.
+4. DAP evaluates policies, calculates headers, and sends you to the application.
+5. The requested application appears.
+
+## Next steps
+
+* [Tutorial: Configure Azure Active Directory B2C with Datawiza to provide secure hybrid access](../../active-directory-b2c/partner-datawiza.md)
+* [Tutorial: Configure Datawiza to enable Azure AD MFA and SSO to Oracle JD Edwards](datawiza-sso-oracle-jde.md)
+* [Tutorial: Configure Datawiza to enable Azure AD MFA and SSO to Oracle PeopleSoft](datawiza-azure-ad-sso-oracle-peoplesoft.md)
+* Go to docs.datawiza.com for Datawiza [User Guides](https://docs.datawiza.com)
active-directory Datawiza Sso Oracle Jde https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/datawiza-sso-oracle-jde.md
+
+ Title: Configure Azure AD Multi-Factor Authentication and SSO for Oracle JD Edwards applications using Datawiza Access Proxy
+description: Enable Azure AD MFA and SSO for Oracle JD Edwards application using Datawiza Access Proxy
+++++++ Last updated : 01/24/2023+++++
+# Tutorial: Configure Datawiza to enable Azure Active Directory Multi-Factor Authentication and single sign-on to Oracle JD Edwards
+
+In this tutorial, learn how to enable Azure Active Directory (Azure AD) single sign-on (SSO) and Azure AD Multi-Factor Authentication (MFA) for an Oracle JD Edwards (JDE) application using Datawiza Access Proxy (DAP).
+
+Learn more [Datawiza Access Proxy](https://www.datawiza.com/)
+
+Benefits of integrating applications with Azure AD using DAP:
+
+* [Embrace proactive security with Zero Trust](https://www.microsoft.com/security/business/zero-trust) - a security model that adapts to modern environments and embraces hybrid workplace, while it protects people, devices, apps, and data
+* [Azure Active Directory single sign-on](https://azure.microsoft.com/solutions/active-directory-sso/#overview) - secure and seamless access for users and apps, from any location, using a device
+* [How it works: Azure AD Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md) - users are prompted during sign-in for forms of identification, such as a code on their cellphone or a fingerprint scan
+* [What is Conditional Access?](../conditional-access/overview.md) - policies are if-then statements, if a user wants to access a resource, then they must complete an action
+* [Easy authentication and authorization in Azure AD with no-code Datawiza](https://www.microsoft.com/security/blog/2022/05/17/easy-authentication-and-authorization-in-azure-active-directory-with-no-code-datawiza/) - use web applications such as: Oracle JDE, Oracle E-Business Suite, Oracle Sibel, and home-grown apps
+* Use the [Datawiza Cloud Management Console](https://console.datawiza.com) (DCMC) - manage access to applications in public clouds and on-premises
+
+## Scenario description
+
+This scenario focuses on Oracle JDE application integration using HTTP authorization headers to manage access to protected content.
+
+In legacy applications, due to the absence of modern protocol support, a direct integration with Azure AD SSO is difficult. DAP can bridge the gap between the legacy application and the modern ID control plane, through protocol transitioning. DAP lowers integration overhead, saves engineering time, and improves application security.
+
+## Scenario architecture
+
+The scenario solution has the following components:
+
+* **Azure AD** - identity and access management service that helps users sign in and access external and internal resources
+* **Oracle JDE application** - legacy application protected by Azure AD
+* **Datawiza Access Proxy (DAP)** - container-based reverse-proxy that implements OpenID Connect (OIDC), OAuth, or Security Assertion Markup Language (SAML) for user sign-in flow. It passes identity transparently to applications through HTTP headers.
+* **Datawiza Cloud Management Console (DCMC)** -a console to manage DAP. Administrators use UI and RESTful APIs to configure DAP and access control policies.
+
+Learn more: [Datawiza and Azure AD Authentication Architecture](./datawiza-with-azure-ad.md#datawiza-with-azure-ad-authentication-architecture)
+
+## Prerequisites
+
+Ensure the following prerequisites are met.
+
+* An Azure subscription.
+ * If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free)
+* An Azure AD tenant linked to the Azure subscription
+ * See, [Quickstart: Create a new tenant in Azure Active Directory.](../fundamentals/active-directory-access-create-new-tenant.md)
+* Docker and Docker Compose
+ * Go to docs.docker.com to [Get Docker](https://docs.docker.com/get-docker) and [Install Docker Compose](https://docs.docker.com/compose/install)
+* User identities synchronized from an on-premises directory to Azure AD, or created in Azure AD and flowed back to an on-premises directory
+ * See, [Azure AD Connect sync: Understand and customize synchronization](../hybrid/how-to-connect-sync-whatis.md)
+* An account with Azure AD and the Application administrator role
+ * See, [Azure AD built-in roles, all roles](../roles/permissions-reference.md#all-roles)
+* An Oracle JDE environment
+* (Optional) An SSL web certificate to publish services over HTTPS. You can also use default Datawiza self-signed certs for testing.
+
+## Getting started with DAB
+
+To integrate Oracle JDE with Azure AD:
+
+1. Sign in to [Datawiza Cloud Management Console.](https://console.datawiza.com/)
+2. The Welcome page appears.
+3. Select the orange **Getting started** button.
+
+ ![Screenshot of the Getting Started button.](./media/datawiza-sso-oracle-jde/getting-started.png)
+
+4. In the **Name** and **Description** fields, enter information.
+5. Select **Next**.
+
+ ![Screenshot of the Name field and Next button under Deployment Name.](./media/datawiza-sso-oracle-jde/name-description-field.png)
+
+6. On the **Add Application** dialog, for **Platform**, select **Web**.
+7. For **App Name**, enter a unique application name.
+8. For **Public Domain**, for example enter `https://jde-external.example.com`. For testing the configuration, you can use localhost DNS. If you aren't deploying DAP behind a load balancer, use the **Public Domain** port.
+9. For **Listen Port**, select the port that DAP listens on.
+10. For **Upstream Servers**, select the Oracle JDE implementation URL and port to be protected.
+11. Select **Next**.
+
+ ![Screenshot of Public Domain, Listen Port, and Upstream Server entries.](./media/datawiza-sso-oracle-jde/add-application.png)
+
+12. On the **Configure IdP** dialog, enter information.
+
+ >[!Note]
+ >Use DCMC one-click integration to help complete Azure AD configuration. DCMC calls the Graph API to create an application registration on your behalf in your Azure AD tenant. Go to docs.datawiza.com for [One Click Integration With Azure AD](https://docs.datawiza.com/tutorial/web-app-azure-one-click.html).
+
+13. Select **Create**.
+
+ ![Screenshot of Protocol, Identity Provider, and Supported account types entries, also the Create button.](./media/datawiza-sso-oracle-jde/configure-idp.png)
+
+14. The DAP deployment page appears.
+15. Make a note of the deployment Docker Compose file. The file includes the DAP image, Provisioning Key, and Provision Secret, which pulls the latest configuration and policies from DCMC.
+
+ ![Screenshot of Docker entries.](./media/datawiza-sso-oracle-jde/provision.png)
+
+## SSO and HTTP headers
+
+DAP gets user attributes from IdP and passes them to the upstream application with a header or cookie.
+
+The Oracle JDE application needs to recognize the user: using a name, the application instructs DAP to pass the values from the IdP to the application through the HTTP header.
+
+1. In Oracle JDE, from the left navigation, select **Applications**.
+2. Select the **Attribute Pass** subtab.
+3. For **Field**, select **Email**.
+4. For **Expected**, select **JDE_SSO_UID**.
+5. For **Type**, select **Header**.
+
+ ![Screenshot of information on the Attribute Pass tab.](./media/datawiza-sso-oracle-jde/add-new-attribute.png)
+
+ >[!Note]
+ >This configuration uses the Azure AD user principal name as the sign-in username, used by Oracle JDE. To use another user identity, go to the **Mappings** tab.
+
+ ![Screenshot of the userPrincipalName entry.](./media/datawiza-sso-oracle-jde/user-principal-name-mapping.png)
++
+6. Select the **Advanced** tab.
+
+ ![Screenshot of information on the Advanced tab.](./media/datawiza-sso-oracle-jde/advanced-attributes.png)
++
+ ![Screenshot of information on the Attribute Pass tab.](./media/datawiza-sso-oracle-jde/add-new-attribute.png)
++
+7. Select **Enable SSL**.
+
+8. From the **Cert Type** dropdown, select a type.
+
+ ![Screenshot that shows the cert type dropdown.](./media/datawiza-sso-oracle-jde/cert-type-new.png)
++
+9. For testing purposes, we'll be providing a self-signed certificate.
+
+ ![Screenshot that shows the enable SSL menu.](./media/datawiza-sso-oracle-jde/enable-ssl-new.png)
+
+ >[!NOTE]
+ >You have the option to upload a certificate from a file.
+
+ ![Screenshot that shows uploading cert from a file option.](./media/datawiza-sso-oracle-jde/cert-upload-new.png)
+
+10. Select **Save**.
+
+## Enable Azure AD Multi-Factor Authentication
+
+To provide more security for sign-ins, you can enforce MFA for user sign-in.
+
+See, [Tutorial: Secure user sign-in events with Azure AD MFA](../authentication/tutorial-enable-azure-mfa.md).
+
+1. Sign in to the Azure portal as a Global Administrator.
+2. Select **Azure Active Directory** > **Manage** > **Properties**.
+3. Under **Properties**, select **Manage security defaults**.
+4. Under **Enable Security defaults**, select **Yes**.
+5. Select **Save**.
+
+## Enable SSO in the Oracle JDE EnterpriseOne Console
+
+To enable SSO in the Oracle JDE environment:
+
+1. Sign in to the Oracle JDE EnterpriseOne Server Manager Management Console as an Administrator.
+2. In **Select Instance**, select the option above **EnterpriseOne HTML Server**.
+3. In the **Configuration** tile, select **View as Advanced**.
+4. Select **Security**.
+5. Select the **Enable Oracle Access Manager** checkbox.
+6. In the **Oracle Access Manager Sign-Off URL** field, enter **datawiza/ab-logout**.
+7. In the **Security Server Configuration** section, select **Apply**.
+8. Select **Stop**.
+
+ >[!NOTE]
+ >If a message states the web server configuration (jas.ini) is out-of-date, select **Synchronize Configuration**.
+
+9. Select **Start**.
+
+## Test an Oracle JDE-based application
+
+To test an Oracle JDE application, validate application headers, policy, and overall testing. If needed, use header and policy simulation to validate header fields and policy execution.
+
+To confirm Oracle JDE application access occurs, a prompt appears to use an Azure AD account for sign-in. Credentials are checked and the Oracle JDE appears.
+
+## Next steps
+
+* Video [Enable SSO and MFA for Oracle JDE) with Azure AD via Datawiza](https://www.youtube.com/watch?v=_gUGWHT5m90)
+* [Tutorial: Configure Secure Hybrid Access with Azure AD and Datawiza](./datawiza-with-azure-ad.md)
+* [Tutorial: Configure Azure AD B2C with Datawiza to provide secure hybrid access](../../active-directory-b2c/partner-datawiza.md)
+* Go to docs.datawiza.com for Datawiza [User Guides](https://docs.datawiza.com/)
active-directory Datawiza Sso Oracle Peoplesoft https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/datawiza-sso-oracle-peoplesoft.md
+
+ Title: Configure Azure AD Multi-Factor Authentication and SSO for Oracle PeopleSoft applications using Datawiza Access Proxy
+description: Enable Azure AD MFA and SSO for Oracle PeopleSoft application using Datawiza Access Proxy
+++++++ Last updated : 01/25/2023+++++
+# Tutorial: Configure Datawiza to enable Azure Active Directory Multi-Factor Authentication and single sign-on to Oracle PeopleSoft
+
+In this tutorial, learn how to enable Azure Active Directory (Azure AD) single sign-on (SSO) and Azure AD Multi-Factor Authentication (MFA) for an
+Oracle PeopleSoft application using Datawiza Access Proxy (DAP).
+
+Learn more: [Datawiza Access Proxy](https://www.datawiza.com/)
+
+Benefits of integrating applications with Azure AD using DAP:
+
+* [Embrace proactive security with Zero Trust](https://www.microsoft.com/security/business/zero-trust) - a security model that adapts to modern environments and embraces hybrid workplace, while it protects people, devices, apps, and data
+* [Azure Active Directory single sign-on](https://azure.microsoft.com/solutions/active-directory-sso/#overview) - secure and seamless access for users and apps, from any location, using a device
+* [How it works: Azure AD Multi-Factor Authentication](../authentication/concept-mfa-howitworks.md) - users are prompted during sign-in for forms of identification, such as a code on their cellphone or a fingerprint scan
+* [What is Conditional Access?](../conditional-access/overview.md) - policies are if-then statements, if a user wants to access a resource, then they must complete an action
+* [Easy authentication and authorization in Azure AD with no-code Datawiza](https://www.microsoft.com/security/blog/2022/05/17/easy-authentication-and-authorization-in-azure-active-directory-with-no-code-datawiza/) - use web applications such as: Oracle JDE, Oracle E-Business Suite, Oracle Sibel, and home-grown apps
+* Use the [Datawiza Cloud Management Console](https://console.datawiza.com) (DCMC) - manage access to applications in public clouds and on-premises
+
+## Scenario description
+
+This scenario focuses on Oracle PeopleSoft application integration using HTTP authorization headers to manage access to protected content.
+
+In legacy applications, due to the absence of modern protocol support, a direct integration with Azure AD SSO is difficult. Datawiza Access Proxy (DAP) bridges the gap between the legacy application and the modern ID control plane, through protocol transitioning. DAP lowers integration overhead, saves engineering time, and improves application security.
+
+## Scenario architecture
+
+The scenario solution has the following components:
+
+* **Azure AD** - identity and access management service that helps users sign in and access external and internal resources
+* **Datawiza Access Proxy (DAP)** - container-based reverse-proxy that implements OpenID Connect (OIDC), OAuth, or Security Assertion Markup Language (SAML) for user sign-in flow. It passes identity transparently to applications through HTTP headers.
+* **Datawiza Cloud Management Console (DCMC)** - administrators manage DAP with UI and RESTful APIs to configure DAP and access control policies
+* **Oracle PeopleSoft application** - legacy application to be protected by Azure AD and DAP
+
+Learn more: [Datawiza and Azure AD authentication architecture](./datawiza-with-azure-ad.md#datawiza-with-azure-ad-authentication-architecture)
+
+## Prerequisites
+
+Ensure the following prerequisites are met.
+
+* An Azure subscription
+ * If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/free)
+* An Azure AD tenant linked to the Azure subscription
+ * See, [Quickstart: Create a new tenant in Azure Active Directory](../fundamentals/active-directory-access-create-new-tenant.md)
+* Docker and Docker Compose
+ * Go to docs.docker.com to [Get Docker](https://docs.docker.com/get-docker) and [Install Docker Compose](https://docs.docker.com/compose/install)
+* User identities synchronized from an on-premises directory to Azure AD, or created in Azure AD and flowed back to an on-premises directory
+ * See, [Azure AD Connect sync: Understand and customize synchronization](../hybrid/how-to-connect-sync-whatis.md)
+* An account with Azure AD and the Application Administrator role
+ * See, [Azure AD built-in roles, all roles](../roles/permissions-reference.md#all-roles)
+* An Oracle PeopleSoft environment
+* (Optional) An SSL web certificate to publish services over HTTPS. You can use default Datawiza self-signed certs for testing.
+
+## Getting started with DAP
+
+To integrate Oracle PeopleSoft with Azure AD:
+
+1. Sign in to [Datawiza Cloud Management Console](https://console.datawiza.com/) (DCMC).
+2. The Welcome page appears.
+3. Select the orange **Getting started** button.
+
+ ![Screenshot of the Getting Started button.](./media/datawiza-sso-oracle-peoplesoft/getting-started-button.png)
+
+4. In the **Name** and **Description** fields, enter information.
+
+ ![Screenshot of the Name field under Deployment Name.](./media/datawiza-sso-oracle-peoplesoft/deployment-details.png)
+
+5. Select **Next**.
+6. The Add Application dialog appears.
+7. For **Platform**, select **Web**.
+8. For **App Name**, enter a unique application name.
+9. For **Public Domain**, for example use `https://ps-external.example.com`. For testing, you can use localhost DNS. If you aren't deploying DAP behind a load balancer, use the Public Domain port.
+10. For **Listen Port**, select the port that DAP listens on.
+11. For **Upstream Servers**, select the Oracle PeopleSoft implementation URL and port to be protected.
+
+ ![Screenshot of entries under Add Application.](./media/datawiza-sso-oracle-peoplesoft/add-application.png)
+
+7. Select **Next**.
+8. On the **Configure IdP** dialog, enter information.
+
+ >[!Note]
+ >DCMC has one-click integration to help complete Azure AD configuration. DCMC calls the Microsoft Graph API to create an application registration on your behalf in your Azure AD tenant. Learn more at docs.datawiza.com in [One Click Integration with Azure AD](https://docs.datawiza.com/tutorial/web-app-azure-one-click.html#preview)
+
+9. Select **Create**.
+
+ ![Screenshot of entries under Configure IDP.](./media/datawiza-sso-oracle-peoplesoft/configure-idp.png)
+
+10. The DAP deployment page appears.
+11. Make a note of the deployment Docker Compose file. The file includes the DAP image, the Provisioning Key and Provision Secret, which pulls the latest configuration and policies from DCMC.
+
+ ![Screenshot of three sets of Docker information.](./media/datawiza-sso-oracle-peoplesoft/docker-compose-file.png)
+
+## SSO and HTTP headers
+
+DAP gets user attributes from the identity provider (IdP) and passes them to the upstream application with a header or cookie.
+
+The Oracle PeopleSoft application needs to recognize the user. Using a name, the application instructs DAP to pass the values from the IdP to the application through the HTTP header.
+
+1. In Oracle PeopleSoft, from the left navigation, select **Applications**.
+2. Select the **Attribute Pass** subtab.
+3. For **Field**, select **email**.
+4. For **Expected**, select **PS_SSO_UID**.
+5. For **Type**, select **Header**.
+
+ ![Screenshot of the Attribute Pass feature with Field, Expected and Type entries.](./media/datawiza-sso-oracle-peoplesoft/attribute-pass.png)
+
+ >[!Note]
+ >This configuration uses Azure AD user principal name as the sign-in username for Oracle PeopleSoft. To use another user identity, go to the **Mappings** tab.
+
+ ![Screenshot of user principal name.](./media/datawiza-sso-oracle-peoplesoft/user-principal-name.png)
+
+## SSL Configuration
+
+1. Select the **Advanced tab**.
+
+ ![Screenshot of the Advanced tab under Application Detail.](./media/datawiza-sso-oracle-peoplesoft/advanced-configuration.png)
+
+2. Select **Enable SSL**.
+3. From the **Cert Type** dropdown, select a type.
+
+ ![Screenshot of the Cert Type dropdown with available options, Self-signed and Upload.](./media/datawiza-sso-oracle-peoplesoft/cert-type-new.png)
+
+4. For testing the configuration, there's a self-signed certificate.
+
+ ![Screenshot of the Cert Type option with Self Signed selected.](./media/datawiza-sso-oracle-peoplesoft/self-signed-cert.png)
+
+ >[!Note]
+ >You can upload a certificate from a file.
+
+ ![Screenshot of the File Based entry for Select Option under Advanced Settings.](./media/datawiza-sso-oracle-peoplesoft/cert-upload-new.png)
+
+5. Select **Save**.
+
+## Enable Azure AD Multi-Factor Authentication
+
+To provide more security for sign-ins, you can enforce Azure AD Multi-Factor Authentication (MFA).
+
+Learn more: [Tutorial: Secure user sign-in events with Azure AD MFA](../authentication/tutorial-enable-azure-mfa.md)
+
+1. Sign in to the Azure portal as a Global Administrator.
+2. Select **Azure Active Directory** > **Manage** > **Properties**.
+3. Under **Properties**, select **Manage security defaults**.
+4. Under **Enable Security defaults**, select **Yes**
+5. Select **Save**.
+
+## Enable SSO in the Oracle PeopleSoft console
+
+To enable SSO in the Oracle PeopleSoft environment:
+
+1. Sign in to the PeopleSoft Console `http://{your-peoplesoft-fqdn}:8000/psp/ps/?cmd=start` using Admin credentials, for example, PS/PS.
+
+ ![Screenshot that shows Oracle PeopleSoft console.](./media/datawiza-sso-oracle-peoplesoft/peoplesoft-console.png)
+
+2. Add a default public access user to PeopleSoft.
+3. From the main menu, navigate to **PeopleTools > Security > User Profiles > User Profiles > Add a New Value**.
+4. Select **Add a new value**.
+5. Create user **PSPUBUSER**.
+6. Enter the password.
+
+ ![Screenshot of the PS PUBUSER User ID and change-password option.](./media/datawiza-sso-oracle-peoplesoft/create-user.png)
+
+7. Select the **ID** tab.
+8. For **ID Type**, select **None**.
+
+ ![Screenshot of the None option for ID Type on the ID tab.](./media/datawiza-sso-oracle-peoplesoft/id-type.png)
+
+3. Navigate to **PeopleTools > Web Profile > Web Profile Configuration > Search > PROD > Security**.
+4. Under **Public Users**, select the **Allow Public Access** box.
+5. For **User ID**, enter **PSPUBUSER**.
+6. Enter the password.
+
+ ![Screenshot of Allow Public Access, User ID, and Password options.](./media/datawiza-sso-oracle-peoplesoft/web-profile-config.png)
+
+7. Select **Save**.
+8. To enable SSO, navigate to **PeopleTools > Security > Security Objects > Signon PeopleCode**.
+9. Select the **Sign on PeopleCode** page.
+10. Enable **OAMSSO_AUTHENTICATION**.
+11. Select **Save**.
+12. To configure PeopleCode using the PeopleTools application designer, navigate to **File > Open > Definition: Record > Name: `FUNCLIB_LDAP`**.
+13. Open **FUNCLIB_LDAP**.
+
+ ![Screenshot of the Open Definition dialog.](./media/datawiza-sso-oracle-peoplesoft/selection-criteria.png)
+
+14. Select the record.
+15. Select **LDAPAUTH > View PeopleCode**.
+16. Search for the `getWWWAuthConfig()` function `Change &defaultUserId = ""; to &defaultUserId = PSPUBUSER`.
+17. Confirm the user Header is `PS_SSO_UID` for `OAMSSO_AUTHENTICATION` function.
+18. Save the record definition.
+
+ ![Screenshot of the record definition.](./media/datawiza-sso-oracle-peoplesoft/record-definition.png)
+
+## Test an Oracle PeopleSoft application
+
+To test an Oracle PeopleSoft application, validate application headers, policy, and overall testing. If needed, use header and policy simulation to validate header fields and policy execution.
+
+To confirm Oracle PeopleSoft application access occurs correctly, a prompt appears to use an Azure AD account for sign-in. Credentials are checked and the Oracle PeopleSoft appears.
+
+## Next steps
+
+- Video: [Enable SSO and MFA for Oracle JD Edwards with Azure AD via Datawiza](https://www.youtube.com/watch?v=_gUGWHT5m90)
+- [Tutorial: Configure Secure Hybrid Access with Azure AD and Datawiza](./datawiza-with-azure-ad.md)
+- [Tutorial: Configure Azure AD B2C with Datawiza to provide secure hybrid access](../../active-directory-b2c/partner-datawiza.md)
+- Go to docs.datawiza.com for Datawiza [User Guides](https://docs.datawiza.com/)
active-directory F5 Big Ip Forms Advanced https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-forms-advanced.md
Learn to configure F5 BIG-IP Access Policy Manager (APM) and Azure Active Direct
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable SSO for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
active-directory F5 Big Ip Header Advanced https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-header-advanced.md
Learn to implement secure hybrid access (SHA) with single sign-on (SSO) to heade
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable SSO for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
active-directory F5 Big Ip Headers Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-headers-easy-button.md
Integrating a BIG-IP with Azure AD provides many benefits, including:
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable SSO for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
active-directory F5 Big Ip Kerberos Advanced https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-kerberos-advanced.md
In this tutorial, you'll learn to implement secure hybrid access (SHA) with sing
* Full SSO between Azure AD and BIG-IP published services * Identity management and access from a single control plane, the [Azure portal](https://azure.microsoft.com/features/azure-portal/)
-To learn more about benefits, see [Integrate F5 BIG-IP with Azure Active Directory](./f5-aad-integration.md).
+To learn more about benefits, see [Integrate F5 BIG-IP with Azure Active Directory](./f5-integration.md).
## Scenario description
Because BIG-IP doesn't support group-managed service accounts, create a standard
1. Enter the following PowerShell command. Replace the `UserPrincipalName` and `SamAccountName` with your environment values.
- ```New-ADUser -Name "F5 BIG-IP Delegation Account" UserPrincipalName host/f5-big-ip.contoso.com@contoso.com SamAccountName "f5-big-ip" -PasswordNeverExpires $true Enabled $true -AccountPassword (Read-Host -AsSecureString "Account Password") ```
+ ```New-ADUser -Name "F5 BIG-IP Delegation Account" UserPrincipalName host/f5-big-ip.contoso.com@contoso.com SamAccountName "f5-big-ip" -PasswordNeverExpires $true Enabled $true -AccountPassword (Read-Host -AsSecureString "Account Password")```
2. Create a service principal name (SPN) for the APM service account to use during delegation to the web application service account:
- ```Set-AdUser -Identity f5-big-ip -ServicePrincipalNames @Add="host/f5-big-ip.contoso.com"} ```
+ ```Set-AdUser -Identity f5-big-ip -ServicePrincipalNames @Add="host/f5-big-ip.contoso.com"}```
3. Ensure the SPN shows against the APM service account:
- ```Get-ADUser -identity f5-big-ip -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames ```
+ ```Get-ADUser -identity f5-big-ip -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames```
4. Before you specify the target SPN, view its SPN configuration. The APM service account delegates for the web application: 1. Confirm your web application is running in the computer context, or a dedicated service account. 2. Use the following command to query the account object in Active Directory to see its defined SPNs. Replace `<name_of_account>` with the account for your environment.
- ```Get-ADUser -identity <name_of_account> -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames ```
+ ```Get-ADUser -identity <name_of_account> -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames```
5. Use an SPN defined against a web application service account. For better security, use a dedicated SPN that matches the host header of the application. For example, because the web application host header in this example is myexpenses.contoso.com, add `HTTP/myexpenses.contoso.com` to the application service account object in Active Directory:
- ```Set-AdUser -Identity web_svc_account -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"} ```
+ ```Set-AdUser -Identity web_svc_account -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"}```
Or if the app ran in the machine context, add the SPN to the object of the computer account in Active Directory:
- ```Set-ADComputer -Identity APP-VM-01 -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"} ```
+ ```Set-ADComputer -Identity APP-VM-01 -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"}```
With SPNs defined, establish trust for the APM service account delegate to that service. The configuration varies depending on the topology of your BIG-IP instance and application server.
With SPNs defined, establish trust for the APM service account delegate to that
1. Set trust for the APM service account to delegate authentication:
- ```Get-ADUser -Identity f5-big-ip | Set-ADAccountControl -TrustedToAuthForDelegation $true ```
+ ```Get-ADUser -Identity f5-big-ip | Set-ADAccountControl -TrustedToAuthForDelegation $true```
2. The APM service account needs to know the target SPN it's trusted to delegate to. Set the target SPN to the service account running your web application:
- ```Set-ADUser -Identity f5-big-ip -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/myexpenses.contoso.com')} ```
+ ```Set-ADUser -Identity f5-big-ip -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/myexpenses.contoso.com')}```
> [!NOTE] > You can complete these tasks with the Active Directory Users and Computers, Microsoft Management Console (MMC) snap-in, on a domain controller.
active-directory F5 Big Ip Kerberos Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-kerberos-easy-button.md
Title: Configure F5 BIG-IP Easy Button for Kerberos SSO
-description: Learn to implement secure hybrid access (SHA) with Single Sign-on to Kerberos applications using F5ΓÇÖs BIG-IP Easy Button guided configuration.
+description: Learn to implement secure hybrid access (SHA) with Single Sign-on to Kerberos applications using F5's BIG-IP Easy Button guided configuration.
Integrating a BIG-IP with Azure Active Directory (Azure AD) provides many benefi
* Full SSO between Azure AD and BIG-IP published services * Manage identities and access from a single control plane, the [Azure portal](https://portal.azure.com/)
-To learn more about benefits, see the article on [F5 BIG-IP and Azure AD integration](./f5-aad-integration.md).
+To learn more about benefits, see the article on [F5 BIG-IP and Azure AD integration](./f5-integration.md).
## Scenario description
SHA for this scenario supports SP- and IdP-initiated flows. The following image
## Prerequisites
-Prior BIG-IP experience isnΓÇÖt necessary, but you need:
+Prior BIG-IP experience isn't necessary, but you need:
* An [Azure free account](https://azure.microsoft.com/free/active-directory/), or higher * A BIG-IP or [deploy a BIG-IP Virtual Edition (VE) in Azure](./f5-bigip-deployment-guide.md) * Any of the following F5 BIG-IP licenses:
- * F5 BIG-IP® Best bundle
+ * F5 BIG-IP&reg; Best bundle
* F5 BIG-IP APM standalone
- * F5 BIG-IP APM add-on license on a BIG-IP F5 BIG-IP® Local Traffic Manager™ (LTM)
+ * F5 BIG-IP APM add-on license on a BIG-IP F5 BIG-IP&reg; Local Traffic Manager&trade; (LTM)
* 90-day BIG-IP [Free Trial](https://www.f5.com/trial/big-ip-trial.php) license * User identities [synchronized](../hybrid/how-to-connect-sync-whatis.md) from an on-premises directory to Azure AD, or created in Azure AD and flowed back to your on-premises directory * An account with Azure AD Application Admin [permissions](/azure/active-directory/users-groups-roles/directory-assign-admin-roles#application-administrator)
The Service Provider settings are the properties for the SAML SP instance of the
![Screenshot if Host and Entity ID entries on Service Provider.](./media/f5-big-ip-kerberos-easy-button/service-provider.png)
-The optional **Security Settings** specify whether Azure AD encrypts issued SAML assertions. Encrypting assertions between Azure AD and the BIG-IP APM provides more assurance the content tokens canΓÇÖt be intercepted, and personal or corporate data can't be compromised.
+The optional **Security Settings** specify whether Azure AD encrypts issued SAML assertions. Encrypting assertions between Azure AD and the BIG-IP APM provides more assurance the content tokens can't be intercepted, and personal or corporate data can't be compromised.
-3. From the **Assertion Decryption Private Key** list, select **Create New**.
+3. From the **Assertion Decryption Private Key** list, select **Create New**.
- ![Screenshot of the Create New option on Security Settings.](./media/f5-big-ip-oracle/configure-security-create-new.png)
+![Screenshot of the Create New option on Security Settings.](./media/f5-big-ip-oracle/configure-security-create-new.png)
-4. Select **OK**. The **Import SSL Certificate and Keys** dialog appears.
-5. Select **PKCS 12 (IIS)** to import your certificate and private key.
-6. After provisioning, close the browser tab to return to the main tab.
+4. Select **OK**. The **Import SSL Certificate and Keys** dialog appears.
+5. Select **PKCS 12 (IIS)** to import your certificate and private key.
+6. After provisioning, close the browser tab to return to the main tab.
- ![Screenshot of Import Type, Certificate and Key Name, Certificate and Key Source, and Password entries](./media/f5-big-ip-oracle/import-ssl-certificates-and-keys.png)
+![Screenshot of Import Type, Certificate and Key Name, Certificate and Key Source, and Password entries](./media/f5-big-ip-oracle/import-ssl-certificates-and-keys.png)
-7. Check **Enable Encrypted Assertion**.
-8. If you enabled encryption, select your certificate from the **Assertion Decryption Private Key** list. This private key is for the certificate that BIG-IP APM uses to decrypt Azure AD assertions.
-9. If you enabled encryption, select your certificate from the **Assertion Decryption Certificate** list. BIG-IP uploads this certificate to Azure AD to encrypt the issued SAML assertions.
+7. Check **Enable Encrypted Assertion**.
+8. If you enabled encryption, select your certificate from the **Assertion Decryption Private Key** list. This private key is for the certificate that BIG-IP APM uses to decrypt Azure AD assertions.
+9. If you enabled encryption, select your certificate from the **Assertion Decryption Certificate** list. BIG-IP uploads this certificate to Azure AD to encrypt the issued SAML assertions.
- ![Screenshot of Assertion Decryption Private Key and Assertion Decryption Certificates entries.](./media/f5-big-ip-kerberos-easy-button/service-provider-security-settings.png)
+![Screenshot of Assertion Decryption Private Key and Assertion Decryption Certificates entries.](./media/f5-big-ip-kerberos-easy-button/service-provider-security-settings.png)
### Azure Active Directory
The **Selected Policies** view shows policies targeting cloud apps. You can't de
To select a policy to apply to the application being published:
-1. From the **Available Policies** list, select a policy.
-2. Select the **right arrow** and move it to the **Selected Policies** list.
+1. From the **Available Policies** list, select a policy.
+2. Select the **right arrow** and move it to the **Selected Policies** list.
Selected policies need an **Include** or **Exclude** option checked. If both options are checked, the selected policy isn't enforced.
Enable **Kerberos** and **Show Advanced Setting** to enter the following:
The BIG-IPs session management settings define the conditions under which user sessions terminate or continue, limits for users and IP addresses, and corresponding user info. Refer to the AskF5 article [K18390492: Security | BIG-IP APM operations guide](https://support.f5.com/csp/article/K18390492) for settings details.
-What isnΓÇÖt covered is Single Log Out (SLO) functionality, which ensures sessions between the IdP, the BIG-IP, and the user agent terminate when a user signs out. When the Easy Button instantiates a SAML application in your Azure AD tenant, it populates the sign-out URL with the APM SLO endpoint. An IdP-initiated sign out from the Azure AD MyApps portal terminates the session between the BIG-IP and a client.
+What isn't covered is Single Log Out (SLO) functionality, which ensures sessions between the IdP, the BIG-IP, and the user agent terminate when a user signs out. When the Easy Button instantiates a SAML application in your Azure AD tenant, it populates the sign-out URL with the APM SLO endpoint. An IdP-initiated sign out from the Azure AD MyApps portal terminates the session between the BIG-IP and a client.
The SAML federation metadata for the published application is imported from your tenant, providing the APM with the SAML sign-out endpoint for Azure AD. This action ensures an SP-initiated sign out terminates the session between a client and Azure AD. The APM needs to know when a user signs out of the application.
-If the BIG-IP webtop portal accesses published applications, then a sign out is processed by the APM to call the Azure AD sign-out endpoint. But consider a scenario when the BIG-IP webtop portal isnΓÇÖt used, then the user can't instruct the APM to sign out. Even if the user signs out of the application, the BIG-IP is oblivious. Therefore, consider SP-initiated sign out to ensure sessions terminate securely. You can add an SLO function to your application Sign-out button, so it redirects your client to the Azure AD SAML, or the BIG-IP sign out endpoint.
+If the BIG-IP webtop portal accesses published applications, then a sign out is processed by the APM to call the Azure AD sign-out endpoint. But consider a scenario when the BIG-IP webtop portal isn't used, then the user can't instruct the APM to sign out. Even if the user signs out of the application, the BIG-IP is oblivious. Therefore, consider SP-initiated sign out to ensure sessions terminate securely. You can add an SLO function to your application Sign-out button, so it redirects your client to the Azure AD SAML, or the BIG-IP sign out endpoint.
The URL for SAML sign-out endpoint for your tenant is found in **App Registrations > Endpoints**.
For this scenario, the application is hosted on server APP-VM-01 and runs in the
### Create a BIG-IP APM delegation account
-The BIG-IP doesnΓÇÖt support group Managed Service Accounts (gMSA), therefore create a standard user account for the APM service account.
+The BIG-IP doesn't support group Managed Service Accounts (gMSA), therefore create a standard user account for the APM service account.
1. Replace the **UserPrincipalName** and **SamAccountName** values with the values in your environment.
- ```New-ADUser -Name "F5 BIG-IP Delegation Account" -UserPrincipalName host/f5-big-ip.contoso.com@contoso.com -SamAccountName "f5-big-ip" -PasswordNeverExpires $true -Enabled $true -AccountPassword (Read-Host -AsSecureString "Account Password") ```
+ ```New-ADUser -Name "F5 BIG-IP Delegation Account" -UserPrincipalName host/f5-big-ip.contoso.com@contoso.com -SamAccountName "f5-big-ip" -PasswordNeverExpires $true -Enabled $true -AccountPassword (Read-Host -AsSecureString "Account Password")```
2. Create a **Service Principal Name (SPN)** for the APM service account for performing delegation to the web application service account.
- ```Set-AdUser -Identity f5-big-ip -ServicePrincipalNames @{Add="host/f5-big-ip.contoso.com"} ```
+ ```Set-AdUser -Identity f5-big-ip -ServicePrincipalNames @{Add="host/f5-big-ip.contoso.com"}```
3. Ensure the SPN shows against the APM service account.
- ```Get-ADUser -identity f5-big-ip -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames ```
+ ```Get-ADUser -identity f5-big-ip -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames```
4. Before specifying the target SPN that the APM service account should delegate to for the web application, you need to view its SPN configuration. Confirm your web application is running in the computer context, or a dedicated service account. Next, query that account object in AD to see its defined SPNs. Replace <name_of_account> with the account for your environment.
- ```Get-ADUser -identity <name_of _account> -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames ```
+ ```Get-ADUser -identity <name_of _account> -properties ServicePrincipalNames | Select-Object -ExpandProperty ServicePrincipalNames```
5. You can use an SPN defined against a web application service account, but for better security, use a dedicated SPN that matches the host header of the application. For example, the web application host header is myexpenses.contoso.com. You can add HTTP/myexpenses.contoso.com to the applications service account object in AD.
- ```Set-AdUser -Identity web_svc_account -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"} ```
+ ```Set-AdUser -Identity web_svc_account -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"}```
Or if the app ran in the machine context, add the SPN to the object of the computer account in AD.
- ```Set-ADComputer -Identity APP-VM-01 -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"} ```
+ ```Set-ADComputer -Identity APP-VM-01 -ServicePrincipalNames @{Add="http/myexpenses.contoso.com"}```
With the SPNs defined, the APM service account needs trust to delegate to that service. The configuration varies depending on the topology of your BIG-IP and application server.
With the SPNs defined, the APM service account needs trust to delegate to that s
1. Set trust for the APM service account to delegate authentication.
- ```Get-ADUser -Identity f5-big-ip | Set-ADAccountControl -TrustedToAuthForDelegation $true ```
+ ```Get-ADUser -Identity f5-big-ip | Set-ADAccountControl -TrustedToAuthForDelegation $true```
-2. The APM service account needs to know the target SPN itΓÇÖs trusted to delegate to, or which service for which it's allowed to request a Kerberos ticket. Set target SPN to the service account running your web application.
+2. The APM service account needs to know the target SPN it's trusted to delegate to, or which service for which it's allowed to request a Kerberos ticket. Set target SPN to the service account running your web application.
- ```Set-ADUser -Identity f5-big-ip -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/myexpenses.contoso.com')} ```
+ ```Set-ADUser -Identity f5-big-ip -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/myexpenses.contoso.com')}```
>[!NOTE] >You can complete these tasks with the Active Directory Users and Computers Microsoft Management Console (MMC) on a domain controller.
Note the context for the following examples.
If the web_svc_account service runs in the context of a user account:
- ```$big-ip= Get-ADComputer -Identity f5-big-ip -server dc.contoso.com ```
- ```Set-ADUser -Identity web_svc_account -PrincipalsAllowedToDelegateToAccount $big-ip ```
- ```Get-ADUser web_svc_account -Properties PrincipalsAllowedToDelegateToAccount ```
+ ```$big-ip= Get-ADComputer -Identity f5-big-ip -server dc.contoso.com```
+ ```Set-ADUser -Identity web_svc_account -PrincipalsAllowedToDelegateToAccount $big-ip```
+ ```Get-ADUser web_svc_account -Properties PrincipalsAllowedToDelegateToAccount```
If the web_svc_account service runs in the context of a computer account:
- ```$big-ip= Get-ADComputer -Identity f5-big-ip -server dc.contoso.com ```
- ```Set-ADComputer -Identity web_svc_account -PrincipalsAllowedToDelegateToAccount $big-ip ```
- ```Get-ADComputer web_svc_account -Properties PrincipalsAllowedToDelegateToAccount ```
+ ```$big-ip= Get-ADComputer -Identity f5-big-ip -server dc.contoso.com```
+ ```Set-ADComputer -Identity web_svc_account -PrincipalsAllowedToDelegateToAccount $big-ip```
+ ```Get-ADComputer web_svc_account -Properties PrincipalsAllowedToDelegateToAccount```
For more information, see [Kerberos Constrained Delegation across domains](/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831477(v=ws.11)).
active-directory F5 Big Ip Ldap Header Easybutton https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-ldap-header-easybutton.md
In this article, you can learn to secure header and LDAP-based applications usin
* Full single sign-on (SSO) between Azure AD and BIG-IP published services * Manage identities and access from one control plane, the [Azure portal](https://portal.azure.com/)
-To learn about more benefits, see [F5 BIG-IP and Azure AD integration](./f5-aad-integration.md).
+To learn about more benefits, see [F5 BIG-IP and Azure AD integration](./f5-integration.md).
## Scenario description
If there's no error page, then the issue is probably related to the back-end req
Use the following command from the BIG-IP bash shell to validate the APM service account for LDAP queries. Confirm authentication and query of a user object.
- ```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=partners,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)" ```
+ ```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=partners,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)"```
For more information, see the F5 article [K11072: Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). You can use a BIG-IP reference table to help diagnose LDAP-related issues in AskF5 document, [LDAP Query](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-authentication-single-sign-on-11-5-0/5.html).
active-directory F5 Big Ip Oracle Enterprise Business Suite Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-oracle-enterprise-business-suite-easy-button.md
Learn to secure Oracle E-Business Suite (EBS) using Azure Active Directory (Azur
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable SSO for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
Learn more:
Use the following bash shell command to validate the APM service account for LDAP queries. The command authenticates and queries user objects.
-```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=oraclef5,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)" ```
+```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=oraclef5,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)"```
Learn more:
active-directory F5 Big Ip Oracle Jde Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-oracle-jde-easy-button.md
Integrate BIG-IP with Azure AD for many benefits:
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable single sign-on for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
active-directory F5 Big Ip Oracle Peoplesoft Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-oracle-peoplesoft-easy-button.md
Integrate BIG-IP with Azure AD for many benefits:
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable single sign-on for an enterprise application](add-application-portal-setup-sso.md) ## Scenario description
For this scenario, SHA supports SP- and IdP-initiated flows. The following diagr
* A BIG-IP or a BIG-IP Virtual Edition (VE) in Azure * See, [Deploy F5 BIG-IP Virtual Edition VM in Azure](./f5-bigip-deployment-guide.md) * Any of the following F5 BIG-IP licenses:
- * F5 BIG-IP® Best bundle
+ * F5 BIG-IP&reg; Best bundle
* F5 BIG-IP APM standalone license
- * F5 BIG-IP APM add-on license on an existing BIG-IP F5 BIG-IP® Local Traffic Manager™ (LTM)
+ * F5 BIG-IP APM add-on license on an existing BIG-IP F5 BIG-IP&reg; Local Traffic Manager&trade; (LTM)
* 90-day BIG-IP full feature [trial license](https://www.f5.com/trial/big-ip-trial.php) * User identities synchronized from an on-premises directory to Azure AD, or created in Azure AD and flowed back to the on-premises directory * See, [Azure AD Connect sync: Understand and customize synchronization](../hybrid/how-to-connect-sync-whatis.md)
The following instructions help you create a tenant app registration to authoriz
8. Follow the configuration sequence.
- ![Screenshot of configuration sequence under Azure AD Application Configuration.](./media/f5-big-ip-easy-button-ldap/config-steps-flow.png#lightbox)
+![Screenshot of configuration sequence under Azure AD Application Configuration.](./media/f5-big-ip-easy-button-ldap/config-steps-flow.png#lightbox)
### Configuration Properties
Use the **Configuration Properties** tab to creat new application configurations
4. Confirm the BIG-IP connects to the tenant. 5. Select **Next**.
- ![Screenshot of options and selections for Configuration Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/configuration-general-and-service-account-properties.png)
+![Screenshot of options and selections for Configuration Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/configuration-general-and-service-account-properties.png)
### Service Provider
Use the **Service Provider** settings to define SAML SP properties for the APM i
1. For **Host**, enter the public FQDN of the secured application. 2. For **Entity ID**, enter the identifier Azure AD uses to identify the SAML SP requesting a token.
- ![Screenshot of options and selections for Service Provider.](./media/f5-big-ip-easy-button-oracle-jde/service-provider-settings.png)
+![Screenshot of options and selections for Service Provider.](./media/f5-big-ip-easy-button-oracle-jde/service-provider-settings.png)
3. (Optional) For **Security Settings**, indicate Azure AD encrypts issued SAML assertions. This option increases assurance that content tokens aren't intercepted, nor data compromised. 4. From the **Assertion Decryption Private Key** list, select **Create New**.
- ![Screenshot Create New in the Assertion Decryption Private Key list.](./media/f5-big-ip-oracle/configure-security-create-new.png)
+![Screenshot Create New in the Assertion Decryption Private Key list.](./media/f5-big-ip-oracle/configure-security-create-new.png)
5. Select **OK**. 6. The **Import SSL Certificate and Keys** dialog appears in a new tab. 7. For **Import Type**, select **PKCS 12 (IIS)**. This option imports your certificate and private key. 8. Close the browser tab to return to the main tab.
- ![Screenshot of options and selections for SSL Certificate and Key Source](./media/f5-big-ip-oracle/import-ssl-certificates-and-keys.png)
+![Screenshot of options and selections for SSL Certificate and Key Source](./media/f5-big-ip-oracle/import-ssl-certificates-and-keys.png)
9. For **Enable Encrypted Assertion**, check the box. 10. If you enabled encryption, from the **Assertion Decryption Private Key** list, select your certificate. This private key is for the certificate that BIG-IP APM uses to decrypt Azure AD assertions. 11. If you enabled encryption, from the **Assertion Decryption Certificate** list, select your certificate. BIG-IP uploads this certificate to Azure AD to encrypt issued SAML assertions.
- ![Screenshot of options and selections for Security Settings.](./media/f5-big-ip-easy-button-ldap/service-provider-security-settings.png)
+![Screenshot of options and selections for Security Settings.](./media/f5-big-ip-easy-button-ldap/service-provider-security-settings.png)
### Azure Active Directory
The Easy Button has templates for Oracle PeopleSoft, Oracle E-Business Suite, Or
1. Select **Oracle PeopleSoft**. 2. Select **Add**.
- ![Screenshot of the Oracle PeopleSoft option under Azure Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/azure-configuration-add-big-ip-application.png)
+![Screenshot of the Oracle PeopleSoft option under Azure Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/azure-configuration-add-big-ip-application.png)
#### Azure Configuration 1. Enter **Display Name** for the app BIG-IP creates in the tenant. The name appears on an icon in [My Apps](https://myapplications.microsoft.com/). 2. (Optional) For **Sign On URL** enter the PeopleSoft application public FQDN.
- ![Screenshot of Display Name and Sign On URL options under Azure Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/azure-configuration-add-display-info.png)
+![Screenshot of Display Name and Sign On URL options under Azure Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/azure-configuration-add-display-info.png)
3. Next to the **Signing Key** and **Signing Certificate**, select **refresh**. This action locates the certificate you imported. 4. For **Signing Key Passphrase**, enter the certificate password. 5. (Optional) For **Signing Option**, select an option. This selection ensures BIG-IP accepts tokens and claims signed by Azure AD.
- ![Screenshot of Signing Key, Signing Certificate, and Signing Key Passprhase options under SAML Signing Certificate.](./media/f5-big-ip-easy-button-ldap/azure-configuration-sign-certificates.png)
+![Screenshot of Signing Key, Signing Certificate, and Signing Key Passprhase options under SAML Signing Certificate.](./media/f5-big-ip-easy-button-ldap/azure-configuration-sign-certificates.png)
6. **User And User Groups** are dynamically queried from the Azure AD tenant. 7. Add a user or group for testing, otherwise access is denied.
- ![Screenshot of the Add option under Users And User Groups.](./media/f5-big-ip-easy-button-ldap/azure-configuration-add-user-groups.png)
+![Screenshot of the Add option under Users And User Groups.](./media/f5-big-ip-easy-button-ldap/azure-configuration-add-user-groups.png)
#### User Attributes & Claims When a user authenticates, Azure AD issues a SAML token with default claims and attributes identifying the user. The **User Attributes & Claims** tab has default claims to issue for the new application. Use it to configure more claims. The Easy Button template has the employee ID claim required by PeopleSoft.
- ![Screenshot of options and selections for User Attributes & Claims.](./media/f5-big-ip-easy-button-oracle-peoplesoft/user-attributes-claims.png)
+![Screenshot of options and selections for User Attributes & Claims.](./media/f5-big-ip-easy-button-oracle-peoplesoft/user-attributes-claims.png)
If needed, include other Azure AD attributes. The sample PeopleSoft application requires predefined attributes.
If needed, include other Azure AD attributes. The sample PeopleSoft application
The **Additional User Attributes** tab supports distributed systems that require attributes are stored in other directories for session augmentation. Attributes from an LDAP source are injected as more SSO headers to control access based on roles, Partner IDs, etc.
- ![Screenshot of options and selections for Additional User Attributes.](./media/f5-big-ip-easy-button-header/additional-user-attributes.png)
+![Screenshot of options and selections for Additional User Attributes.](./media/f5-big-ip-easy-button-header/additional-user-attributes.png)
>[!NOTE] >This feature has no correlation to Azure AD; it's another attribute source.
Select a policy for the application.
Selected policies have the **Include** or **Exclude** option checked. If both options are checked, the policy isn't enforced.
- ![Screenshot of excluded policies under Selected Policies on the Conditional Access Policy tab.](./media/f5-big-ip-easy-button-ldap/conditional-access-policy.png)
+![Screenshot of excluded policies under Selected Policies on the Conditional Access Policy tab.](./media/f5-big-ip-easy-button-ldap/conditional-access-policy.png)
> [!NOTE] > The policy list appears once, when you select the tab. Use **Refresh** for the wizard to query the tenant. This option appears after the application is deployed.
A virtual server is a BIG-IP data plane object represented by a virtual IP addre
5. For **Client SSL Profile**, select **Use Existing**. 6. Under **Common** select the option you created. If testing, leave the default. Client SSL Profile enables the virtual server for HTTPS, so client connections are encrypted over TLS.
- ![Screenshot of options and selections for Virtual Server Properties.](./media/f5-big-ip-easy-button-ldap/virtual-server.png)
+![Screenshot of options and selections for Virtual Server Properties.](./media/f5-big-ip-easy-button-ldap/virtual-server.png)
### Pool Properties
The **Application Pool** tab has services behind a BIG-IP, represented as a pool
2. For **Load Balancing Method**, select **Round Robin**. 3. For **Pool Servers**, in **IP Address/Node Name** select a node, or enter an IP and port for servers hosting the PeopleSoft application.
- ![Screenshot of IP Address/Node Name and Port options on Pool Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/application-pool.png)
+![Screenshot of IP Address/Node Name and Port options on Pool Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/application-pool.png)
#### Single sign-on & HTTP Headers
The Easy Button wizard supports Kerberos, OAuth Bearer, and HTTP authorization h
3. For **Header Name**, enter **PS_SSO_UID**. 4. For **Header Value**, enter **%{session.sso.token.last.username}**.
- ![Screenshot of Header Operation, Header Name, and Header value entries under Single sign-On & HTTP Headers.](./media/f5-big-ip-easy-button-oracle-peoplesoft/sso-and-http-headers.png)
+![Screenshot of Header Operation, Header Name, and Header value entries under Single sign-On & HTTP Headers.](./media/f5-big-ip-easy-button-oracle-peoplesoft/sso-and-http-headers.png)
>[!NOTE] >APM session variables in curly brackets are case-sensitive. For instance, if you enter OrclGUID, and the attribute name is orclguid, attribute mapping fails.
Not covered in the operations guide is single log-out (SLO) functionality, which
Published-application SAML federation data is imported from the tenant. This action provides the APM with the SAML sign-out endpoint for Azure AD, which ensures SP-initiated sign out terminates client and Azure AD sessions. The APM needs to know when a user signs out.
-When the BIG-IP webtop portal accesses published applications, the APM processes a sign out to call the Azure AD sign-out endpoint. If the BIG-IP webtop portal isnΓÇÖt used, the user can't instruct the APM to sign out. If the user signs out of the application, the BIG-IP is oblivious. SP-initiated sign out needs secure session termination. Add an SLO function to your application **Sign out** button, to redirect your client to the Azure AD SAML or BIG-IP sign out endpoint. The SAML sign out endpoint URL for your tenant in **App Registrations > Endpoints**.
+When the BIG-IP webtop portal accesses published applications, the APM processes a sign out to call the Azure AD sign-out endpoint. If the BIG-IP webtop portal isn't used, the user can't instruct the APM to sign out. If the user signs out of the application, the BIG-IP is oblivious. SP-initiated sign out needs secure session termination. Add an SLO function to your application **Sign out** button, to redirect your client to the Azure AD SAML or BIG-IP sign out endpoint. The SAML sign out endpoint URL for your tenant in **App Registrations > Endpoints**.
If you can't change the app, consider having the BIG-IP listen for application sign out calls, and trigger SLO. For more information, see **PeopleSoft Single Logout** in the following section.
To learn more, got o docs.oracle.com for [Oracle Access Manger Integration Guide
Configure Oracle Access Manager to accept SSO from the BIG-IP.
-1. Sign into the Oracle console with admin permissions.
+1. Sign into the Oracle console with admin permissions.
- ![Screenshot of the Oracle console.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-console.png)
+![Screenshot of the Oracle console.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-console.png)
2. Navigate to **PeopleTools > Security**. 3. Select **User Profiles**.
Configure Oracle Access Manager to accept SSO from the BIG-IP.
7. For **User Role**, enter **PeopleSoft User**. 8. Select **Save**.
- ![Screenshot of User ID on the Roles tab, User Profiles.](./media/f5-big-ip-easy-button-oracle-peoplesoft/user-profiles.png)
+![Screenshot of User ID on the Roles tab, User Profiles.](./media/f5-big-ip-easy-button-oracle-peoplesoft/user-profiles.png)
-9. Navigate to **People Tools** > **Web Profile**.
-10. Select the web profile.
-11. On **Security** tab, in **Public Users**, select **Allow Public Access**.
-12. For **User ID**, enter **OAMPSFT**.
-13. Enter the **Password**.
+9. Navigate to **People Tools** > **Web Profile**.
+10. Select the web profile.
+11. On **Security** tab, in **Public Users**, select **Allow Public Access**.
+12. For **User ID**, enter **OAMPSFT**.
+13. Enter the **Password**.
- ![Screenshot of options and selections for Public Users.](./media/f5-big-ip-easy-button-oracle-peoplesoft/web-profiles.png)
+![Screenshot of options and selections for Public Users.](./media/f5-big-ip-easy-button-oracle-peoplesoft/web-profiles.png)
-14. Leave the Peoplesoft console.
-15. Start **PeopleTools Application Designer**.
-16. Right-click the **LDAPAUTH** field.
-17. Select **View PeopleCode**.
+14. Leave the Peoplesoft console.
+15. Start **PeopleTools Application Designer**.
+16. Right-click the **LDAPAUTH** field.
+17. Select **View PeopleCode**.
- ![Screenshot of LDAPAUTH options under Application Designer.](./media/f5-big-ip-easy-button-oracle-peoplesoft/application-designer.png)
+![Screenshot of LDAPAUTH options under Application Designer.](./media/f5-big-ip-easy-button-oracle-peoplesoft/application-designer.png)
-18. The **LDAPAUTH** code windows opens.
-19. Locate the **OAMSSO_AUTHENTICATION** function.
+18. The **LDAPAUTH** code windows opens.
+19. Locate the **OAMSSO_AUTHENTICATION** function.
20. Replace the **&defaultUserId** value with **OAMPSFT**. ![Screenshot of default User ID value equals OAMPSFT under Function.](./media/f5-big-ip-easy-button-oracle-peoplesoft/oamsso-authentication-function.png)
-21. Save the record.
-22. Navigate to **PeopleTools > Security.
-23. Select **Security Objects**.
-24. Select **Sign on PeopleCode**.
-25. Enable **OAMSSO_AUTHENTICATION**.
+21. Save the record.
+22. Navigate to **PeopleTools > Security.
+23. Select **Security Objects**.
+24. Select **Sign on PeopleCode**.
+25. Enable **OAMSSO_AUTHENTICATION**.
### PeopleSoft Single Logout
When you sign out of [My Apps](https://myapplications.microsoft.com/), PeopleSof
Add SLO support for PeopleSoft users.
-1. Obtain the PeopleSoft portal sign-out URL.
-2. Open the portal with a web browser.
-3. Enable the debug tools.
-4. Locate the element with the **PT_LOGOUT_MENU** ID.
-5. Save the URL path with the query parameters. In this example: `/psp/ps/?cmd=logout`.
+1. Obtain the PeopleSoft portal sign-out URL.
+2. Open the portal with a web browser.
+3. Enable the debug tools.
+4. Locate the element with the **PT_LOGOUT_MENU** ID.
+5. Save the URL path with the query parameters. In this example: `/psp/ps/?cmd=logout`.
- ![Screenshot of PeopleSoft logout URL.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-logout-url.png)
+![Screenshot of PeopleSoft logout URL.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-logout-url.png)
Create a BIG-IP iRule to redirect users to the SAML SP sign out endpoint: `/my.logout.php3`.
-1. Navigate to **Local Traffic > iRules List.
-2. Select **Create**.
-3. Enter a rule **Name**.
-4. Enter the following command lines.
+1. Navigate to **Local Traffic > iRules List.
+2. Select **Create**.
+3. Enter a rule **Name**.
+4. Enter the following command lines.
- ```when HTTP_REQUEST {switch -glob -- [HTTP::uri] { "/psp/ps/?cmd=logout" {HTTP::redirect "/my.logout.php3" }}} ```
+ ```when HTTP_REQUEST {switch -glob -- [HTTP::uri] { "/psp/ps/?cmd=logout" {HTTP::redirect "/my.logout.php3" }}}```
5. Select **Finished**.
Assign the iRule to the BIG-IP Virtual Server.
1. Navigate to **Access > Guided Configuration**. 2. Select the PeopleSoft application configuration link.
- ![Screenshot of the PeopleSoft application configuration link.](./media/f5-big-ip-easy-button-oracle-peoplesoft/link-peoplesoft-application.png)
+![Screenshot of the PeopleSoft application configuration link.](./media/f5-big-ip-easy-button-oracle-peoplesoft/link-peoplesoft-application.png)
-3. From the top navigation bar, select **Virtual Server**.
-4. For **Advanced Settings**, select **On*.
+3. From the top navigation bar, select **Virtual Server**.
+4. For **Advanced Settings**, select **On*.
- ![Screenshot of the Advanced Aettings option on Virtual Server Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/enable-advanced-settings.png)
+![Screenshot of the Advanced Aettings option on Virtual Server Properties.](./media/f5-big-ip-easy-button-oracle-peoplesoft/enable-advanced-settings.png)
-4. Scroll to the bottom.
-5. Under **Common**, add the iRule you created.
+4. Scroll to the bottom.
+5. Under **Common**, add the iRule you created.
- ![Screenshot of the irule under Common on Virtual Server Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-irule.png)
+![Screenshot of the irule under Common on Virtual Server Configuration.](./media/f5-big-ip-easy-button-oracle-peoplesoft/peoplesoft-irule.png)
-5. Select **Save**.
-6. Select **Next**.
-7. Continue to configure settings.
+5. Select **Save**.
+6. Select **Next**.
+7. Continue to configure settings.
To learn more, go to support.f5.com for:
To learn more, go to support.f5.com for:
### Default to PeopleSoft landing page
-Redirect user requests from the root (ΓÇ£/ΓÇ¥) to the external PeopleSoft portal, usually located in: ΓÇ£/psc/ps/EXTERNAL/HRMS/c/NUI_FRAMEWORK.PT_LANDINGPAGE.GBLΓÇ¥
+Redirect user requests from the root ("/") to the external PeopleSoft portal, usually located in: "/psc/ps/EXTERNAL/HRMS/c/NUI_FRAMEWORK.PT_LANDINGPAGE.GBL"
-1. Navigate to **Local Traffic > iRule**.
-2. Select **iRule_PeopleSoft**.
-3. Add the following command lines.
+1. Navigate to **Local Traffic > iRule**.
+2. Select **iRule_PeopleSoft**.
+3. Add the following command lines.
```when HTTP_REQUEST {switch -glob -- [HTTP::uri] {"/" {HTTP::redirect "/psc/ps/EXTERNAL/HRMS/c/NUI_FRAMEWORK.PT_LANDINGPAGE.GB"/psp/ps/?cmd=logout" {HTTP::redirect "/my.logout.php3"} } }```
-4. Assign the iRule to the BIG-IP Virtual Server.
+4. Assign the iRule to the BIG-IP Virtual Server.
## Confirm configuration
Alternatively, in BIG-IP disable the Guided Configuration strict management mode
1. Navigate to **Access > Guided Configuration**. 2. At the end of the row, select the **padlock**.
- ![Screenshot of the padlock icon.](./media/f5-big-ip-oracle/strict-mode-padlock.png)
+![Screenshot of the padlock icon.](./media/f5-big-ip-oracle/strict-mode-padlock.png)
Changes with the wizard UI aren't possible, however BIG-IP objects associated with the application published instance are unlocked for management.
Use BIG-IP logging to isolate issues with connectivity, SSO, policy violations,
### Log verbosity
-1. Navigate to **Access Policy > Overview.
+1. Navigate to **Access Policy > Overview**.
2. Select **Event Logs**. 3. Select **Settings**. 4. Select the row of your published application.
When complete, revert this feature because verbose mode generates lots of data.
### BIG-IP error message
-If a BIG-IP error appears after Azure AD preauthentication, itΓÇÖs possible the issue relates to Azure AD to BIG-IP SSO.
+If a BIG-IP error appears after Azure AD preauthentication, it's possible the issue relates to Azure AD to BIG-IP SSO.
1. Navigate to **Access > Overview**. 2. Select **Access reports**.
active-directory F5 Big Ip Sap Erp Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-big-ip-sap-erp-easy-button.md
In this article, learn to secure SAP ERP using Azure Active Directory (Azure AD)
Learn more:
-* [Integrate F5 BIG-IP with Azure AD](./f5-aad-integration.md)
+* [Integrate F5 BIG-IP with Azure AD](./f5-integration.md)
* [Enable SSO for an enterprise application](add-application-portal-setup-sso.md). ## Scenario description
active-directory F5 Bigip Deployment Guide https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-bigip-deployment-guide.md
Deploying a BIG-IP in Azure for SHA requires:
- Go to letsencrypt.org to see offers. Select [Get Started](https://letsencrypt.org/). - An SSL certificate to secure the BIG-IP management interface. You can use a certificate to publish web apps, if its subject corresponds to the BIG-IP fully qualified domain name (FQDN). For example, you can use a wildcard certificate with a subject `*.contoso.com` for `https://big-ip-vm.contoso.com:8443`.
-VM deployment and base system configurations take approximately 30 minutes, then BIG-IP is to implement SHA scenarios in [Integrate F5 BIG-IP with Azure Active Directory](f5-aad-integration.md).
+VM deployment and base system configurations take approximately 30 minutes, then BIG-IP is to implement SHA scenarios in [Integrate F5 BIG-IP with Azure Active Directory](f5-integration.md).
### Testing scenarios
See the following list for update-related guidance. Update instructions follow.
* Run v15.x and above. See, [F5 download](https://downloads.f5.com/esd/productlines.jsp). Sign-in required. * To update the main TMOS, see the F5 article, [K34745165: Managing software images on the BIG-IP system](https://support.f5.com/csp/article/K34745165) * If you can't update the main TMOS, you can upgrade the Guided Configuration. Use the following steps.
-* See also, [scenario-based guidance](f5-aad-integration.md)
+* See also, [scenario-based guidance](f5-integration.md)
1. In the BIG-IP web config, on the main tab, go to **Access** > **Guided Configuration**. 2. On the **Guided Configuration** page, select **Upgrade Guided Configuration**.
Get-AzVmSnapshot -ResourceGroupName '<E.g.contoso-RG>' -VmName '<E.g.BIG-IP-VM>'
## Next steps
-Select a [deployment scenario](f5-aad-integration.md) and start your implementation.
+Select a [deployment scenario](f5-integration.md) and start your implementation.
active-directory F5 Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-integration.md
+
+ Title: Secure hybrid access with F5
+description: F5 BIG-IP Access Policy Manager and Azure Active Directory integration for Secure Hybrid Access
++++++ Last updated : 12/13/2022+++++
+# Integrate F5 BIG-IP with Azure Active Directory
+
+With increases in the threat landscape and the use of multiple mobile devices, organizations are rethinking resource access and governance. Part of modernization programs include assessing your readiness across identities, devices, apps, infrastructure, network, and data. You can learn about the [Zero Trust framework to enable remote work](https://www.microsoft.com/security/blog/2020/04/02/announcing-microsoft-zero-trust-assessment-tool/) and the Zero Trust Assessment tool.
+
+At Microsoft and F5, we realize your digital transformation is a long-term journey, potentially critical resources are exposed until modernized. The goal of F5 BIG-IP and Azure Active Directory (Azure AD) secure hybrid access (SHA) is to improve remote access to on-premises applications, and strengthen the security posture of vulnerable legacy services.
+
+Research estimates that 60%-80% of on-premises applications are legacy, or incapable of being integrated with Azure AD. The same study indicates a large proportion of similar systems run on previous versions of SAP, Oracle, SAGE, and other well-known workloads for critical services.
+
+SHA enables organizations to continue using investments in F5 network and application delivery. With Azure AD, SHA bridges the gap with the identity control plane.
+
+## Benefits
+
+When Azure AD pre-authenticates access to BIG-IP published services, there are many benefits:
+
+- Password-less authentication with:
+ - [Windows Hello](/windows/security/identity-protection/hello-for-business/hello-overview)
+ - [MS Authenticator](https://support.microsoft.com/account-billing/download-and-install-the-microsoft-authenticator-app-351498fc-850a-45da-b7b6-27e523b8702a)
+ - [Fast Identity Online (FIDO) keys](../authentication/howto-authentication-passwordless-security-key.md)
+ - [Certificate-based authentication](../authentication/concept-certificate-based-authentication.md)
+
+Other benefits include:
+
+- One control plane to govern identity and access
+ - The [Azure portal](https://azure.microsoft.com/features/azure-portal/)
+- Preemptive [Conditional Access](../conditional-access/overview.md)
+- [Azure AD Multi-Factor Authentication (MFA)](../authentication/concept-mfa-howitworks.md)
+- Adaptive protection through user and session risk profiling
+ - [Identity Protection](../identity-protection/overview-identity-protection.md)
+- [Leaked credential detection](../identity-protection/concept-identity-protection-risks.md)
+- [Self-service password reset (SSPR)](../authentication/tutorial-enable-sspr.md)
+- Entitlement management for governed guest access
+ - [Partner collaboration](../governance/entitlement-management-external-users.md)
+- App discovery and control
+ - [Defender for Cloud Apps (CASB)](/cloud-app-security/what-is-cloud-app-security)
+- Threat monitoring and analytics with [Microsoft Sentinel](https://azure.microsoft.com/services/azure-sentinel/)
+
+## Scenario description
+
+As an Application Delivery Controller (ADC) and secure socket layer virtual private network (SSL-VPN), a BIG-IP system provides local and remote access to services, including:
+
+- Modern and legacy web applications
+- Non-web-based applications
+- Representational State Transfer (REST) and Simple Object Access Protocol (SOAP) Web application programming interface (API) services
+
+BIG-IP Local Traffic Manager (LTM) is for secure service publishing, while an Access Policy Manager (APM) extends BIG-IP functions that enable identity federation and single sign-on (SSO).
+
+With integration, you achieve the protocol transition to secure legacy, or non-Azure AD-integrated services, with controls such as:
+
+* [Password-less authentication](https://www.microsoft.com/security/business/identity/passwordless)
+* [Conditional Access](../conditional-access/overview.md)
+
+In the scenario, a BIG-IP is a reverse proxy that hands off service pre-authentication and authorization to Azure AD. The integration is based on a standard federation trust between the APM and Azure AD. This scenario is common with SHA. Learn more: [Configure F5 BIG-IP SSL-VPN for Azure AD SSO](f5-passwordless-vpn.md). With SHA you can secure Security Assertion Markup Language (SAML), Open Authorization (OAuth), and Open ID Connect (OIDC) resources.
+
+> [!NOTE]
+> When used for local and remote access, a BIG-IP can be a choke point for Zero Trust access to services, including software as a service (SaaS) apps.
+
+The following diagram illustrates the front-end pre-authentication exchange between a user, a BIG-IP, and Azure AD, in a service provider (SP) initiated flow. It then shows subsequent APM session enrichment, and SSO to individual back-end services.
+
+ ![Diagram of integration architecture.](./media/f5-integration/integration-flow-diagram.png)
+
+1. In the portal, a user selects an application icon, resolving URL to the SAML SP (BIG-IP)
+2. BIG-IP redirects the user to the SAML identity provider (IdP), Azure AD, for pre-authentication
+3. Azure AD processes Conditional Access policies and [session controls](../conditional-access/concept-conditional-access-session.md) for authorization
+4. User goes back to BIG-IP, and presents the SAML claims issued by Azure AD
+5. BIG-IP requests session information for [SSO](../hybrid/how-to-connect-sso.md) and [role-based access control (RBAC)](../../role-based-access-control/overview.md) to the published service
+6. BIG-IP forwards the client request to the back-end service
+
+## User experience
+
+Whether an employee, affiliate, or consumer, most users are acquainted with the Office 365 sign-in experience. Accessing BIG-IP services is similar.
+
+Users can find their BIG-IP published services in the [My Apps portal](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510) or [Microsoft 365 app launcher](https://support.microsoft.com/office/meet-the-microsoft-365-app-launcher-79f12104-6fed-442f-96a0-eb089a3f476a) with self-service capabilities, regardless of device or location. Users can continue accessing published services with the BIG-IP Webtop portal. When users sign out, SHA ensures session termination for BIG-IP and Azure AD, helping services remain protected from unauthorized access.
+
+Users access the My Apps portal to find BIG-IP published services and to manage their account properties. See the gallery and self-service page in the following graphics.
+
+ ![Screenshot of woodgrove my apps page.](media/f5-integration/woodgrove-app-gallery.png)
+
+ ![Screenshot of woodgrove my account page.](media/f5-integration/woodgrove-myaccount.png)
+
+## Insights and analytics
+
+You can monitor deployed BIG-IP instances to ensure published services are highly available, at an SHA level and operationally.
+
+There are several options to log events locally, or remotely through a Security Information and Event Management (SIEM) solution, which enables storage and telemetry processing. To monitor Azure AD and SHA activity, you can use [Azure Monitor](../../azure-monitor/overview.md) and [Microsoft Sentinel](../../sentinel/overview.md), together:
+
+- Overview of your organization, potentially across multiple clouds, and on-premises locations, including BIG-IP infrastructure
+- One control plane with view of signals, avoiding reliance on complex, and disparate tools
+
+ ![Diagram of the monitoring flow.](media/f5-integration/sentinel.png)
+
+## Integration prerequisites
+
+No previous experience, or F5 BIG-IP knowledge, is necessary to implement SHA, but we recommend you learn some F5 BIG-IP terminology. See the F5 service [Glossary](https://www.f5.com/services/resources/glossary).
+
+Integrating an F5 BIG-IP with Azure AD for SHA has the following prerequisites:
+
+- An F5 BIG-IP instance running on:
+ - Physical appliance
+ - Hypervisor Virtual Edition such as Microsoft Hyper-V, VMware ESXi, Linux KVM, and Citrix Hypervisor
+ - Cloud Virtual Edition such as Azure, VMware, KVM, Community Xen, MS Hyper-V, AWS, OpenStack, and Google Cloud
+
+> [!NOTE]
+> The BIG-IP instance location can be on-premises or a supported cloud platform including Azure. The instance has internet connectivity, resources being published, and any services such as Active Directory.
+
+- An active F5 BIG-IP APM license:
+ - F5 BIG-IP&reg; Best bundle
+ - F5 BIG-IP Access Policy Manager&trade; standalone license
+ - F5 BIG-IP Access Policy Manager&trade; (APM) add-on license on an existing BIG-IP F5 BIG-IP&reg; Local Traffic Manager&trade; (LTM)
+ - A 90-day BIG-IP Access Policy Manager&trade; (APM) [trial license](https://www.f5.com/trial/big-ip-trial.php)
+- Azure AD licensing:
+ - An [Azure free account](https://azure.microsoft.com/free/active-directory/) has minimum core requirements for SHA with password-less authentication
+ - A [Premium subscription](https://www.microsoft.com/security/business/identity-access-management/azure-ad-pricing) has [Conditional Access](../conditional-access/overview.md), [multi-factor authentication](../authentication/concept-mfa-howitworks.md), and [Identity Protection](../identity-protection/overview-identity-protection.md)
+
+## Configuration scenarios
+
+You can configure a BIG-IP for SHA with template-based options, or a manual configuration. The following tutorials have guidance on implementing BIG-IP and Azure AD secure hybrid access.
+
+### Advanced configuration
+
+The advanced approach is a flexible way to implement SHA. You manually create all BIG-IP configuration objects. Use this approach for scenarios not in guided configuration templates.
+
+Advanced configuration tutorials:
+
+- [F5 BIG-IP in Azure deployment walk-through](f5-bigip-deployment-guide.md)
+
+- [Securing F5 BIG-IP SSL-VPN with Azure AD SHA](f5-passwordless-vpn.md)
+
+- [Extend Azure AD B2C to protect applications using F5 BIG-IP](../../active-directory-b2c/partner-f5.md)
+
+- [F5 BIG-IP APM and Azure AD SSO to Kerberos applications](f5-big-ip-kerberos-advanced.md)
+
+- [F5 BIG-IP APM and Azure AD SSO to header-based applications](f5-big-ip-header-advanced.md)
+
+- [F5 BIG-IP APM and Azure AD SSO to forms-based applications](f5-big-ip-forms-advanced.md)
+
+### Guided Configuration and Easy Button templates
+
+The BIG-IP version 13.1 Guided Configuration wizard, minimizes time and effort to implement common BIG-IP publishing scenarios. Its workflow framework provides an intuitive deployment experience, for specific access topologies.
+
+Guided Configuration version 16.x has the Easy Button feature: admins no longer go back and forth between Azure AD and a BIG-IP to enable services for SHA. The end-to-end deployment and policy management is handled by the APM Guided Configuration wizard and Microsoft Graph. This integration between BIG-IP APM and Azure AD ensures applications support identity federation, SSO, and Azure AD Conditional Access, without the management overhead of doing so for each app.
+
+Tutorials for using Easy Button templates, *F5 BIG-IP Easy Button for SSO to*:
+
+- [Kerberos applications](f5-big-ip-kerberos-easy-button.md)
+
+- [Header-based applications](f5-big-ip-headers-easy-button.md)
+
+- [Header-based and LDAP applications](f5-big-ip-ldap-header-easybutton.md)
+
+- [Oracle EBS (Enterprise Business Suite)](f5-big-ip-oracle-enterprise-business-suite-easy-button.md)
+
+- [Oracle JD Edwards](f5-big-ip-oracle-jde-easy-button.md)
+
+- [Oracle PeopleSoft](f5-big-ip-oracle-peoplesoft-easy-button.md)
+
+- [SAP ERP](f5-big-ip-sap-erp-easy-button.md)
+
+## Azure AD B2B guest access
+
+Azure AD B2B guest access to SHA-protected applications is possible, but might require steps not in the tutorials. One example is Kerberos SSO, when a BIG-IP performs kerberos constrained delegation (KCD) to obtain a service ticket from domain controllers. Without a local representation of a local guest user, a domain controller won't honor the request because there's no user. To support this scenario, ensure external identities are flowed down from your Azure AD tenant to the directory used by the application.
+
+Learn more: [Grant B2B users in Azure AD access to your on-premises applications](../external-identities/hybrid-cloud-to-on-premises.md)
+
+## Next steps
+
+You can conduct a proof-of-concept for SHA using your BIG-IP infrastructure, or by [Deploying a BIG-IP Virtual Edition (VE) VM into Azure](f5-bigip-deployment-guide.md). To deploy a VM in Azure takes approximately 30 minutes, then you'll have:
+
+- A secured platform to model a pilot for SHA
+- A pre-production instance for testing new BIG-IP system updates and hotfixes
+
+Identify one or two applications to be published with BIG-IP and protected with SHA.
+
+Our recommendation is to start with an application that isn't published via a BIG-IP. This action avoids potential disruption to production services. The guidelines in this article can help you learn about the procedure to create BIG-IP configuration objects and setting up SHA. You can then convert BIG-IP published services to SHA with minimal effort.
+
+The following interactive guide illustrates implementing SHA with a template, and the end-user experience.
+
+ [![Main page and start button for the interactive guide.](media/f5-integration/interactive-guide.png)](https://aka.ms/Secure-Hybrid-Access-F5-Interactive-Guide)
+
+## Resources
+
+- [The end of passwords, go passwordless](https://www.microsoft.com/security/business/identity/passwordless)
+- [Azure Active Directory secure hybrid access](https://azure.microsoft.com//services/active-directory/sso/secure-hybrid-access/)
+- [Microsoft Zero Trust framework to enable remote work](https://www.microsoft.com/security/blog/2020/04/02/announcing-microsoft-zero-trust-assessment-tool/)
+- [Getting started with Microsoft Sentinel](https://azure.microsoft.com/services/azure-sentinel/?&OCID=AID2100131_SEM_XfknpgAAAHoVMTvh:20200922160358:s&msclkid=5e0e022409fc1c94dab85d4e6f4710e3&ef_id=XfknpgAAAHoVMTvh:20200922160358:s&dclid=CJnX6vHU_esCFUq-ZAod1iQF6A)
active-directory F5 Passwordless Vpn https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/f5-passwordless-vpn.md
+
+ Title: Configure F5 BIG-IP SSL-VPN solution in Azure AD
+description: Tutorial to configure F5's BIG-IP based Secure socket layer Virtual private network (SSL-VPN) solution with Azure Active Directory (AD) for Secure Hybrid Access (SHA)
+++++++ Last updated : 12/13/2022++++++
+# Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO
+
+In this tutorial, learn how to integrate F5 BIG-IP based secure socket layer virtual private network (SSL-VPN) with Azure Active Directory (Azure AD) for secure hybrid access (SHA).
+
+Enabling a BIG-IP SSL-VPN for Azure AD single sign-on (SSO) provides many benefits, including:
+
+- Improved Zero trust governance through Azure AD pre-authentication and Conditional Access.
+ - [What is Conditional Access?](../conditional-access/overview.md)
+- [Passwordless authentication](https://www.microsoft.com/security/business/identity/passwordless) to the VPN service
+- Manage identities and access from a single control plane, the [Azure portal](https://azure.microsoft.com/features/azure-portal/)
+
+To learn about more benefits, see
+
+* [Integrate F5 BIG-IP with Azure Active Directory](./f5-integration.md)
+* [What is single sign-on in Azure Active Directory?](/azure/active-directory/active-directory-appssoaccess-whatis)
+
+>[!NOTE]
+>Classic VPNs remain network orientated, often providing little to no fine-grained access to corporate applications. We encourage a more identity-centric approach to achieve Zero Trust. Learn more: [Five steps for integrating all your apps with Azure AD](../fundamentals/five-steps-to-full-application-integration.md).
+
+## Scenario description
+
+In this scenario, the BIG-IP APM instance of the SSL-VPN service is configured as a SAML service provider (SP) and Azure AD is the trusted SAML IDP. SSO from Azure AD is provided through claims-based authentication to the BIG-IP APM, a seamless VPN access experience.
+
+ ![Diagram of integration architecture.](media/f5-passwordless-vpn/ssl-vpn-architecture.png)
+
+>[!NOTE]
+>Replace example strings or values in this guide with those in your environment.
+
+## Prerequisites
+
+Prior experience or knowledge of F5 BIG-IP isn't necessary, however, you'll need:
+
+- An Azure AD subscription
+ - If you don't have one, you can get an [Azure free account](https://azure.microsoft.com/trial/get-started-active-directory/) or above
+- User identities [synchronized from their on-premises directory](../hybrid/how-to-connect-sync-whatis.md) to Azure AD.
+- An account with Azure AD application admin [permissions](../roles/permissions-reference.md#application-administrator)
+- BIG-IP infrastructure with client traffic routing to and from the BIG-IP
+ - Or [deploy a BIG-IP Virtual Edition into Azure](f5-bigip-deployment-guide.md)
+- A record for the BIG-IP published VPN service in public DNS
+ - Or a test client localhost file while testing
+- The BIG-IP provisioned with the needed SSL certificates for publishing services over HTTPS
+
+To improve the tutorial experience, you can learn industry-standard terminology on the F5 BIG-IP [Glossary](https://www.f5.com/services/resources/glossary).
+
+>[!NOTE]
+>Some instructions might vary slightly from the Azure portal.
+
+## Add F5 BIG-IP from the Azure AD gallery
+
+Set up a SAML federation trust between the BIG-IP to allow the Azure AD BIG-IP to hand off the pre-authentication and [Conditional Access](../conditional-access/overview.md) to Azure AD, before it grants access to the published VPN service.
+
+1. Sign in to the Azure portal with application admin rights.
+2. From the left navigation pane, select the **Azure Active Directory service**.
+3. Go to **Enterprise Applications** and from the top ribbon select **New application**.
+4. In the gallery, search for F5 and select **F5 BIG-IP APM Azure AD integration**.
+5. Enter a name for the application.
+6. Select **Add** then **Create**.
+7. The name, as an icon, appears in the Azure portal and Office 365 portal.
+
+## Configure Azure AD SSO
+
+1. With F5 application properties, go to **Manage** > **Single sign-on**.
+2. On the **Select a single sign-on method** page, select **SAML**.
+3. Select **No, I'll save later**.
+4. On the **Setup single sign-on with SAML** menu, select the pen icon for **Basic SAML Configuration**.
+5. Replace the **Identifier URL** with your BIG-IP published service URL. For example, `https://ssl-vpn.contoso.com`.
+6. Replace the **Reply URL**, and the SAML endpoint path. For example, `https://ssl-vpn.contoso.com/saml/sp/profile/post/acs`.
+
+>[!NOTE]
+>In this configuration, the application operates in an IdP-initiated mode: Azure AD issues a SAML assertion before redirecting to the BIG-IP SAML service.
+
+7. For apps that don't support IdP-initiated mode, for the BIG-IP SAML service, specify the **Sign-on URL**, for example, `https://ssl-vpn.contoso.com`.
+8. For the Logout URL, enter the BIG-IP APM Single logout (SLO) endpoint pre-pended by the host header of the service being published. For example, `https://ssl-vpn.contoso.com/saml/sp/profile/redirect/slr`
+
+>[!NOTE]
+>An SLO URL ensures a user session terminates, at BIG-IP and Azure AD, after the user signs out. BIG-IP APM has an option to terminate all sessions when calling an application URL. Learn more on the F5 article, [K12056: Overview of the Logout URI Include option](https://support.f5.com/csp/article/K12056).
+
+ ![Screenshot of basic SAML configuration URLs.](media/f5-passwordless-vpn/basic-saml-configuration.png).
+
+>[!NOTE]
+>From TMOS v16, the SAML SLO endpoint has changed to /saml/sp/profile/redirect/slo.
+
+9. Select **Save**
+10. Skip the SSO test prompt.
+11. In **User Attributes & Claims** properties, observe the details.
+
+ ![Screenshot of user attributes and claims properties.](media/f5-passwordless-vpn/user-attributes-claims.png)
+
+You can add other claims to your BIG-IP published service. Claims defined in addition to the default set are issued if they're in Azure AD. Define directory [roles or group](../hybrid/how-to-connect-fed-group-claims.md) memberships against a user object in Azure AD, before they can be issued as a claim.
+
+ ![Screenshot of Federation Metadata XML Download option.](media/f5-passwordless-vpn/saml-signing-certificate.png)
+
+SAML signing certificates created by Azure AD have a lifespan of three years.
+
+### Azure AD authorization
+
+By default, Azure AD issues tokens to users with granted access to a service.
+
+1. In the application configuration view, select **Users and groups**.
+2. Select **+ Add user**.
+3. In the **Add Assignment** menu, select **Users and groups**.
+4. In the **Users and groups** dialog, add the user groups authorized to access the VPN
+5. Select **Select** > **Assign**.
+
+ ![Screenshot of the Add User option.](media/f5-passwordless-vpn/add-user-link.png)
+
+You can set up BIG-IP APM to publish the SSL-VPN service. Configure it with corresponding properties to complete the trust for SAML pre-authentication.
+
+## BIG-IP APM configuration
+
+### SAML federation
+
+To complete federating the VPN service with Azure AD, create the BIG-IP SAML service provider and corresponding SAML IDP objects.
+
+1. Go to **Access** > **Federation** > **SAML Service Provider** > **Local SP Services**.
+2. Select **Create**.
+
+ ![Screenshot of the Create option on the Local SP Services page.](media/f5-passwordless-vpn/bigip-saml-configuration.png)
+
+3. Enter a **Name** and the **Entity ID** defined in Azure AD.
+4. Enter the Host FQDN to connect to the application.
+
+ ![Screenshot of Name and Entity entries.](media/f5-passwordless-vpn/create-new-saml-sp.png)
+
+>[!NOTE]
+>If the entity ID isn't an exact match of the hostname of the published URL, configure SP **Name** settings, or perform this action if it isn't in hostname URL format. If entity ID is `urn:ssl-vpn:contosoonline`, provide the external scheme and hostname of the application being published.
+
+5. Scroll down to select the new **SAML SP object**.
+6. Select **Bind/UnBind IDP Connectors**.
+
+ ![Screenshot of the Bind Unbind IDP Connections option on the Local SP Services page.](media/f5-passwordless-vpn/federation-local-sp-service.png)
+
+7. Select **Create New IDP Connector**.
+8. From the drop-down menu, select **From Metadata**
+
+ ![Screenshot of the From Metadata option on the Edit SAML IdPs page.](media/f5-passwordless-vpn/create-new-idp-connector.png)
+
+9. Browse to the federation metadata XML file you downloaded.
+10. For the APM object,provide an **Identity Provider Name** that represents the external SAML IdP.
+11. To select the new Azure AD external IdP connector, select **Add New Row**.
+
+ ![Screenshot of SAML IdP Connectors option on the Edit SAML IdP page.](media/f5-passwordless-vpn/external-idp-connector.png)
+
+12. Select **Update**.
+13. Select **OK**.
+
+ ![Screenshot of the Common, VPN Azure link on the Edit SAML IdPs page.](media/f5-passwordless-vpn/saml-idp-using-sp.png)
+
+### Webtop configuration
+
+Enable the SSL-VPN to be offered to users via the BIG-IP web portal.
+
+1. Go to **Access** > **Webtops** > **Webtop Lists**.
+2. Select **Create**.
+3. Enter a portal name.
+4. Set the type to **Full**, for example, `Contoso_webtop`.
+5. Complete the remaining preferences.
+6. Select **Finished**.
+
+ ![Screenshot of name and type entries in General Properties.](media/f5-passwordless-vpn/webtop-configuration.png)
+
+### VPN configuration
+
+VPN elements control aspects of the overall service.
+
+1. Go to **Access** > **Connectivity/VPN** > **Network Access (VPN)** > **IPV4 Lease Pools**
+2. Select **Create**.
+3. Enter a name for the IP address pool allocated to VPN clients. For example, Contoso_vpn_pool.
+4. Set type to **IP Address Range**.
+5. Enter a start and end IP.
+6. Select **Add**.
+7. Select **Finished**.
+
+ ![Screenshot of name and member list entries in General Properties.](media/f5-passwordless-vpn/vpn-configuration.png)
+
+A Network access list provisions the service with IP and DNS settings from the VPN pool, user routing permissions, and can launch applications.
+
+1. Go to **Access** > **Connectivity/VPN: Network Access (VPN)** > **Network Access Lists**.
+2. Select **Create**.
+3. Provide a name for the VPN access list and caption, for example, Contoso-VPN.
+4. Select **Finished**.
+
+ ![Screenshot of name entry in General Properties, and caption entry in Customization Settings for English.](media/f5-passwordless-vpn/vpn-configuration-network-access-list.png)
+
+5. From the top ribbon, select **Network Settings**.
+6. For **Supported IP version**: IPV4.
+7. For **IPV4 Lease Pool**, select the VPN pool created, for example, Contoso_vpn_pool
+
+ ![Screenshot of the IPV4 Lease Pool entry in General Settings.](media/f5-passwordless-vpn/contoso-vpn-pool.png)
+
+>[!NOTE]
+>Use the Client Settings options to enforce restrictions for how client traffic is routed in an established VPN.
+
+8. Select **Finished**.
+9. Go to the **DNS/Hosts** tab.
+10. For **IPV4 Primary Name Server**: Your environment DNS IP
+11. For **DNS Default Domain Suffix**: The domain suffix for this VPN connection. For example, contoso.com
+
+ ![Screenshot of entries for IPV4 Primary Server Name and DNS Default Domain Suffix.](media/f5-passwordless-vpn/domain-suffix.png)
+
+>[!NOTE]
+>See the F5 article, [Configuring Network Access Resources](https://techdocs.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-network-access-11-5-0/2.html) for other settings.
+
+A BIG-IP connection profile is required to configure VPN client-type settings the VPN service needs to support. For example, Windows, OSX, and Android.
+
+1. Go to **Access** > **Connectivity/VPN** > **Connectivity** > **Profiles**
+2. Select **Add**.
+3. Enter a profile name.
+4. Set the parent profile to **/Common/connectivity**, for example, Contoso_VPN_Profile.
+
+ ![Screenshot of Profile Name and Parent Name entries in Create New Connectivity Profile.](media/f5-passwordless-vpn/create-connectivity-profile.png)
+
+For more information on client support, see the F5 article, [F5 Access and BIG-IP Edge Client](https://techdocs.f5.com/kb/en-us/bigip-edge-apps.html).
+
+## Access profile configuration
+
+An access policy enables the service for SAML authentication.
+
+1. Go to **Access** > **Profiles/Policies** > **Access Profiles (Per-Session Policies)**.
+2. Select **Create**.
+3. Enter a profile name and for the profile type.
+4. Select **All**, for example, Contoso_network_access.
+5. Scroll down and add at least one language to the **Accepted Languages** list
+6. Select **Finished**.
+
+ ![Screenshot of Name, Profile Type, and Language entries on New Profile.](media/f5-passwordless-vpn/general-properties.png)
+
+7. In the new access profile, on the Per-Session Policy field, select **Edit**.
+8. The visual policy editor opens in a new tab.
+
+ ![Screenshot of the Edit option on Access Profiles, pre-session policies.](media/f5-passwordless-vpn/per-session-policy.png)
+
+9. Select the **+** sign.
+10. In the menu, select **Authentication** > **SAML Auth**.
+11. Select **Add Item**.
+12. In the SAML authentication SP configuration, select the VPN SAML SP object you created
+13. Select **Save**.
+
+ ![Screenshot of the AAA Server entry under SAML Authentication SP, on the Properties tab.](media/f5-passwordless-vpn/saml-authentication.png)
+
+14. For the Successful branch of SAML auth, select **+** .
+15. From the Assignment tab, select **Advanced Resource Assign**.
+16. Select **Add Item**.
+
+ ![Screenshot of the plus button on Access Policy.](media/f5-passwordless-vpn/advance-resource-assign.png)
+
+17. In the pop-up, select **New Entry**
+18. Select **Add/Delete**.
+19. In the window, select **Network Access**.
+20. Select the Network Access profile you created.
+
+ ![Screenshot of the Add new entry button on Resource Assignment, on the Properties tab.](media/f5-passwordless-vpn/add-new-entry.png)
+
+21. Go to the **Webtop** tab.
+22. Add the Webtop object you created.
+
+ ![Screenshot of the created webtop on the Webtop tab.](media/f5-passwordless-vpn/add-webtop-object.png)
+
+23. Select **Update**.
+24. Select**Save**.
+25. To change the Successful branch, select the link in the upper **Deny** box.
+26. The Allow label appears.
+27. **Save**.
+
+ ![Screenshot of the Deny option on Access Policy.](media/f5-passwordless-vpn/vizual-policy-editor.png)
+
+28. Select **Apply Access Policy**
+29. Close the visual policy editor tab.
+
+ ![Screenshot of the Apply Access Policy option.](media/f5-passwordless-vpn/access-policy-manager.png)
+
+## Publish the VPN service
+
+The APM requires a front-end virtual server to listen for clients connecting to the VPN.
+
+1. Select **Local Traffic** > **Virtual Servers** > **Virtual Server List**.
+2. Select **Create**.
+3. For the VPN virtual server, enter a **Name**, for example, VPN_Listener.
+4. Select an unused **IP Destination Address** with routing to receive client traffic.
+5. Set the Service Port to **443 HTTPS**.
+6. For **State**, ensure **Enabled** is selected.
+
+ ![Screenshot of Name and Destination Address or Mask entries on General Properties.](media/f5-passwordless-vpn/new-virtual-server.png)
+
+7. Set the **HTTP Profile** to **http**.
+8. Add the SSL Profile (Client) for the public SSL certificate you created.
+
+ ![Screenshot of HTTP Profile entry for client, and SSL Profile selected entries for client.](media/f5-passwordless-vpn/ssl-profile.png)
+
+9. To use the created VPN objects, under Access Policy, set the **Access Profile** and **Connectivity Profile**.
+
+ ![Screenshot of Access Profile and Connectivity Profile entries on Access Policy.](media/f5-passwordless-vpn/access-policy.png)
+
+7. Select **Finished**.
+
+Your SSL-VPN service is published and accessible via SHA, either with its URL or through Microsoft application portals.
+
+## Next steps
+
+1. Open a browser on a remote Windows client.
+2. Browse to the **BIG-IP VPN service** URL.
+3. The BIG-IP webtop portal and VPN launcher appear.
+
+ ![Screenshot of the Contoso Network Portal page with network access indicator.](media/f5-passwordless-vpn/vpn-launcher.png)
+
+>[!NOTE]
+>Select the VPN tile to install the BIG-IP Edge client and establish a VPN connection configured for SHA. The F5 VPN application is visible as a target resource in Azure AD Conditional Access. See [conditional access policies](../conditional-access/concept-conditional-access-policies.md) to enable users for Azure AD [password-less authentication](https://www.microsoft.com/security/business/identity/passwordless).
++
+## Resources
+
+- [The end of passwords, go passwordless](https://www.microsoft.com/security/business/identity/passwordless)
+- [Five steps to full application integration with Azure AD](../fundamentals/five-steps-to-full-application-integration.md)
+- [Microsoft Zero Trust framework to enable remote work](https://www.microsoft.com/security/blog/2020/04/02/announcing-microsoft-zero-trust-assessment-tool/)
active-directory Migrate Adfs Discover Scope Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-adfs-discover-scope-apps.md
Discover applications using ADFS:
## Using other identity providers (IdPs) -- If youΓÇÖre currently using Okta, refer to our [Okta to Azure AD migration guide](migrate-applications-from-okta-to-azure-active-directory.md).
+- If youΓÇÖre currently using Okta, refer to our [Okta to Azure AD migration guide](migrate-applications-from-okta.md).
- If youΓÇÖre currently using Ping Federate, then consider using the [Ping Administrative API](https://docs.pingidentity.com/r/en-us/pingfederate-112/pf_admin_api) to discover applications.
active-directory Migrate Adfs Plan Management Insights https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-adfs-plan-management-insights.md
You're successful in this phase when you:
Deployment plans walk you through the business value, planning, implementation steps, and management of Azure AD solutions, including app migration scenarios. They bring together everything that you need to start deploying and getting value out of Azure AD capabilities. The deployment guides include content such as Microsoft recommended best practices, end-user communications, planning guides, implementation steps, test cases, and more.
-Many [deployment plans](../fundamentals/active-directory-deployment-plans.md) are available for your use, and weΓÇÖre always making more!
+Many [deployment plans](../fundamentals/deployment-plans.md) are available for your use, and weΓÇÖre always making more!
## Contact support
active-directory Migrate Applications From Okta https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-applications-from-okta.md
++
+ Title: Tutorial to migrate your applications from Okta to Azure Active Directory
+description: Learn how to migrate your applications from Okta to Azure Active Directory.
++++++ Last updated : 12/14/2022+++++
+# Tutorial: Migrate your applications from Okta to Azure Active Directory
+
+In this tutorial, you'll learn how to migrate your applications from Okta to Azure Active Directory (Azure AD).
+
+## Create an inventory of current Okta applications
+
+Before migration, document the current environment and application settings. You can use the Okta API to collect this information. Use an API explorer tool such as [Postman](https://www.postman.com/).
+
+To create an application inventory:
+
+1. With the Postman app, from the Okta admin console, generate an API token.
+2. On the API dashboard, under **Security**, select **Tokens** > **Create Token**.
+
+ ![Screenshot of the Tokens and Create Tokens options under Security.](media/migrate-applications-from-okta/token-creation.png)
+
+3. Enter a token name and then select **Create Token**.
+
+ ![Screenshot of the Name entry under Create Token.](media/migrate-applications-from-okta/token-created.png)
+
+4. Record the token value and save it. After you select **OK, got it**, it is not accessible.
+
+ ![Screenshot of the Token Value field and the OK got it option.](media/migrate-applications-from-okta/record-created.png)
+
+5. In the Postman app, in the workspace, select **Import**.
+
+ ![Screenshot of the Import option on Postman.](media/migrate-applications-from-okta/import-api.png)
+
+6. On the **Import** page, select **Link**. To import the API, insert the following link:
+
+`https://developer.okta.com/docs/api/postman/example.oktapreview.com.environment`
+
+ ![Screenshot of the Link and Continue options on Import.](media/migrate-applications-from-okta/link-to-import.png)
+
+>[!NOTE]
+>Don't modify the link with your tenant values.
+
+7. Select **Import**.
+
+ ![Screenshot of the Import option on Import.](media/migrate-applications-from-okta/next-import-menu.png)
+
+8. After the API is imported, change the **Environment** selection to **{yourOktaDomain}**.
+9. To edit your Okta environment select the **eye** icon. Then select **Edit**.
+
+ ![Screenshot of the eye icon and Edit option on Overview.](media/migrate-applications-from-okta/edit-environment.png)
+
+10. In the **Initial Value** and **Current Value** fields, update the values for the URL and API key. Change the name to reflect your environment.
+11. Save the values.
+
+ ![Screenshot of Initial Value and Current Value fields on Overview.](media/migrate-applications-from-okta/update-values-for-api.png)
+
+12. [Load the API into Postman](https://app.getpostman.com/run-collection/377eaf77fdbeaedced17).
+13. Select **Apps** > **Get List Apps** > **Send**.
+
+>[!NOTE]
+>You can print the applications in your Okta tenant. The list is in JSON format.
+
+ ![Screenshot of the Send option and the Apps list.](media/migrate-applications-from-okta/list-of-applications.png)
+
+We recommend you copy and convert this JSON list to a CSV format:
+
+* Use a public converter such as [Konklone](https://konklone.io/json/)
+* Or for PowerShell, use [ConvertFrom-Json](/powershell/module/microsoft.powershell.utility/convertfrom-json) and [ConvertTo-CSV](/powershell/module/microsoft.powershell.utility/convertto-csv)
+
+>[!NOTE]
+>To have a record of the applications in your Okta tenant, download the CSV.
+
+## Migrate a SAML application to Azure AD
+
+To migrate a SAML 2.0 application to Azure AD, configure the application in your Azure AD tenant for application access. In this example, we convert a Salesforce instance.
+
+1. To configure the applications, follow the tutorial [Azure Active Directory single sign-on (SSO) integration with Salesforce](../saas-apps/salesforce-tutorial.md).
+
+To complete the migration, repeat the configuration for all applications in the Okta tenant.
+
+2. In the [Azure portal](https://portal.azure.com), select **Azure Active Directory** > **Enterprise applications** > **+ New application**.
+
+ ![Screenshot of the New Application option on All applications.](media/migrate-applications-from-okta/list-of-new-applications.png)
+
+3. In **Azure AD Gallery**, search for **Salesforce**, select the application, and then select **Create**.
+
+ ![Screenshot of applications in the Azure AD Gallery.](media/migrate-applications-from-okta/salesforce-application.png)
+
+4. After the application is created, on the **Single sign-on** (SSO) tab, select **SAML**.
+
+ ![Screenshot of the SAML option on Single sign-on.](media/migrate-applications-from-okta/saml-application.png)
+
+5. Download the **Certificate (Raw)** and **Federation Metadata XML** to import it into Salesforce.
+
+ ![Screenshot of Certificate (Raw) and Federation Metadata XML entries under SAML Signing Certificate.](media/migrate-applications-from-okta/federation-metadata.png)
+
+6. On the Salesforce administration console, select **Identity** > **Single Sign-On Settings** > **New from Metadata File**.
+
+ ![Screenshot of the New from Metadata File option under Single Sign On Settings.](media/migrate-applications-from-okta/salesforce-admin-console.png)
+
+7. Upload the XML file you downloaded from the Azure portal. Then select **Create**.
+8. Upload the certificate you downloaded from Azure. Select **Save**.
+
+ ![Screenshot of the Identity Provider Certificate entry under SAML Single Sign On.](media/migrate-applications-from-okta/create-saml-provider.png)
+
+9. Record the values in the following fields. The values are in Azure.
+
+ * **Entity ID**
+ * **Login URL**
+ * **Logout URL**
+
+10. Select **Download Metadata**.
+
+ ![Screenshot of the Download Metadata option, also entries for Entity ID and Your Organization.](media/migrate-applications-from-okta/record-values-for-azure.png)
+
+11. To upload the file to the Azure portal, in the Azure AD **Enterprise applications** page, in the SAML SSO settings, select **Upload metadata file**.
+12. Ensure the imported values match the recorded values. Select **Save**.
+
+ ![Screenshot of entries for SAML-based sign-on, and Basic SAML Configuration.](media/migrate-applications-from-okta/upload-metadata-file.png)
+
+13. In the Salesforce administration console, select **Company Settings** > **My Domain**. Go to **Authentication Configuration** and then select **Edit**.
+
+ ![Screenshot of the Edit option under My Domain.](media/migrate-applications-from-okta/edit-company-settings.png)
+
+14. For a sign-in option, select the new SAML provider you configured. Select **Save**.
+
+ ![Screenshot of Authentication Service options under Authentication Configuration.](media/migrate-applications-from-okta/save-saml-provider.png)
+
+15. In Azure AD, on the **Enterprise applications** page, select **Users and groups**. Then add test users.
+
+ ![Screenshot of Users and groups with a list of test users.](media/migrate-applications-from-okta/add-test-user.png)
+
+16. To test the configuration, sign in as a test user. Go to the Microsoft [apps gallery](https://aka.ms/myapps) and then select **Salesforce**.
+
+ ![Screenshot of the Salesforce option under All Apps, on My Apps.](media/migrate-applications-from-okta/test-user-sign-in.png)
+
+17. To sign in, select the configured identity provider (IdP).
+
+ ![Screenshot of the Salesforce sign-in page.](media/migrate-applications-from-okta/new-identity-provider.png)
+
+>[!NOTE]
+>If configuration is correct, the test user lands on the Salesforce home page. For troubleshooting help, see the [debugging guide](../manage-apps/debug-saml-sso-issues.md).
+
+18. On the **Enterprise applications** page, assign the remaining users to the Salesforce application, with the correct roles.
+
+>[!NOTE]
+>After you add the remaining users to the Azure AD application, users can test the connection to ensure they have access. Test the connection before the next step.
+
+19. On the Salesforce administration console, select **Company Settings** > **My Domain**.
+
+20. Under **Authentication Configuration**, select **Edit**. For authentication service, clear the selection for **Okta**.
+
+ ![Screenshot of the Save option and Authentication Service options, under Authentication Configuration.](media/migrate-applications-from-okta/deselect-okta.png)
+
+## Migrate an OpenID Connect or OAuth 2.0 application to Azure AD
+
+To migrate an OpenID Connect (OIDC) or OAuth 2.0 application to Azure AD, in your Azure AD tenant, configure the application for access. In this example, we convert a custom OIDC app.
+
+To complete the migration, repeat configuration for all applications in the Okta tenant.
+
+1. In the [Azure portal](https://portal.azure.com), select **Azure Active Directory** > **Enterprise applications**.
+2. Under **All applications**, select **New application**.
+3. Select **Create your own application**.
+4. On the menu that appears, name the OIDC app and then select **Register an application you're working on to integrate with Azure AD**.
+5. Select **Create**.
+6. On the next page, set up the tenancy of your application registration. For more information, see [Tenancy in Azure Active Directory](../develop/single-and-multi-tenant-apps.md). Go to **Accounts in any organizational directory (Any Azure AD directory - Multitenant)** > **Register**.
+
+ ![Screenshot of the option for Accounts in any organizational directory (Any Azure AD directory - Multitenant).](media/migrate-applications-from-okta/multitenant-register-app.png)
+
+7. On the **App registrations** page, under **Azure Active Directory**, open the created registration.
+
+>[!NOTE]
+>Depending on the [application scenario](../develop/authentication-flows-app-scenarios.md), there are various configuration actions. Most scenarios require an app client secret.
+
+8. On the **Overview** page, record the **Application (client) ID**. You use this ID in your application.
+
+ ![Screenshot of the Application client ID entry on Migration Tenant.](media/migrate-applications-from-okta/application-client-id.png)
+
+9. On the left, select **Certificates & secrets**. Then select **+ New client secret**. Name the client secret and set its expiration.
+
+ ![Screenshot of New client secret entries on Certificates and secrets.](media/migrate-applications-from-okta/new-client-secret.png)
+
+10. Record the value and ID of the secret.
+
+>[!NOTE]
+>If you misplace the client secret, you can't retrieve it. Instead, regenerate a secret.
+
+11. On the left, select **API permissions**. Then grant the application access to the OIDC stack.
+12. Select **+ Add permission** > **Microsoft Graph** > **Delegated permissions**.
+13. In the **OpenId permissions** section, select **email**, **openid**, and **profile**. Then select **Add permissions**.
+14. To improve user experience and suppress user consent prompts, select **Grant admin consent for Tenant Domain Name**. Wait for the **Granted** status to appear.
+
+ ![Screenshot of the Successfully granted admin consent for the requested permissions message, under API permissions.](media/migrate-applications-from-okta/grant-admin-consent.png)
+
+15. If your application has a redirect URI, enter the URI. If the reply URL targets the **Authentication** tab, followed by **Add a platform** and **Web**, enter the URL.
+16. Select **Access tokens** and **ID tokens**.
+17. Select **Configure**.
+18. If needed, on the **Authentication** menu, under **Advanced settings** and **Allow public client flows**, select **Yes**.
+
+ ![Screenshot of the Yes option on Authentication.](media/migrate-applications-from-okta/allow-client-flows.png)
+
+19. Before you test, in your OIDC-configured application, import the application ID and client secret.
+
+>[!NOTE]
+>Use the previous steps to configure your application with settings such as Client ID, Secret, and Scopes.
+
+## Migrate a custom authorization server to Azure AD
+
+Okta authorization servers map one-to-one to application registrations that [expose an API](../develop/quickstart-configure-app-expose-web-apis.md#add-a-scope).
+
+Map the default Okta authorization server to Microsoft Graph scopes or permissions.
+
+ ![Screenshot of the Add a scope option on Expose and API.](media/migrate-applications-from-okta/default-okta-authorization.png)
+
+## Next steps
+
+- [Migrate Okta federation to Azure AD](migrate-okta-federation.md)
+- [Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning.md)
+- [Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)
active-directory Migrate Okta Federation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-okta-federation.md
+
+ Title: Migrate Okta federation to Azure Active Directory-managed authentication
+description: Migrate Okta-federated applications to managed authentication under Azure AD. See how to migrate federation in a staged manner.
++++++ Last updated : 05/23/2023+++++
+# Tutorial: Migrate Okta federation to Azure Active Directory-managed authentication
+
+In this tutorial, learn to federate Office 365 tenants with Okta for single sign-on (SSO).
+
+You can migrate federation to Azure Active Directory (Azure AD) in a staged manner to ensure a good authentication experience for users. In a staged migration, you can test reverse federation access to remaining Okta SSO applications.
+
+## Prerequisites
+
+- An Office 365 tenant federated to Okta for SSO
+- An Azure AD Connect server or Azure AD Connect cloud provisioning agents configured for user provisioning to Azure AD
+
+## Configure Azure AD Connect for authentication
+
+Customers that federate their Office 365 domains with Okta might not have a valid authentication method in Azure AD. Before you migrate to managed authentication, validate Azure AD Connect and configure it for user sign-in.
+
+Set up the sign-in method:
+
+* **Password hash synchronization** - an extension of the directory synchronization feature implemented by Azure AD Connect server or cloud-provisioning agents
+ * Use this feature to sign in to Azure AD services like Microsoft 365
+ * Sign in to the service with the password to sign in to the on-premises Active Directory instance
+ * See, [What is password hash synchronization with Azure AD?](../hybrid/whatis-phs.md)
+* **Pass-through authentication** - sign in to on-premises and cloud applications with the same passwords
+ * When users sign in through Azure AD, the pass-through authentication agent validates passwords against the on-premises AD
+ * See, [User sign-in with Azure Active Directory Pass-through Authentication](../hybrid/how-to-connect-pta.md)
+* **Seamless SSO** - signs in users on corporate desktops connected to the corporate network
+ * Users have access to cloud applications without other on-premises components
+ * See, [Azure AD seamless SSO](../hybrid/how-to-connect-sso.md)
+
+To create a seamless authentication user experience in Azure AD, deploy seamless SSO to password hash synchronization or pass-through authentication.
+
+For prerequisites of seamless SSO see, [Quickstart: Azure Active Directory Seamless single sign-on](../hybrid/how-to-connect-sso-quick-start.md#step-1-check-the-prerequisites).
+
+For this tutorial, you configure password hash synchronization and seamless SSO.
+
+### Configure Azure AD Connect for password hash synchronization and seamless SSO
+
+1. On the Azure AD Connect server, open the **Azure AD Connect** app.
+2. Select **Configure**.
+
+ ![Screenshot of the Azure AD icon and the Configure button in the Azure AD Connect app.](media/migrate-okta-federation/configure.png)
+
+3. Select **Change user sign-in**.
+4. Select **Next**.
+
+ ![Screenshot of the Azure AD Connect app with the page for changing user sign-in.](media/migrate-okta-federation/change-user-signin.png)
+
+5. Enter Global Administrator credentials.
+
+ ![Screenshot of the Azure A D Connect app that shows where to enter Global Administrator credentials.](media/migrate-okta-federation/global-admin-credentials.png)
+
+6. The server is configured for federation with Okta. Change the selection to **Password Hash Synchronization**.
+7. Select **Enable single sign-on**.
+8. Select **Next**.
+9. For the local on-premises system, enter the domain administrator credentials.
+10. Select **Next**.
+
+ ![Screenshot of the Azure AD Connect app with settings for user sign-in.](media/migrate-okta-federation/domain-admin-credentials.png)
+
+11. On the final page, select **Configure**.
+
+ ![Screenshot of the Ready to configure page of the Azure AD Connect app.](media/migrate-okta-federation/update-connect-server.png)
+
+12. Ignore the warning for hybrid Azure AD join.
+
+ ![Screenshot of the Azure AD Connect app. The hybrid Azure AD join warning appears.](media/migrate-okta-federation/reconfigure-device-options.png)
+
+## Configure staged rollout features
+
+Before you test defederating a domain, in Azure AD use a cloud authentication staged rollout to test defederating users.
+
+Learn more: [Migrate to cloud authentication using Staged Rollout](../hybrid/how-to-connect-staged-rollout.md)
+
+After you enable password hash sync and seamless SSO on the Azure AD Connect server, configure a staged rollout:
+
+1. In the [Azure portal](https://portal.azure.com/#home), select **View** or **Manage Azure Active Directory**.
+
+ ![Screenshot of the Azure portal with welcome message.](media/migrate-okta-federation/portal.png)
+
+2. On the **Azure Active Directory** menu, select **Azure AD Connect**.
+3. Confirm **Password Hash Sync** is enabled in the tenant.
+4. Select **Enable staged rollout for managed user sign-in**.
+
+ ![Screenshot of the staged rollout option.](media/migrate-okta-federation/enable-staged-rollout.png)
+
+5. After the server configuration, **Password Hash Sync** setting can change to **On**.
+6. Enable the setting.
+7. **Seamless single sign-on** is **Off**. If you enable it, an error appears because it's enabled in the tenant.
+8. Select **Manage groups**.
+
+ ![Screenshot of the Enable staged rollout features page in the Azure portal. A Manage groups button appears.](media/migrate-okta-federation/password-hash-sync.png)
+
+9. Add a group to the password hash sync rollout. In the following example, the security group starts with 10 members.
+
+ ![Screenshot of the Manage groups for Password Hash Sync page in the Azure portal. A group is in a table.](media/migrate-okta-federation/example-security-group.png)
+
+10. Wait about 30 minutes for the feature to take effect in your tenant.
+11. When the feature takes effect, users aren't redirected to Okta when attempting to access Office 365 services.
+
+The staged rollout feature has some unsupported scenarios:
+
+* Legacy authentication protocols such as POP3 and SMTP aren't supported.
+* If you configured hybrid Azure AD join for Okta, the hybrid Azure AD join flows go to Okta until the domain is defederated.
+ * A sign-on policy remains in Okta for legacy authentication of hybrid Azure AD join Windows clients.
+
+## Create an Okta app in Azure AD
+
+Users that converted to managed authentication might need access to applications in Okta. For user access to those applications, register an Azure AD application that links to the Okta home page.
+
+Configure the enterprise application registration for Okta.
+
+1. In the [Azure portal](https://portal.azure.com/#home), under **Manage Azure Active Directory**, select **View**.
+2. On the left menu, under **Manage**, select **Enterprise applications**.
+
+ ![Screenshot of the left menu of the Azure portal.](media/migrate-okta-federation/enterprise-application.png)
+
+3. On the **All applications** menu, select **New application**.
+
+ ![Screenshot that shows the All applications page in the Azure portal. A new application is visible.](media/migrate-okta-federation/new-application.png)
+
+4. Select **Create your own application**.
+5. On the menu, name the Okta app.
+6. Select **Register an application you're working on to integrate with Azure AD**.
+7. Select **Create**.
+8. Select **Accounts in any organizational directory (Any Azure AD Directory - Multitenant)**.
+9. Select **Register**.
+
+ ![Screenshot of Register an application.](media/migrate-okta-federation/register-change-application.png)
+
+10. On the Azure AD menu, select **App registrations**.
+11. Open the created registration.
+
+ ![Screenshot of the App registrations page in the Azure portal. The new app registration appears.](media/migrate-okta-federation/app-registration.png)
+
+12. Record the Tenant ID and Application ID.
+
+ >[!Note]
+ >You need the Tenant ID and Application ID to configure the identity provider in Okta.
+
+ ![Screenshot of the Okta Application Access page in the Azure portal. The Tenant ID and Application ID appear.](media/migrate-okta-federation/record-ids.png)
+
+13. On the left menu, select **Certificates & secrets**.
+14. Select **New client secret**.
+15. Enter a secret name.
+16. Enter its expiration date.
+17. Record the secret value and ID.
+
+ >[!NOTE]
+ >The value and ID don't appear later. If you don't record the information, you must regenerate a secret.
+
+ ![Screenshot of the Certificates and secrets page. The value and I D of the secret appear.](media/migrate-okta-federation/record-secrets.png)
+
+18. On the left menu, select **API permissions**.
+19. Grant the application access to the OpenID Connect (OIDC) stack.
+20. Select **Add a permission**.
+21. Select **Microsoft Graph**
+22. Select **Delegated permissions**.
+23. In the OpenID permissions section, add **email**, **openid**, and **profile**.
+24. Select **Add permissions**.
+25. Select **Grant admin consent for \<tenant domain name>**.
+26. Wait for the **Granted** status to appear.
+
+ ![Screenshot of the API permissions page with a message for granted consent.](media/migrate-okta-federation/grant-consent.png)
+
+27. On the left menu, select **Branding**.
+28. For **Home page URL**, add your user application home page.
+
+ ![Screenshot of the Branding page in the Azure portal.](media/migrate-okta-federation/add-branding.png)
+
+29. In the Okta administration portal, to add a new identity provider, select **Security** then **Identity Providers**.
+30. Select **Add Microsoft**.
+
+ ![Screenshot of the Okta administration portal. Add Microsoft appears in the Add Identity Provider list.](media/migrate-okta-federation/configure-idp.png)
+
+31. On the **Identity Provider** page, enter the Application ID in the **Client ID** field.
+32. Enter the client secret in the **Client Secret** field.
+33. Select **Show Advanced Settings**. By default, this configuration ties the user principal name (UPN) in Okta to the UPN in Azure AD for reverse-federation access.
+
+ >[!IMPORTANT]
+ >If UPNs in Okta and Azure AD don't match, select an attribute that's common between users.
+
+34. Complete autoprovisioning selections.
+35. By default, if no match appears for an Okta user, the system attempts to provision the user in Azure AD. If you migrated provisioning away from Okta, select **Redirect to Okta sign-in page**.
+
+ ![Screenshot of the General Settings page in the Okta admin portal. The option for redirecting to the Okta sign-in page appears.](media/migrate-okta-federation/redirect-okta.png)
+
+You created the identity provider (IDP). Send users to the correct IDP.
+
+1. On the **Identity Providers** menu, select **Routing Rules** then **Add Routing Rule**.
+2. Use one of the available attributes in the Okta profile.
+3. To direct sign-ins from devices and IPs to Azure AD, set up the policy seen in following image. In this example, the **Division** attribute is unused on all Okta profiles. It's a good choice for IDP routing.
+
+ ![Screenshot of the Edit Rule page in the Okta admin portal. A rule definition that involves the division attribute appears.](media/migrate-okta-federation/division-idp-routing.png)
+
+4. Record the redirect URI to add it to the application registration.
+
+ ![Screenshot of the redirect URI location.](media/migrate-okta-federation/application-registration.png)
+
+5. On the application registration, on the left menu, select **Authentication**.
+6. Select **Add a platform**
+7. Select **Web**.
+8. Add the redirect URI you recorded in the IDP in Okta.
+9. Select **Access tokens** and **ID tokens**.
+
+ ![Screenshot of the Configure Web page in the Azure portal. A redirect URI appears. The access and I D tokens are selected.](media/migrate-okta-federation/access-id-tokens.png)
+
+10. In the admin console, select **Directory**.
+11. Select **People**.
+12. Select a test user to edit the profile.
+13. In the profile, add **ToAzureAD**. See the following image.
+14. Select **Save**.
+
+ ![Screenshot of the Okta admin portal. Profile settings appear, and the Division box has ToAzureAD.](media/migrate-okta-federation/profile-editing.png)
+
+15. Sign in to the [Microsoft 356 portal](https://portal.office.com) as the modified user. If your user isn't in the managed authentication pilot, your action enters a loop. To exit the loop, add the user to the managed authentication experience.
+
+## Test Okta app access on pilot members
+
+After you configure the Okta app in Azure AD and configure the IDP in the Okta portal, assign the application to users.
+
+1. In the Azure portal, select **Azure Active Directory** then **Enterprise applications**.
+2. Select the app registration you created.
+3. Go to **Users and groups**.
+4. Add the group that correlates with the managed authentication pilot.
+
+ >[!NOTE]
+ >You can add users and groups from the **Enterprise applications** page. You can't add users from the **App registrations** menu.
+
+ ![Screenshot of the Users and groups page of the Azure portal. A group called Managed Authentication Staging Group appears.](media/migrate-okta-federation/add-group.png)
+
+5. Wait about 15 minutes.
+6. Sign in as a managed authentication pilot user.
+7. Go to [My Apps](https://myapplications.microsoft.com).
+
+ ![Screenshot of the My Apps gallery. An icon for Okta Application Access appears.](media/migrate-okta-federation/my-applications.png)
+
+8. To return to the Okta home page, select the **Okta Application Access** tile.
+
+## Test managed authentication on pilot members
+
+After you configure the Okta reverse-federation app, ask users to conduct testing on the managed authentication experience. We recommend you configure company branding to help users recognize the tenant.
+
+Learn more: [Configure your company branding](../fundamentals/customize-branding.md).
+
+ >[!IMPORTANT]
+ >Before you defederate the domains from Okta, identify needed Conditional Access policies. You can secure your environment before cut-off. See, [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-conditional-access.md).
+
+## Defederate Office 365 domains
+
+When your organization is comfortable with the managed authentication experience, you can defederate your domain from Okta. To begin, use the following commands to connect to Microsoft Graph PowerShell. If you don't have the Microsoft Graph PowerShell module, download it by entering `install-module MSOnline`.
+
+```PowerShell
+
+import-module MSOnline
+Connect-MgGraph
+New-MgDomainFederationConfiguration
+-domainname yourdomain.com -authentication managed
+
+```
+
+After you set the domain to managed authentication, you've defederated your Office 365 tenant from Okta while maintaining user access to the Okta home page.
+
+## Next steps
+
+- [Tutorial: Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning.md)
+- [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-conditional-access.md)
+- [Tutorial: Migrate your applications from Okta to Azure AD](migrate-applications-from-okta.md)
active-directory Migrate Okta Sign On Policies Conditional Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-okta-sign-on-policies-conditional-access.md
+
+ Title: Tutorial to migrate Okta sign-on policies to Azure Active Directory Conditional Access
+description: Learn how to migrate Okta sign-on policies to Azure Active Directory Conditional Access.
++++++ Last updated : 01/13/2023+++++
+# Tutorial: Migrate Okta sign-on policies to Azure Active Directory Conditional Access
+
+In this tutorial, learn to migrate an organization from global or application-level sign-on policies in Okta Conditional Access in Azure Active Directory (Azure AD). Conditional Access policies secure user access in Azure AD and connected applications.
+
+Learn more: [What is Conditional Access?](/azure/active-directory/conditional-access/overview)
+
+This tutorial assumes you have:
+
+* Office 365 tenant federated to Okta for sign-in and multi-factor authentication
+* Azure AD Connect server, or Azure AD Connect cloud provisioning agents configured for user provisioning to Azure AD
+
+## Prerequisites
+
+See the following two sections for licensing and credentials prerequisites.
+
+### Licensing
+
+There are licensing requirements if you switch from Okta sign-on to Conditional Access. The process requires an Azure AD Premium P1 license to enable registration for Azure AD Multi-Factor Authentication (MFA).
+
+Learn more: [Assign or remove licenses in the Azure Active Directory portal](/azure/active-directory/fundamentals/license-users-groups)
+
+### Enterprise Administrator credentials
+
+To configure the service connection point (SCP) record, ensure you have Enterprise Administrator credentials in the on-premises forest.
+
+## Evaluate Okta sign-on policies for transition
+
+Locate and evaluate Okta sign-on policies to determine what will be transitioned to Azure AD.
+
+1. In Okta go to **Security** > **Authentication** > **Sign On**.
+
+ ![Screenshot of Global MFA Sign On Policy entries on the Authentication page.](media/migrate-okta-sign-on-policies-conditional-access/global-sign-on-policies.png)
+
+2. Go to **Applications**.
+3. From the submenu, select **Applications**
+4. From the **Active apps list**, select the Microsoft Office 365 connected instance.
+
+ ![Screenshot of settings under Sign On, for Microsoft Office 365.](media/migrate-okta-sign-on-policies-conditional-access/global-sign-on-policies-enforce-mfa.png)
+
+5. Select **Sign On**.
+6. Scroll to the bottom of the page.
+
+The Microsoft Office 365 application sign-on policy has four rules:
+
+- **Enforce MFA for mobile sessions** - requires MFA from modern authentication or browser sessions on iOS or Android
+- **Allow trusted Windows devices** - prevents unnecessary verification or factor prompts for trusted Okta devices
+- **Require MFA from untrusted Windows devices** - requires MFA from modern authentication or browser sessions on untrusted Windows devices
+- **Block legacy authentication** - prevents legacy authentication clients from connecting to the service
+
+The following screenshot is conditions and actions for the four rules, on the Sign On Policy screen.
+
+ ![Screenshot of conditions and actions for the four rules, on the Sign On Policy screen.](media/migrate-okta-sign-on-policies-conditional-access/sign-on-rules.png)
+
+## Configure Conditional Access policies
+
+Configure Conditional Access policies to match Okta conditions. However, in some scenarios, you might need more setup:
+
+* Okta network locations to named locations in Azure AD
+ * [Using the location condition in a Conditional Access policy](../conditional-access/location-condition.md)
+* Okta device trust to device-based Conditional Access (two options to evaluate user devices):
+ * See the following section, **Hybrid Azure AD join configuration** to synchronize Windows devices, such as Windows 10, Windows Server 2016 and 2019, to Azure AD
+ * See the following section, **Configure device compliance**
+ * See, [Use hybrid Azure AD join](#hybrid-azure-ad-join-configuration), a feature in Azure AD Connect server that synchronizes Windows devices, such as Windows 10, Windows Server 2016, and Windows Server 2019, to Azure AD
+ * See, [Enroll the device in Microsoft Intune](#configure-device-compliance) and assign a compliance policy
+
+### Hybrid Azure AD join configuration
+
+To enable hybrid Azure AD join on your Azure AD Connect server, run the configuration wizard. After configuration, enroll devices.
+
+ >[!NOTE]
+ >Hybrid Azure AD join isn't supported with the Azure AD Connect cloud provisioning agents.
+
+1. [Configure hybrid Azure AD join](../devices/howto-hybrid-azure-ad-join.md).
+2. On the **SCP configuration** page, select the **Authentication Service** dropdown.
+
+ ![Screenshot of the Authentication Service dropdown on the Microsoft Azure Active Directory Connect dialog.](media/migrate-okta-sign-on-policies-conditional-access/scp-configuration.png)
+
+4. Select an Okta federation provider URL.
+5. Select **Add**.
+6. Enter your on-premises Enterprise Administrator credentials
+7. Select **Next**.
+
+ > [!TIP]
+ > If you blocked legacy authentication on Windows clients in the global or app-level sign-on policy, make a rule that enables the hybrid Azure AD join process to finish. Allow the legacy authentication stack for Windows clients. </br>To enable custom client strings on app policies, contact the [Okta Help Center](https://support.okta.com/help/).
+
+### Configure device compliance
+
+Hybrid Azure AD join is a replacement for Okta device trust on Windows. Conditional Access policies recognize compliance for devices enrolled in Microsoft Intune.
+
+#### Device compliance policy
+
+* [Use compliance policies to set rules for devices you manage with Intune](/mem/intune/protect/device-compliance-get-started)
+* [Create a compliance policy in Microsoft Intune](/mem/intune/protect/create-compliance-policy)
+
+#### Windows 10/11, iOS, iPadOS, and Android enrollment
+
+If you deployed hybrid Azure AD join, you can deploy another group policy to complete auto-enrollment of these devices in Intune.
+
+* [Enrollment in Microsoft Intune](/mem/intune/enrollment/)
+* [Quickstart: Set up automatic enrollment for Windows 10/11 devices](/mem/intune/enrollment/quickstart-setup-auto-enrollment)
+* [Enroll Android devices](/mem/intune/enrollment/android-enroll)
+* [Enroll iOS/iPadOS devices in Intune](/mem/intune/enrollment/ios-enroll)
+
+## Configure Azure AD Multi-Factor Authentication tenant settings
+
+Before you convert to Conditional Access, confirm the base MFA tenant settings for your organization.
+
+1. Go to the [Azure portal](https://portal.azure.com).
+2. Sign in as a Global Administrator.
+3. Select **Azure Active Directory** > **Users** > **Multi-Factor Authentication**.
+4. The legacy Azure AD Multi-Factor Authentication portal appears. Or select [Azure AD MFA portal](https://aka.ms/mfaportal).
+
+ ![Screenshot of the multi-factor authentication screen.](media/migrate-okta-sign-on-policies-conditional-access/legacy-portal.png)
+
+5. Confirm there are no users enabled for legacy MFA: On the **multi-factor authentication** menu, on **Multi-Factor Auth status**, select **Enabled** and **Enforced**. If the tenant has users in the following views, disable them in the legacy menu.
+
+ ![Screenshot of the multi-factor authentication screen with the search feature highlighted.](media/migrate-okta-sign-on-policies-conditional-access/disable-user-portal.png)
+
+6. Ensure the **Enforced** field is empty.
+7. Select the **Service settings** option.
+8. Change the **App passwords** selection to **Do not allow users to create app passwords to sign in to non-browser apps**.
+
+ ![Screenshot of the multi-factor authentication screen with service settings highlighted.](media/migrate-okta-sign-on-policies-conditional-access/app-password-selection.png)
+
+9. Clear the checkboxes for **Skip multi-factor authentication for requests from federated users on my intranet** and **Allow users to remember multi-factor authentication on devices they trust (between one to 365 days)**.
+10. Select **Save**.
+
+ ![Screenshot of cleared checkboxes on the Require Trusted Devices for Access screen.](media/migrate-okta-sign-on-policies-conditional-access/uncheck-fields-legacy-portal.png)
+
+ >[!NOTE]
+ >See [Optimize reauthentication prompts and understand session lifetime for Azure AD MFA](../authentication/concepts-azure-multi-factor-authentication-prompts-session-lifetime.md).
++
+## Build a Conditional Access policy
+
+To configure Conditional Access policies, see [Best practices for deploying and designing Conditional Access](../conditional-access/plan-conditional-access.md#conditional-access-policy-components).
+
+After you configure the prerequisites and established base settings, you can build Conditional Access policy. Policy can be targeted to an application, a test group of users, or both.
+
+Before you get started:
+
+* [Understand Conditional Access policy components](../conditional-access/plan-conditional-access.md)
+* [Building a Conditional Access policy](../conditional-access/concept-conditional-access-policies.md)
+
+1. Go to the [Azure portal](https://portal.azure.com).
+2. On **Manage Azure Active Directory**, select **View**.
+3. Create a policy. See, [Common Conditional Access policy: Require MFA for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md).
+4. Create a device trust-based Conditional Access rule.
+
+ ![Screenshot of entries for Require Trusted Devices for Access, under Conditional Access.](media/migrate-okta-sign-on-policies-conditional-access/test-user.png)
+
+ ![Screenshot of the Keep you account secure dialog with the success message.](media/migrate-okta-sign-on-policies-conditional-access/success-test-user.png)
+
+5. After you configure the location-based policy and device trust policy, [Block legacy authentication with Azure AD with Conditional Access](/azure/active-directory/conditional-access/block-legacy-authentication).
+
+With these three Conditional Access policies, the original Okta sign-on policies experience is replicated in Azure AD.
+
+## Enroll pilot members in MFA
+
+Users register for MFA methods.
+
+For individual registration, users go to [Microsoft Sign-in pane](https://aka.ms/mfasetup).
+
+To manage registration, users go to [Microsoft My Sign-Ins | Security Info](https://aka.ms/mysecurityinfo).
+
+Learn more: [Enable combined security information registration in Azure Active Directory](../authentication/howto-registration-mfa-sspr-combined.md).
+
+ >[!NOTE]
+ >If users registered, they're redirected to the **My Security** page, after they satisfy MFA.
+
+## Enable Conditional Access policies
+
+1. To test, change the created policies to **Enabled test user login**.
+
+ ![Screenshot of policies on the Conditional Access, Policies screen.](media/migrate-okta-sign-on-policies-conditional-access/enable-test-user.png)
+
+2. On the Office 365 **Sign-In** pane, the test user John Smith is prompted to sign in with Okta MFA and Azure AD MFA.
+
+ ![Screenshot of the Azure Sign-In pane.](media/migrate-okta-sign-on-policies-conditional-access/sign-in-through-okta.png)
+
+3. Complete the MFA verification through Okta.
+
+ ![Screenshot of MFA verification through Okta.](media/migrate-okta-sign-on-policies-conditional-access/mfa-verification-through-okta.png)
+
+4. The user is prompted for Conditional Access.
+5. Ensure the policies are configured to be triggered for MFA.
+
+ ![Screenshot of MFA verification through Okta prompted for Conditional Access.](media/migrate-okta-sign-on-policies-conditional-access/mfa-verification-through-okta-prompted-ca.png)
+
+## Add organization members to Conditional Access policies
+
+After you conduct testing on pilot members, add the remaining organization members to Conditional Access policies, after registration.
+
+To avoid double-prompting between Azure AD MFA and Okta MFA, opt out from Okta MFA: modify sign-on policies.
++
+1. Go to the Okta admin console
+2. Select **Security** > **Authentication**
+3. Go to **Sign-on Policy**.
+
+ >[!NOTE]
+ > Set global policies to **Inactive** if all applications from Okta are protected by application sign-on policies.
+
+4. Set the **Enforce MFA** policy to **Inactive**. You can assign the policy to a new group that doesn't include the Azure AD users.
+
+ ![Screenshot of Global MFA Sign On Policy as Inactive.](media/migrate-okta-sign-on-policies-conditional-access/mfa-policy-inactive.png)
+
+5. On the application-level sign-on policy pane, select the **Disable Rule** option.
+6. Select **Inactive**. You can assign the policy to a new group that doesn't include the Azure AD users.
+7. Ensure there's at least one application-level sign-on policy enabled for the application that allows access without MFA.
+
+ ![Screenshot of application access without MFA.](media/migrate-okta-sign-on-policies-conditional-access/application-access-without-mfa.png)
+
+8. Users are prompted for Conditional Access the next time they sign in.
+
+## Next steps
+
+- [Tutorial: Migrate your applications from Okta to Azure Active Directory](migrate-applications-from-okta.md)
+- [Tutorial: Migrate Okta federation to Azure Active Directory-managed authentication](migrate-okta-federation.md)
+- [Tutorial: Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning.md)
active-directory Migrate Okta Sync Provisioning https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-okta-sync-provisioning.md
After you disable Okta provisioning, the Azure AD cloud sync agent can synchroni
## Next steps -- [Tutorial: Migrate your applications from Okta to Azure AD](migrate-applications-from-okta-to-azure-active-directory.md)-- [Tutorial: Migrate Okta federation to Azure AD-managed authentication](migrate-okta-federation-to-azure-active-directory.md)
+- [Tutorial: Migrate your applications from Okta to Azure AD](migrate-applications-from-okta.md)
+- [Tutorial: Migrate Okta federation to Azure AD-managed authentication](migrate-okta-federation.md)
- [Tutorial: Migrate Okta sign-on policies to Azure AD Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md)
active-directory Migration Resources https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migration-resources.md
Resources to help you migrate application access and authentication to Azure Act
| [Deployment plan: Migrating from AD FS to pass-through authentication](https://aka.ms/ADFSTOPTADPDownload)|Azure AD pass-through authentication helps users sign in to both on-premises and cloud-based applications by using the same password. This feature provides your users with a better experience since they have one less password to remember. It also reduces IT help desk costs because users are less likely to forget how to sign in when they only need to remember one password. When people sign in using Azure AD, this feature validates users' passwords directly against your on-premises Active Directory.| | [Deployment plan: Enabling single sign-on to a SaaS app with Azure AD](https://aka.ms/SSODPDownload) | Single sign-on (SSO) helps you access all the apps and resources you need to do business, while signing in only once, using a single user account. For example, after a user has signed in, the user can move from Microsoft Office, to SalesForce, to Box without authenticating (for example, typing a password) a second time. | [Deployment plan: Extending apps to Azure AD with Application Proxy](../app-proxy/application-proxy-deployment-plan.md)| Providing access from employee laptops and other devices to on-premises applications has traditionally involved virtual private networks (VPNs) or demilitarized zones (DMZs). Not only are these solutions complex and hard to make secure, but they're costly to set up and manage. Azure AD Application Proxy makes it easier to access on-premises applications. |
-| [Other deployment plans](../fundamentals/active-directory-deployment-plans.md) | Find more deployment plans for deploying features such as Azure AD multi-factor authentication, Conditional Access, user provisioning, seamless SSO, self-service password reset, and more! |
+| [Other deployment plans](../fundamentals/deployment-plans.md) | Find more deployment plans for deploying features such as Azure AD multi-factor authentication, Conditional Access, user provisioning, seamless SSO, self-service password reset, and more! |
| [Migrating apps from Symantec SiteMinder to Azure AD](https://azure.microsoft.com/mediahandler/files/resourcefiles/migrating-applications-from-symantec-siteminder-to-azure-active-directory/Migrating-applications-from-Symantec-SiteMinder-to-Azure-Active-Directory.pdf) | Get step by step guidance on application migration and integration options with an example that walks you through migrating applications from Symantec SiteMinder to Azure AD. | | [Identity governance for applications](../governance/identity-governance-applications-prepare.md)| This guide outlines what you need to do if you're migrating identity governance for an application from a previous identity governance technology, to connect Azure AD to that application.| | [Active Directory Federation Services (AD FS) decommission guide](/windows-server/identity/ad-fs/decommission/adfs-decommission-guide) | This guide explains the prerequisites for decommissioning, including migrating user authentication and applications to Azure AD. It also provides step-by-step instructions for decommissioning the AD FS servers, including removing load balancer entries, uninstalling WAP and AD FS servers, and deleting SSL certificates and databases. |
active-directory Plan An Application Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/plan-an-application-integration.md
-# Integrating Azure Active Directory with applications getting started guide
+# Integrating Azure Active Directory with applications getting started guide
This topic summarizes the process for integrating applications with Azure Active Directory (AD). Each of the sections below contain a brief summary of a more detailed topic so you can identify which parts of this getting started guide are relevant to you.
The following articles describe ways you can manage access to applications once
## Next steps
-For in-depth information, you can download Azure Active Directory deployment plans from [GitHub](../fundamentals/active-directory-deployment-plans.md). For gallery applications, you can download deployment plans for single sign-on, Conditional Access, and user provisioning through the [Azure portal](https://portal.azure.com).
+For in-depth information, you can download Azure Active Directory deployment plans from [GitHub](../fundamentals/deployment-plans.md). For gallery applications, you can download deployment plans for single sign-on, Conditional Access, and user provisioning through the [Azure portal](https://portal.azure.com).
To download a deployment plan from the Azure portal:
active-directory Secure Hybrid Access Integrations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/secure-hybrid-access-integrations.md
To help protect legacy applications, while using networking and delivery control
* **Citrix ADC** * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](../saas-apps/citrix-netscaler-tutorial.md) * **F5 BIG-IP Access Policy Manager**
- * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](./f5-aad-integration.md)
+ * [Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](./f5-integration.md)
* **Kemp LoadMaster** * [Tutorial: Azure AD SSO integration with Kemp LoadMaster Azure AD integration](../saas-apps/kemp-tutorial.md) * **Pulse Secure Virtual Traffic Manager**
The following VPN solution providers connect with Azure AD to enable modern auth
* **Fortinet FortiGate** * [Tutorial: Azure AD SSO integration with FortiGate SSL VPN](../saas-apps/fortigate-ssl-vpn-tutorial.md) * **F5 BIG-IP Access Policy Manager**
- * [Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](./f5-aad-password-less-vpn.md)
+ * [Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](./f5-passwordless-vpn.md)
* **Palo Alto Networks GlobalProtect** * [Tutorial: Azure AD SSO integration with Palo Alto Networks - Admin UI](../saas-apps/paloaltoadmin-tutorial.md) * **Pulse Connect Secure**
active-directory Secure Hybrid Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/secure-hybrid-access.md
The following partners offer solutions to support [Conditional Access policies p
|Citrix Systems, Inc.|[Tutorial: Azure AD SSO integration with Citrix ADC SAML Connector for Azure AD (Kerberos-based authentication)](../saas-apps/citrix-netscaler-tutorial.md)| |Cloudflare, Inc.|[Tutorial: Configure Cloudflare with Azure AD for secure hybrid access](cloudflare-integration.md)| |Datawiza|[Tutorial: Configure Secure Hybrid Access with Azure AD and Datawiza](datawiza-with-azure-ad.md)|
-|F5, Inc.|[Integrate F5 BIG-IP with Azure AD](f5-aad-integration.md)</br>[Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](f5-aad-password-less-vpn.md)|
+|F5, Inc.|[Integrate F5 BIG-IP with Azure AD](f5-integration.md)</br>[Tutorial: Configure F5 BIG-IP SSL-VPN for Azure AD SSO](f5-passwordless-vpn.md)|
|Progress Software Corporation, Progress Kemp|[Tutorial: Azure AD SSO integration with Kemp LoadMaster Azure AD integration](../saas-apps/kemp-tutorial.md)| |Perimeter 81 Ltd.|[Tutorial: Azure AD SSO integration with Perimeter 81](../saas-apps/perimeter-81-tutorial.md)| |Silverfort|[Tutorial: Configure Secure Hybrid Access with Azure AD and Silverfort](silverfort-azure-ad-integration.md)|
active-directory Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/whats-new-docs.md
Title: "What's new in Azure Active Directory application management" description: "New and updated documentation for the Azure Active Directory application management." Previously updated : 05/02/2023 Last updated : 06/06/2023
Welcome to what's new in Azure Active Directory (Azure AD) application management documentation. This article lists new docs that have been added and those that have had significant updates in the last three months. To learn what's new with the application management service, see [What's new in Azure AD](../fundamentals/whats-new.md).
+## May 2023
+
+### New articles
+
+- [Phase 2: Classify apps and plan pilot](migrate-adfs-classify-apps-plan-pilot.md)
+- [Phase 1: Discover and scope apps](migrate-adfs-discover-scope-apps.md)
+- [Phase 4: Plan management and insights](migrate-adfs-plan-management-insights.md)
+- [Phase 3: Plan migration and testing](migrate-adfs-plan-migration-test.md)
+- [Represent AD FS security policies in Azure Active Directory: Mappings and examples](migrate-adfs-represent-security-policies.md)
+- [SAML-based single sign-on: Configuration and Limitations](migrate-adfs-saml-based-sso.md)
+
+### Updated articles
+
+- [Tutorial: Migrate Okta sync provisioning to Azure AD Connect synchronization](migrate-okta-sync-provisioning.md)
+- [Application management videos](app-management-videos.md)
+- [Understand the stages of migrating application authentication from AD FS to Azure AD](migrate-adfs-apps-to-azure.md)
+- [Plan application migration to Azure Active Directory](migrate-application-authentication-to-azure-active-directory.md)
+- [Tutorial: Migrate Okta sync provisioning to Azure AD Connect-based synchronization](migrate-okta-sync-provisioning-to-azure-active-directory.md)
+- [Tutorial: Configure F5 BIG-IP Easy Button for SSO to Oracle JDE](f5-big-ip-oracle-jde-easy-button.md)
+- [Tutorial: Configure F5 BIG-IP Easy Button for SSO to Oracle PeopleSoft](f5-big-ip-oracle-peoplesoft-easy-button.md)
+- [Tutorial: Configure Cloudflare with Azure Active Directory for secure hybrid access](cloudflare-azure-ad-integration.md)
+- [Tutorial: Configure F5 BIG-IP Easy Button for SSO to SAP ERP](f5-big-ip-sap-erp-easy-button.md)
+- [Tutorial: Migrate Okta federation to Azure Active Directory-managed authentication](migrate-okta-federation.md)
+ ## April 2023 ### Updated articles
Welcome to what's new in Azure Active Directory (Azure AD) application managemen
- [Tutorial: Migrate Okta sign-on policies to Azure Active Directory Conditional Access](migrate-okta-sign-on-policies-to-azure-active-directory-conditional-access.md) - [Delete an enterprise application](delete-application-portal.md) - [Restore an enterprise application in Azure AD](restore-application.md)-
-## February 2023
-
-### Updated articles
-
-[Manage custom security attributes for an application (Preview)](custom-security-attributes-apps.md)
-- [Manage app consent policies](manage-app-consent-policies.md)-- [Configure permission classifications](configure-permission-classifications.md)-- [Disable user sign-in for an application](disable-user-sign-in-portal.md)-- [Configure Datawiza for Azure AD Multi-Factor Authentication and single sign-on to Oracle EBS](datawiza-sso-mfa-oracle-ebs.md)
active-directory Pim Deployment Plan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/privileged-identity-management/pim-deployment-plan.md
In case the role expires, you can **extend** or **renew** these assignments.
## Plan the project
-When technology projects fail, itΓÇÖs typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that youΓÇÖre engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md) and that stakeholder roles in the project are well understood.
+When technology projects fail, itΓÇÖs typically because of mismatched expectations on impact, outcomes, and responsibilities. To avoid these pitfalls, [ensure that youΓÇÖre engaging the right stakeholders](../fundamentals/deployment-plans.md) and that stakeholder roles in the project are well understood.
### Plan a pilot
-At each stage of your deployment ensure that you are evaluating that the results are as expected. See [best practices for a pilot](../fundamentals/active-directory-deployment-plans.md#best-practices-for-a-pilot).
+At each stage of your deployment ensure that you are evaluating that the results are as expected. See [best practices for a pilot](../fundamentals/deployment-plans.md#best-practices-for-a-pilot).
* Start with a small set of users (pilot group) and verify that the PIM behaves as expected.
Configure PIM for Groups members and owners to require approval for activation a
* If there is PIM-related issues, see [Troubleshooting a problem with PIM](pim-troubleshoot.md).
-* [Deploy other identity features](../fundamentals/active-directory-deployment-plans.md)
+* [Deploy other identity features](../fundamentals/deployment-plans.md)
active-directory Concept Sign Ins https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/reports-monitoring/concept-sign-ins.md
There are several filter options to choose from:
- **User:** The *user principal name* (UPN) of the user in question. - **Status:** Options are *Success*, *Failure*, and *Interrupted*. - **Resource:** The name of the service used for the sign-in.-- **Conditional access:** The status of the Conditional Access (CA) policy. Options are:
+- **Conditional Access:** The status of the Conditional Access policy. Options are:
- *Not applied:* No policy applied to the user and application during sign-in.
- - *Success:* One or more CA policies applied to the user and application (but not necessarily the other conditions) during sign-in.
- - *Failure:* The sign-in satisfied the user and application condition of at least one CA policy and grant controls are either not satisfied or set to block access.
+ - *Success:* One or more Conditional Access policies applied to or were evaluated for the user and application (but not necessarily the other conditions) during sign-in. Even though a Conditional Access policy might not apply, if it was evaluated, the Conditional Access status will show 'Success'.
+ - *Failure:* The sign-in satisfied the user and application condition of at least one Conditional Access policy and grant controls are either not satisfied or set to block access.
- **IP addresses:** There's no definitive connection between an IP address and where the computer with that address is physically located. Mobile providers and VPNs issue IP addresses from central pools that are often far from where the client device is actually used. Currently, converting IP address to a physical location is a best effort based on traces, registry data, reverse lookups and other information. The following table provides the options and descriptions for the **Client app** filter option.
You can access the Microsoft 365 activity logs programmatically by using the [Of
- [How to download logs in Azure Active Directory](howto-download-logs.md) -- [How to access activity logs in Azure AD](howto-access-activity-logs.md)
+- [How to access activity logs in Azure AD](howto-access-activity-logs.md)
active-directory Plan Monitoring And Reporting https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/reports-monitoring/plan-monitoring-and-reporting.md
Reporting and monitoring are used to meet your business requirements, gain insig
## Stakeholders, communications, and documentation
-When technology projects fail, they typically do so due to mismatched expectations on effect, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/active-directory-deployment-plans.md). Also ensure that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and responsibilities.
+When technology projects fail, they typically do so due to mismatched expectations on effect, outcomes, and responsibilities. To avoid these pitfalls, [ensure that you're engaging the right stakeholders](../fundamentals/deployment-plans.md). Also ensure that stakeholder roles in the project are well understood by documenting the stakeholders and their project input and responsibilities.
Stakeholders need to access Azure AD logs to gain operational insights. Likely users include security team members, internal or external auditors, and the identity and access management operations team.
Learn More About [Azure AD Administrative Roles](../roles/permissions-reference.
### Engage stakeholders
-Successful projects align expectations, outcomes, and responsibilities. See, [Azure Active Directory deployment plans](../fundamentals/active-directory-deployment-plans.md). Document and communicate stakeholder roles that require input and accountability.
+Successful projects align expectations, outcomes, and responsibilities. See, [Azure Active Directory deployment plans](../fundamentals/deployment-plans.md). Document and communicate stakeholder roles that require input and accountability.
### Communications plan
active-directory Advance Kerbf5 Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/advance-kerbf5-tutorial.md
Follow these steps to enable Azure AD SSO in the Azure portal.
In the **Sign-on URL** text box, type a URL using the following pattern: `https://<YourCustomFQDN>.f5.com/`
- > [!NOTE]
- > These values are not real. Update these values with the actual Identifier, Reply URL and Sign-on URL. Contact [F5 Client support team](https://support.f5.com/csp/knowledge-center/software/BIG-IP?module=BIG-IP%20APM45) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
+ > [!NOTE]
+ > These values are not real. Update these values with the actual Identifier, Reply URL and Sign-on URL. Contact [F5 Client support team](https://support.f5.com/csp/knowledge-center/software/BIG-IP?module=BIG-IP%20APM45) to get these values. You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
1. On the **Set up single sign-on with SAML** page, in the **SAML Signing Certificate** section, find **Federation Metadata XML** and select **Download** to download the certificate and save it on your computer.
- ![The Certificate download link](common/metadataxml.png)
+ ![The Certificate download link](common/metadataxml.png)
1. On the **Set up F5** section, copy the appropriate URL(s) based on your requirement.
- ![Copy configuration URLs](common/copy-configuration-urls.png)
+ ![Copy configuration URLs](common/copy-configuration-urls.png)
### Create an Azure AD test user
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
1. Select **Add user**, then select **Users and groups** in the **Add Assignment** dialog.
- ![The Add User link](common/add-assign-user.png)
+ ![The Add User link](common/add-assign-user.png)
1. In the **Users and groups** dialog, select **B.Simon** from the Users list, then click the **Select** button at the bottom of the screen. 1. If you're expecting any role value in the SAML assertion, in the **Select Role** dialog, select the appropriate role for the user from the list and then click the **Select** button at the bottom of the screen.
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
>[!Note] >You will need the Kerberos Delegation Account to be created and specified. Refer KCD Section ( Refer Appendix for Variable References)
- ΓÇó Username Source
+ * Username Source
`session.saml.last.attr.name.http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`
- ΓÇó User Realm Source
+ * User Realm Source
`session.logon.last.domain` ![Screenshot that highlights Access > Single Sign On.](./media/advance-kerbf5-tutorial/configure11.png)
In this section, you'll enable B.Simon to use Azure single sign-on by granting a
| Session | Attribute | | -- | -- | | eb46b6b6.session.saml.last.assertionID | `<TENANT ID>` |
-| eb46b6b6.session.saml.last.assertionIssueInstant | `<ID>` |
+| eb46b6b6.session.saml.last.assertionIssueInstant | `<ID>` |
| eb46b6b6.session.saml.last.assertionIssuer | `https://sts.windows.net/<TENANT ID>`/ | | eb46b6b6.session.saml.last.attr.name.http:\//schemas.microsoft.com/claims/authnmethodsreferences | `http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password` | | eb46b6b6.session.saml.last.attr.name.http:\//schemas.microsoft.com/identity/claims/displayname | user0 |
When you click the F5 tile in the Access Panel, you should be automatically sign
## Additional resources -- [ List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory ](./tutorial-list.md)
+- [List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory](./tutorial-list.md)
-- [What is application access and single sign-on with Azure Active Directory? ](../manage-apps/what-is-single-sign-on.md)
+- [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
- [What is conditional access in Azure Active Directory?](../conditional-access/overview.md)
When you click the F5 tile in the Access Panel, you should be automatically sign
- [Configure F5 single sign-on for Kerberos application](kerbf5-tutorial.md) -- [F5 BIG-IP APM and Azure AD integration for secure hybrid access](../manage-apps/f5-aad-integration.md)
+- [F5 BIG-IP APM and Azure AD integration for secure hybrid access](../manage-apps/f5-integration.md)
- [Tutorial to deploy F5 BIG-IP Virtual Edition VM in Azure IaaS for secure hybrid access](../manage-apps/f5-bigip-deployment-guide.md) -- [Tutorial for Azure Active Directory single sign-on integration with F5 BIG-IP for Password-less VPN](../manage-apps/f5-aad-password-less-vpn.md)
+- [Tutorial for Azure Active Directory single sign-on integration with F5 BIG-IP for Password-less VPN](../manage-apps/f5-passwordless-vpn.md)
active-directory Axiad Cloud Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/axiad-cloud-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Axiad Cloud for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Axiad Cloud.
++
+writer: twimmers
+
+ms.assetid: 44c617ff-c33f-493a-9d81-ac7a3a97e7b7
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Axiad Cloud for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Axiad Cloud and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [Axiad Cloud](https://www.axiad.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Axiad Cloud.
+> * Remove users in Axiad Cloud when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Axiad Cloud.
+> * Provision groups and group memberships in Axiad Cloud.
+> * [Single sign-on](axiad-cloud-tutorial.md) to Axiad Cloud (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in Axiad Cloud with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Axiad Cloud](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Axiad Cloud to support provisioning with Azure AD
+Contact Axiad Cloud support to configure Axiad Cloud to support provisioning with Azure AD.
+
+## Step 3. Add Axiad Cloud from the Azure AD application gallery
+
+Add Axiad Cloud from the Azure AD application gallery to start managing provisioning to Axiad Cloud. If you have previously setup Axiad Cloud for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Axiad Cloud
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Axiad Cloud in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Axiad Cloud**.
+
+ ![Screenshot of the Axiad Cloud link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Axiad Cloud Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Axiad Cloud. If the connection fails, ensure your Axiad Cloud account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Axiad Cloud**.
+
+1. Review the user attributes that are synchronized from Azure AD to Axiad Cloud in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Axiad Cloud for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Axiad Cloud API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Axiad Cloud|
+ |||||
+ |userName|String|&check;|&check;
+ |externalId|String|&check;|&check;
+ |active|Boolean||&check;
+ |displayName|String||
+ |title|String||
+ |emails[type eq "work"].value|String||
+ |preferredLanguage|String||
+ |name.givenName|String||
+ |name.familyName|String||
+ |name.formatted|String||
+ |addresses[type eq "work"].formatted|String||
+ |addresses[type eq "work"].streetAddress|String||
+ |addresses[type eq "work"].locality|String||
+ |addresses[type eq "work"].region|String||
+ |addresses[type eq "work"].postalCode|String||
+ |addresses[type eq "work"].country|String||
+ |phoneNumbers[type eq "work"].value|String||
+ |phoneNumbers[type eq "mobile"].value|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:costCenter|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:division|String||
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:organization|String||
++
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to Axiad Cloud**.
+
+1. Review the group attributes that are synchronized from Azure AD to Axiad Cloud in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in Axiad Cloud for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Axiad Cloud|
+ |||||
+ |displayName|String|&check;|&check;
+ |externalId|String|&check;|&check;
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Axiad Cloud, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to Axiad Cloud by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory F5 Big Ip Oracle Enterprise Business Suite Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/f5-big-ip-oracle-enterprise-business-suite-easy-button.md
Title: Configure F5 BIG-IP Easy Button for SSO to Oracle Enterprise Business Suite
-description: Learn to implement SHA with header-based SSO to Oracle Enterprise Business Suite using F5ΓÇÖs BIG-IP Easy Button guided configuration
+description: Learn to implement SHA with header-based SSO to Oracle Enterprise Business Suite using F5's BIG-IP Easy Button guided configuration
Last updated 11/21/2022
-# Tutorial: Configure F5ΓÇÖs BIG-IP Easy Button for SSO to Oracle Enterprise Business Suite
+# Tutorial: Configure F5's BIG-IP Easy Button for SSO to Oracle Enterprise Business Suite
-In this article, learn to secure Oracle Enterprise Business Suite (EBS) using Azure Active Directory (Azure AD), through F5ΓÇÖs BIG-IP Easy Button guided configuration.
+In this article, learn to secure Oracle Enterprise Business Suite (EBS) using Azure Active Directory (Azure AD), through F5's BIG-IP Easy Button guided configuration.
Integrating a BIG-IP with Azure AD provides many benefits, including:
Integrating a BIG-IP with Azure AD provides many benefits, including:
* Manage Identities and access from a single control plane, the [Azure portal](https://portal.azure.com/)
-To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-aad-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
+To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
## Scenario description
SHA for this scenario supports both SP and IdP initiated flows. The following im
## Prerequisites
-Prior BIG-IP experience isnΓÇÖt necessary, but you need:
+Prior BIG-IP experience isn't necessary, but you need:
* An Azure AD free subscription or above
Prior BIG-IP experience isnΓÇÖt necessary, but you need:
* Any of the following F5 BIG-IP license SKUs
- * F5 BIG-IP® Best bundle
+ * F5 BIG-IP&reg; Best bundle
- * F5 BIG-IP Access Policy ManagerΓäó (APM) standalone license
+ * F5 BIG-IP Access Policy Manager&trade; (APM) standalone license
- * F5 BIG-IP Access Policy Manager™ (APM) add-on license on an existing BIG-IP F5 BIG-IP® Local Traffic Manager™ (LTM)
+ * F5 BIG-IP Access Policy Manager&trade; (APM) add-on license on an existing BIG-IP F5 BIG-IP&reg; Local Traffic Manager&trade; (LTM)
* 90-day BIG-IP full feature [trial license](https://www.f5.com/trial/big-ip-trial.php).
Prior BIG-IP experience isnΓÇÖt necessary, but you need:
## BIG-IP configuration methods
-There are many methods to configure BIG-IP for this scenario, including two template-based options and an advanced configuration. This tutorial covers the latest Guided Configuration 16.1 offering an Easy button template. With the Easy Button, admins no longer go back and forth between Azure AD and a BIG-IP to enable services for SHA. The deployment and policy management is handled directly between the APMΓÇÖs Guided Configuration wizard and Microsoft Graph. This rich integration between BIG-IP APM and Azure AD ensures that applications can quickly, easily support identity federation, SSO, and Azure AD Conditional Access, reducing administrative overhead.
+There are many methods to configure BIG-IP for this scenario, including two template-based options and an advanced configuration. This tutorial covers the latest Guided Configuration 16.1 offering an Easy button template. With the Easy Button, admins no longer go back and forth between Azure AD and a BIG-IP to enable services for SHA. The deployment and policy management is handled directly between the APM's Guided Configuration wizard and Microsoft Graph. This rich integration between BIG-IP APM and Azure AD ensures that applications can quickly, easily support identity federation, SSO, and Azure AD Conditional Access, reducing administrative overhead.
>[!NOTE] > All example strings or values referenced throughout this guide should be replaced with those for your actual environment.
The Service Provider settings define the properties for the SAML SP instance of
![Screenshot for Service Provider settings](./media/f5-big-ip-oracle-ebs/service-provider-settings.png)
- Next, under optional **Security Settings** specify whether Azure AD should encrypt issued SAML assertions. Encrypting assertions between Azure AD and the BIG-IP APM provides assurance that the content tokens canΓÇÖt be intercepted, and personal or corporate data be compromised.
+ Next, under optional **Security Settings** specify whether Azure AD should encrypt issued SAML assertions. Encrypting assertions between Azure AD and the BIG-IP APM provides assurance that the content tokens can't be intercepted, and personal or corporate data be compromised.
3. From the **Assertion Decryption Private Key** list, select **Create New**
This section defines all properties that you would normally use to manually conf
3. Select the refresh icon next to the **Signing Key** and **Signing Certificate** to locate the certificate you imported earlier
-4. Enter the certificateΓÇÖs password in **Signing Key Passphrase**
+4. Enter the certificate's password in **Signing Key Passphrase**
5. Enable **Signing Option** (optional). This ensures that BIG-IP only accepts tokens and claims that are signed by Azure AD
The **Easy Button wizard** supports Kerberos, OAuth Bearer, and HTTP authorizati
The BIG-IPs session management settings are used to define the conditions under which user sessions are terminated or allowed to continue, limits for users and IP addresses, and corresponding user info. Refer to [F5's docs](https://support.f5.com/csp/article/K18390492) for details on these settings.
-What isnΓÇÖt covered here however is Single Log-Out (SLO) functionality, which ensures all sessions between the IdP, the BIG-IP, and the user agent are terminated as users sign off. When the Easy Button instantiates a SAML application in your Azure AD tenant, it also populates the Logout Url with the APMΓÇÖs SLO endpoint. That way IdP initiated sign-outs from the Azure AD MyApps portal also terminate the session between the BIG-IP and a client.
+What isn't covered here however is Single Log-Out (SLO) functionality, which ensures all sessions between the IdP, the BIG-IP, and the user agent are terminated as users sign off. When the Easy Button instantiates a SAML application in your Azure AD tenant, it also populates the Logout Url with the APM's SLO endpoint. That way IdP initiated sign-outs from the Azure AD MyApps portal also terminate the session between the BIG-IP and a client.
Along with this the SAML federation metadata for the published application is also imported from your tenant, providing the APM with the SAML logout endpoint for Azure AD. This ensures SP initiated sign outs terminate the session between a client and Azure AD. But for this to be truly effective, the APM needs to know exactly when a user signs-out of the application.
-If the BIG-IP webtop portal is used to access published applications then a sign-out from there would be processed by the APM to also call the Azure AD sign-out endpoint. But consider a scenario where the BIG-IP webtop portal isnΓÇÖt used, then the user has no way of instructing the APM to sign out. Even if the user signs-out of the application itself, the BIG-IP is technically oblivious to this. So for this reason, SP initiated sign-out needs careful consideration to ensure sessions are securely terminated when no longer required. One way of achieving this would be to add an SLO function to your applications sign out button, so that it can redirect your client to either the Azure AD SAML or BIG-IP sign-out endpoint. The URL for SAML sign-out endpoint for your tenant can be found in **App Registrations > Endpoints**.
+If the BIG-IP webtop portal is used to access published applications then a sign-out from there would be processed by the APM to also call the Azure AD sign-out endpoint. But consider a scenario where the BIG-IP webtop portal isn't used, then the user has no way of instructing the APM to sign out. Even if the user signs-out of the application itself, the BIG-IP is technically oblivious to this. So for this reason, SP initiated sign-out needs careful consideration to ensure sessions are securely terminated when no longer required. One way of achieving this would be to add an SLO function to your applications sign out button, so that it can redirect your client to either the Azure AD SAML or BIG-IP sign-out endpoint. The URL for SAML sign-out endpoint for your tenant can be found in **App Registrations > Endpoints**.
If making a change to the app is a no go, then consider having the BIG-IP listen for the application's sign-out call, and upon detecting the request have it trigger SLO. Refer to our [Oracle PeopleSoft SLO guidance](../manage-apps/f5-big-ip-oracle-peoplesoft-easy-button.md#peoplesoft-single-logout) for using BIG-IP irules to achieve this. More details on using BIG-IP iRules to achieve this is available in the F5 knowledge article [Configuring automatic session termination (logout) based on a URI-referenced file name](https://support.f5.com/csp/article/K42052145) and [Overview of the Logout URI Include option](https://support.f5.com/csp/article/K12056). ## Summary
-This last step provides a breakdown of your configurations. Select **Deploy** to commit all settings and verify that the application now exists in your tenants list of ΓÇÿEnterprise applications.
+This last step provides a breakdown of your configurations. Select **Deploy** to commit all settings and verify that the application now exists in your tenants list of 'Enterprise applications.
## Next steps
-From a browser, connect to the **Oracle EBS applicationΓÇÖs external URL** or select the applicationΓÇÖs icon in the [Microsoft MyApps portal](https://myapps.microsoft.com/). After authenticating to Azure AD, youΓÇÖll be redirected to the BIG-IP virtual server for the application and automatically signed in through SSO.
+From a browser, connect to the **Oracle EBS application's external URL** or select the application's icon in the [Microsoft MyApps portal](https://myapps.microsoft.com/). After authenticating to Azure AD, you'll be redirected to the BIG-IP virtual server for the application and automatically signed in through SSO.
For increased security, organizations using this pattern could also consider blocking all direct access to the application, thereby forcing a strict path through the BIG-IP. ## Advanced deployment
-There may be cases where the Guided Configuration templates lack the flexibility to achieve more specific requirements. For those scenarios, see [Advanced Configuration for headers-based SSO](../manage-apps/f5-big-ip-header-advanced.md). Alternatively, the BIG-IP gives the option to disable **Guided ConfigurationΓÇÖs strict management mode**. This allows you to manually tweak your configurations, even though bulk of your configurations are automated through the wizard-based templates.
+There may be cases where the Guided Configuration templates lack the flexibility to achieve more specific requirements. For those scenarios, see [Advanced Configuration for headers-based SSO](../manage-apps/f5-big-ip-header-advanced.md). Alternatively, the BIG-IP gives the option to disable **Guided Configuration's strict management mode**. This allows you to manually tweak your configurations, even though bulk of your configurations are automated through the wizard-based templates.
-You can navigate to **Access > Guided Configuration** and select the **small padlock icon** on the far right of the row for your applicationsΓÇÖ configs.
+You can navigate to **Access > Guided Configuration** and select the **small padlock icon** on the far right of the row for your applications' configs.
![Screenshot for Configure Easy Button - Strict Management](./media/f5-big-ip-oracle-ebs/strict-mode-padlock.png)
Failure to access a SHA protected application can be due to any number of factor
Reproduce your issue, then inspect the logs, but remember to switch this back when finished as verbose mode generates lots of data.
-If you see a BIG-IP branded error immediately after successful Azure AD pre-authentication, itΓÇÖs possible the issue relates to SSO from Azure AD to the BIG-IP.
+If you see a BIG-IP branded error immediately after successful Azure AD pre-authentication, it's possible the issue relates to SSO from Azure AD to the BIG-IP.
1. Navigate to **Access > Overview > Access reports** 2. Run the report for the last hour to see if the logs provide any clues. The **View session** variables link for your session will also help understand if the APM is receiving the expected claims from Azure AD
-If you donΓÇÖt see a BIG-IP error page, then the issue is probably more related to the backend request or SSO from the BIG-IP to the application.
+If you don't see a BIG-IP error page, then the issue is probably more related to the backend request or SSO from the BIG-IP to the application.
1. In which case head to **Access Policy > Overview > Active Sessions** and select the link for your active session
See [BIG-IP APM variable assign examples](https://devcentral.f5.com/s/articles/a
The following command from a bash shell validates the APM service account used for LDAP queries and can successfully authenticate and query a user object:
-```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=oraclef5,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)" ```
+```ldapsearch -xLLL -H 'ldap://192.168.0.58' -b "CN=oraclef5,dc=contoso,dc=lds" -s sub -D "CN=f5-apm,CN=partners,DC=contoso,DC=lds" -w 'P@55w0rd!' "(cn=testuser)"```
-For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). ThereΓÇÖs also a great BIG-IP reference table to help diagnose LDAP-related issues in this [F5 knowledge article on LDAP Query](https://techdocs.f5.com/en-us/bigip-16-1-0/big-ip-access-policy-manager-authentication-methods/ldap-query.html).
+For more information, visit this F5 knowledge article [Configuring LDAP remote authentication for Active Directory](https://support.f5.com/csp/article/K11072). There's also a great BIG-IP reference table to help diagnose LDAP-related issues in this [F5 knowledge article on LDAP Query](https://techdocs.f5.com/en-us/bigip-16-1-0/big-ip-access-policy-manager-authentication-methods/ldap-query.html).
active-directory F5 Big Ip Oracle Jd Edwards Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/f5-big-ip-oracle-jd-edwards-easy-button.md
Integrating a BIG-IP with Azure AD provides many benefits, including:
* Manage Identities and access from a single control plane, the [Azure portal](https://portal.azure.com/)
-To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-aad-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
+To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
## Scenario description
active-directory F5 Big Ip Sap Erp Easy Button https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/f5-big-ip-sap-erp-easy-button.md
Integrating a BIG-IP with Azure Active Directory (Azure AD) provides many benefi
* Manage identities and access from a single control plane, the [Azure portal](https://portal.azure.com/)
-To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-aad-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
+To learn about all the benefits, see the article on [F5 BIG-IP and Azure AD integration](../manage-apps/f5-integration.md) and [what is application access and single sign-on with Azure AD](/azure/active-directory/active-directory-appssoaccess-whatis).
## Scenario description
active-directory Funnel Leasing Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/funnel-leasing-provisioning-tutorial.md
description: Learn how to automatically provision and de-provision user accounts
writer: twimmers-+ ms.assetid: 320d5135-3833-4a65-9fc5-7e50709dd6ff
active-directory Headspace Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/headspace-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Headspace for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Headspace.
++
+writer: twimmers
+
+ms.assetid: 5d1a7185-dd04-46c3-ab58-525aaef2e25d
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Headspace for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Headspace and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users to [Headspace](https://www.headspace.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Headspace.
+> * Remove users in Headspace when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Headspace.
+> * [Single sign-on](headspace-tutorial.md) to Headspace (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* An administrator account with Headspace.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Headspace](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Headspace to support provisioning with Azure AD
+Contact Headspace support to configure Headspace to support provisioning with Azure AD.
+
+## Step 3. Add Headspace from the Azure AD application gallery
+
+Add Headspace from the Azure AD application gallery to start managing provisioning to Headspace. If you have previously setup Headspace for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users to the application. If you choose to scope who will be provisioned based solely on attributes of the user, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users before rolling out to everyone. When scope for provisioning is set to assigned users, you can control this by assigning one or two users to the app. When scope is set to all users, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Headspace
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in TestApp based on user assignments in Azure AD.
+
+### To configure automatic user provisioning for Headspace in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Headspace**.
+
+ ![Screenshot of the Headspace link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Headspace Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Headspace. If the connection fails, ensure your Headspace account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Headspace**.
+
+1. Review the user attributes that are synchronized from Azure AD to Headspace in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Headspace for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Headspace API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Headspace|
+ |||||
+ |userName|String|&check;|&check;
+ |active|Boolean||&check;
+ |emails[type eq "work"].value|String||&check;
+ |name.givenName|String||
+ |name.familyName|String||
+ |externalId|String||&check;
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
+|String||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Headspace, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users that you would like to provision to Headspace by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Humbol Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/humbol-provisioning-tutorial.md
description: Learn how to automatically provision and de-provision user accounts
writer: twimmers-+ ms.assetid: a34b8778-3a56-4a39-835d-54044079350d
active-directory Kerbf5 Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/kerbf5-tutorial.md
When you click the F5 tile in the Access Panel, you should be automatically sign
## Additional resources -- [ List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory ](./tutorial-list.md)
+- [List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory](./tutorial-list.md)
-- [What is application access and single sign-on with Azure Active Directory? ](../manage-apps/what-is-single-sign-on.md)
+- [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
- [What is conditional access in Azure Active Directory?](../conditional-access/overview.md)
When you click the F5 tile in the Access Panel, you should be automatically sign
- [Configure F5 single sign-on for Advanced Kerberos application](advance-kerbf5-tutorial.md) -- [F5 BIG-IP APM and Azure AD integration for secure hybrid access](../manage-apps/f5-aad-integration.md)
+- [F5 BIG-IP APM and Azure AD integration for secure hybrid access](../manage-apps/f5-integration.md)
- [Tutorial to deploy F5 BIG-IP Virtual Edition VM in Azure IaaS for secure hybrid access](../manage-apps/f5-bigip-deployment-guide.md) -- [Tutorial for Azure Active Directory single sign-on integration with F5 BIG-IP for Password-less VPN](../manage-apps/f5-aad-password-less-vpn.md)
+- [Tutorial for Azure Active Directory single sign-on integration with F5 BIG-IP for Password-less VPN](../manage-apps/f5-passwordless-vpn.md)
active-directory Lusid Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/lusid-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure LUSID for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to LUSID.
++
+writer: twimmers
+
+ms.assetid: bacb982f-c38a-43dd-83f3-1d7ba27a3f52
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure LUSID for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both LUSID and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [LUSID](https://www.finbourne.com/lusid) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in LUSID.
+> * Remove users in LUSID when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and LUSID.
+> * Provision groups and group memberships in LUSID.
+> * [Single sign-on](lusid-tutorial.md) to LUSID (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in LUSID with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and LUSID](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure LUSID to support provisioning with Azure AD
+Contact LUSID support to configure LUSID to support provisioning with Azure AD.
+
+## Step 3. Add LUSID from the Azure AD application gallery
+
+Add LUSID from the Azure AD application gallery to start managing provisioning to LUSID. If you have previously setup LUSID for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to LUSID
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for LUSID in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **LUSID**.
+
+ ![Screenshot of the LUSID link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your LUSID Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to LUSID. If the connection fails, ensure your LUSID account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to LUSID**.
+
+1. Review the user attributes that are synchronized from Azure AD to LUSID in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in LUSID for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the LUSID API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by LUSID|
+ |||||
+ |userName|String|&check;|&check;
+ |active|Boolean||&check;
+ |emails[type eq "work"].value|String||&check;
+ |name.givenName|String||&check;
+ |name.familyName|String||&check;
+ |externalId|String||&check;
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to LUSID**.
+
+1. Review the group attributes that are synchronized from Azure AD to LUSID in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in LUSID for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by LUSID|
+ |||||
+ |displayName|String|&check;|&check;
+ |externalId|String||
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for LUSID, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to LUSID by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Markit Procurement Service Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/markit-procurement-service-provisioning-tutorial.md
description: Learn how to automatically provision and deprovision user accounts
writer: twimmers-+ ms.assetid: 4ed2955b-3060-4530-b8c1-9e355dedf13e
active-directory Moqups Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/moqups-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Moqups for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Moqups.
++
+writer: twimmers
+
+ms.assetid: 2e6e8499-9c49-4082-ac6d-64890330042a
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Moqups for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Moqups and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users to [Moqups](https://www.moqups.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Moqups.
+> * Remove users in Moqups when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Moqups.
+> * [Single sign-on](moqups-tutorial.md) to Moqups (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* An administrator account with Moqups.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Moqups](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Moqups to support provisioning with Azure AD
+Contact Moqups support to configure Moqups to support provisioning with Azure AD.
+
+## Step 3. Add Moqups from the Azure AD application gallery
+
+Add Moqups from the Azure AD application gallery to start managing provisioning to Moqups. If you have previously setup Moqups for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users before rolling out to everyone. When scope for provisioning is set to assigned users, you can control this by assigning one or two users to the app. When scope is set to all users, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Moqups
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Moqups in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Moqups**.
+
+ ![Screenshot of the Moqups link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Moqups Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Moqups. If the connection fails, ensure your Moqups account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Moqups**.
+
+1. Review the user attributes that are synchronized from Azure AD to Moqups in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Moqups for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Moqups API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Moqups|
+ |||||
+ |userName|String|&check;|&check;
+ |active|Boolean||
+ |displayName|String||
+ |emails[type eq "work"].value|String||
+ |name.formatted|String||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Moqups, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users that you would like to provision to Moqups by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Notion Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/notion-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Notion for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Notion.
++
+writer: twimmers
+
+ms.assetid: 9a015494-4ca0-4a08-87e6-e234fb529c72
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Notion for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Notion and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [Notion](https://notion.so) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Notion.
+> * Remove users in Notion when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Notion.
+> * Provision groups and group memberships in Notion.
+> * [Single sign-on](notion-tutorial.md) to Notion (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in Notion with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Notion](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Notion to support provisioning with Azure AD
+Contact Notion support to configure Notion to support provisioning with Azure AD.
+
+## Step 3. Add Notion from the Azure AD application gallery
+
+Add Notion from the Azure AD application gallery to start managing provisioning to Notion. If you have previously setup Notion for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Notion
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Notion in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Notion**.
+
+ ![Screenshot of the Notion link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Notion Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Notion. If the connection fails, ensure your Notion account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Notion**.
+
+1. Review the user attributes that are synchronized from Azure AD to Notion in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Notion for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Notion API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Notion|
+ |||||
+ |userName|String|&check;|&check;
+ |name.formatted|String||&check;
+ |active|Boolean||&check;
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to Notion**.
+
+1. Review the group attributes that are synchronized from Azure AD to Notion in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in Notion for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Notion|
+ |||||
+ |displayName|String|&check;|&check;
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Notion, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to Notion by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Recnice Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/recnice-provisioning-tutorial.md
description: Learn how to automatically provision and de-provision user accounts
writer: twimmers-+ ms.assetid: 72e7a106-4187-4e40-9c63-77527fe9aeae
active-directory Safeguard Cyber Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/safeguard-cyber-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure SafeGuard Cyber for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to SafeGuard Cyber.
++
+writer: twimmers
+
+ms.assetid: ffb3094a-70b1-4738-b34e-fa0696a7eda7
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure SafeGuard Cyber for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both SafeGuard Cyber and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [SafeGuard Cyber](https://www.safeguardcyber.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in SafeGuard Cyber.
+> * Remove users in SafeGuard Cyber when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and SafeGuard Cyber.
+> * Provision groups and group memberships in SafeGuard Cyber.
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in SafeGuard Cyber with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and SafeGuard Cyber](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure SafeGuard Cyber to support provisioning with Azure AD
+Contact SafeGuard Cyber support to configure SafeGuard Cyber to support provisioning with Azure AD.
+
+## Step 3. Add SafeGuard Cyber from the Azure AD application gallery
+
+Add SafeGuard Cyber from the Azure AD application gallery to start managing provisioning to SafeGuard Cyber. If you have previously setup SafeGuard Cyber for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to SafeGuard Cyber
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for SafeGuard Cyber in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **SafeGuard Cyber**.
+
+ ![Screenshot of the SafeGuard Cyber link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your SafeGuard Cyber Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to SafeGuard Cyber. If the connection fails, ensure your SafeGuard Cyber account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to SafeGuard Cyber**.
+
+1. Review the user attributes that are synchronized from Azure AD to SafeGuard Cyber in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in SafeGuard Cyber for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the SafeGuard Cyber API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by SafeGuard Cyber|
+ |||||
+ |userName|String|&check;|&check;
+ |externalId|String|&check;|&check;
+ |active|Boolean||
+ |displayName|String||
+ |emails[type eq "work"].value|String||
+ |name.givenName|String||
+ |name.familyName|String||
+ |urn:ietf:params:scim:schemas:extension:safeguard:2.0:User:scimSource|String||&check;
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to SafeGuard Cyber**.
+
+1. Review the group attributes that are synchronized from Azure AD to SafeGuard Cyber in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in SafeGuard Cyber for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by SafeGuard Cyber|
+ |||||
+ |displayName|String|&check;|&check;
+ |externalId|String|&check;|&check;
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for SafeGuard Cyber, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to SafeGuard Cyber by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Uni Tel As Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/uni-tel-as-provisioning-tutorial.md
description: Learn how to automatically provision and de-provision user accounts
writer: twimmers-+ ms.assetid: 37c67e85-fc17-4285-b658-52af669f4046
active-directory V Client Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/v-client-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure V-Client for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to V-Client.
++
+writer: twimmers
+
+ms.assetid: 95f8be6d-0b45-4414-84f3-20e260d15da4
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure V-Client for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both V-Client and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users and groups to [V-Client](https://www.amiya.co.jp/solutions/verona) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in V-Client.
+> * Remove users in V-Client when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and V-Client.
+> * Provision groups and group memberships in V-Client.
+> * [Single sign-on](v-client-tutorial.md) to V-Client (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in V-Client with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and V-Client](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure V-Client to support provisioning with Azure AD
+Contact V-Client support to configure V-Client to support provisioning with Azure AD.
+
+## Step 3. Add V-Client from the Azure AD application gallery
+
+Add V-Client from the Azure AD application gallery to start managing provisioning to V-Client. If you have previously setup V-Client for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to V-Client
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for V-Client in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **V-Client**.
+
+ ![Screenshot of the V-Client link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your V-Client Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to V-Client. If the connection fails, ensure your V-Client account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to V-Client**.
+
+1. Review the user attributes that are synchronized from Azure AD to V-Client in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in V-Client for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the V-Client API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by V-Client|
+ |||||
+ |userName|String|&check;|&check;
+ |active|Boolean||&check;
+ |displayName|String||&check;
+ |emails[type eq "work"].value|String||&check;
+ |phoneNumbers[type eq "work"].value|String||
+ |externalId|String||&check;
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department|String||
++
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to V-Client**.
+
+1. Review the group attributes that are synchronized from Azure AD to V-Client in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in V-Client for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by V-Client|
+ |||||
+ |displayName|String|&check;|&check;
+ |externalId|String||
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for V-Client, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to V-Client by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Vault Platform Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/vault-platform-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Vault Platform for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Vault Platform.
++
+writer: twimmers
+
+ms.assetid: 019f3aa5-f32f-40a0-9efc-f6f159450093
++++ Last updated : 03/02/2023+++
+# Tutorial: Configure Vault Platform for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Vault Platform and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users to [Vault Platform](https://vaultplatform.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Vault Platform.
+> * Remove users in Vault Platform when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Vault Platform.
+> * [Single sign-on](vault-platform-tutorial.md) to Vault Platform (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* An administrator account with Vault Platform.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Vault Platform](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Vault Platform to support provisioning with Azure AD
+Contact Vault Platform support to configure Vault Platform to support provisioning with Azure AD.
+
+## Step 3. Add Vault Platform from the Azure AD application gallery
+
+Add Vault Platform from the Azure AD application gallery to start managing provisioning to Vault Platform. If you have previously setup Vault Platform for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users before rolling out to everyone. When scope for provisioning is set to assigned users, you can control this by assigning one or two users to the app. When scope is set to all users, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Vault Platform
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Vault Platform in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Vault Platform**.
+
+ ![Screenshot of the Vault Platform link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Vault Platform Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Vault Platform. If the connection fails, ensure your Vault Platform account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Vault Platform**.
+
+1. Review the user attributes that are synchronized from Azure AD to Vault Platform in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Vault Platform for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Vault Platform API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Vault Platform|
+ |||||
+ |userName|String|&check;|&check;
+ |externalId|String|&check;|&check;
+ |active|Boolean||&check;
+ |displayName|String||
+ |title|String||&check;
+ |emails[type eq "work"].value|String||&check;
+ |name.givenName|String||&check;
+ |name.familyName|String||&check;
+ |addresses[type eq "work"].country|String||&check;
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber|String||&check;
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department|String||&check;
+ |urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager|String||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Vault Platform, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users that you would like to provision to Vault Platform by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Veritas Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/veritas-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Veritas Enterprise Vault.cloud SSO-SCIM for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and de-provision user accounts from Azure AD to Veritas Enterprise Vault.cloud SSO-SCIM.
++
+writer: twimmers
+
+ms.assetid: e99808ef-a7ff-4fcc-86d4-4cb3060f589b
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Veritas Enterprise Vault.cloud SSO-SCIM for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Veritas Enterprise Vault.cloud SSO-SCIM and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and de-provisions users to [Veritas Enterprise Vault.cloud SSO-SCIM](https://www.veritas.com/insights/enterprise-vault.html?inid=us_veritas_home_products_enterprisevaultcloud) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Veritas Enterprise Vault.cloud SSO-SCIM.
+> * Remove users in Veritas Enterprise Vault.cloud SSO-SCIM when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Veritas Enterprise Vault.cloud SSO-SCIM.
+> * [Single sign-on](veritas-tutorial.md) to Veritas Enterprise Vault.cloud SSO-SCIM (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* An administrator account with Veritas Enterprise Vault.cloud SSO-SCIM.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Veritas Enterprise Vault.cloud SSO-SCIM](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Veritas Enterprise Vault.cloud SSO-SCIM to support provisioning with Azure AD
+Contact Veritas Enterprise Vault.cloud SSO-SCIM support to configure Veritas Enterprise Vault.cloud SSO-SCIM to support provisioning with Azure AD.
+
+## Step 3. Add Veritas Enterprise Vault.cloud SSO-SCIM from the Azure AD application gallery
+
+Add Veritas Enterprise Vault.cloud SSO-SCIM from the Azure AD application gallery to start managing provisioning to Veritas Enterprise Vault.cloud SSO-SCIM. If you have previously setup Veritas Enterprise Vault.cloud SSO-SCIM for SSO you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users before rolling out to everyone. When scope for provisioning is set to assigned users, you can control this by assigning one or two users to the app. When scope is set to all users, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Veritas Enterprise Vault.cloud SSO-SCIM
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Veritas Enterprise Vault.cloud SSO-SCIM in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Veritas Enterprise Vault.cloud SSO-SCIM**.
+
+ ![Screenshot of the Veritas Enterprise Vault.cloud SSO-SCIM link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Veritas Enterprise Vault.cloud SSO-SCIM Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Veritas Enterprise Vault.cloud SSO-SCIM. If the connection fails, ensure your Veritas Enterprise Vault.cloud SSO-SCIM account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Veritas Enterprise Vault.cloud SSO-SCIM**.
+
+1. Review the user attributes that are synchronized from Azure AD to Veritas Enterprise Vault.cloud SSO-SCIM in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Veritas Enterprise Vault.cloud SSO-SCIM for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you'll need to ensure that the Veritas Enterprise Vault.cloud SSO-SCIM API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Veritas Enterprise Vault.cloud SSO-SCIM|
+ |||||
+ |userName|String|&check;|&check;
+ |emails[type eq "work"].value|String|&check;|&check;
+ |active|Boolean||&check;
+ |displayName|String||&check;
+ |name.givenName|String||&check;
+ |name.familyName|String||&check;
+ |urn:ietf:params:scim:schemas:extension:veritas:2.0:User:emailAliases|String||&check;
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Veritas Enterprise Vault.cloud SSO-SCIM, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users that you would like to provision to Veritas Enterprise Vault.cloud SSO-SCIM by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Wats Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/wats-provisioning-tutorial.md
description: Learn how to automatically provision and de-provision user accounts
writer: twimmers-+ ms.assetid: e1cc1c4d-7504-4c78-9999-1d5301bf933c
active-directory Xledger Provisioning Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/saas-apps/xledger-provisioning-tutorial.md
+
+ Title: 'Tutorial: Configure Xledger for automatic user provisioning with Azure Active Directory'
+description: Learn how to automatically provision and deprovision user accounts from Azure AD to Xledger.
++
+writer: twimmers
+
+ms.assetid: 6c3b93cc-a858-4c21-b4df-b35dbd9e0116
++++ Last updated : 06/05/2023+++
+# Tutorial: Configure Xledger for automatic user provisioning
+
+This tutorial describes the steps you need to perform in both Xledger and Azure Active Directory (Azure AD) to configure automatic user provisioning. When configured, Azure AD automatically provisions and deprovisions users and groups to [Xledger](https://www.xledger.com) using the Azure AD Provisioning service. For important details on what this service does, how it works, and frequently asked questions, see [Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory](../app-provisioning/user-provisioning.md).
++
+## Supported capabilities
+> [!div class="checklist"]
+> * Create users in Xledger.
+> * Remove users in Xledger when they do not require access anymore.
+> * Keep user attributes synchronized between Azure AD and Xledger.
+> * Provision groups and group memberships in Xledger.
+> * [Single sign-on](../manage-apps/add-application-portal-setup-oidc-sso.md) to Xledger (recommended).
+
+## Prerequisites
+
+The scenario outlined in this tutorial assumes that you already have the following prerequisites:
+
+* [An Azure AD tenant](../develop/quickstart-create-new-tenant.md)
+* A user account in Azure AD with [permission](../roles/permissions-reference.md) to configure provisioning (for example, Application Administrator, Cloud Application administrator, Application Owner, or Global Administrator).
+* A user account in Xledger with Admin permissions.
+
+## Step 1. Plan your provisioning deployment
+1. Learn about [how the provisioning service works](../app-provisioning/user-provisioning.md).
+1. Determine who will be in [scope for provisioning](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+1. Determine what data to [map between Azure AD and Xledger](../app-provisioning/customize-application-attributes.md).
+
+## Step 2. Configure Xledger to support provisioning with Azure AD
+Contact Xledger support to configure Xledger to support provisioning with Azure AD.
+
+## Step 3. Add Xledger from the Azure AD application gallery
+
+Add Xledger from the Azure AD application gallery to start managing provisioning to Xledger. If you have previously setup Xledger for SSO, you can use the same application. However it's recommended that you create a separate app when testing out the integration initially. Learn more about adding an application from the gallery [here](../manage-apps/add-application-portal.md).
+
+## Step 4. Define who will be in scope for provisioning
+
+The Azure AD provisioning service allows you to scope who will be provisioned based on assignment to the application and or based on attributes of the user / group. If you choose to scope who will be provisioned to your app based on assignment, you can use the following [steps](../manage-apps/assign-user-or-group-access-portal.md) to assign users and groups to the application. If you choose to scope who will be provisioned based solely on attributes of the user or group, you can use a scoping filter as described [here](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* Start small. Test with a small set of users and groups before rolling out to everyone. When scope for provisioning is set to assigned users and groups, you can control this by assigning one or two users or groups to the app. When scope is set to all users and groups, you can specify an [attribute based scoping filter](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+* If you need more roles, you can [update the application manifest](../develop/howto-add-app-roles-in-azure-ad-apps.md) to add new roles.
++
+## Step 5. Configure automatic user provisioning to Xledger
+
+This section guides you through the steps to configure the Azure AD provisioning service to create, update, and disable users and/or groups in TestApp based on user and/or group assignments in Azure AD.
+
+### To configure automatic user provisioning for Xledger in Azure AD:
+
+1. Sign in to the [Azure portal](https://portal.azure.com). Select **Enterprise Applications**, then select **All applications**.
+
+ ![Screenshot of Enterprise applications blade.](common/enterprise-applications.png)
+
+1. In the applications list, select **Xledger**.
+
+ ![Screenshot of the Xledger link in the Applications list.](common/all-applications.png)
+
+1. Select the **Provisioning** tab.
+
+ ![Screenshot of Provisioning tab.](common/provisioning.png)
+
+1. Set the **Provisioning Mode** to **Automatic**.
+
+ ![Screenshot of Provisioning tab automatic.](common/provisioning-automatic.png)
+
+1. Under the **Admin Credentials** section, input your Xledger Tenant URL and Secret Token. Click **Test Connection** to ensure Azure AD can connect to Xledger. If the connection fails, ensure your Xledger account has Admin permissions and try again.
+
+ ![Screenshot of Token.](common/provisioning-testconnection-tenanturltoken.png)
+
+1. In the **Notification Email** field, enter the email address of a person or group who should receive the provisioning error notifications and select the **Send an email notification when a failure occurs** check box.
+
+ ![Screenshot of Notification Email.](common/provisioning-notification-email.png)
+
+1. Select **Save**.
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Users to Xledger**.
+
+1. Review the user attributes that are synchronized from Azure AD to Xledger in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the user accounts in Xledger for update operations. If you choose to change the [matching target attribute](../app-provisioning/customize-application-attributes.md), you need to ensure that the Xledger API supports filtering users based on that attribute. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Xledger|
+ |||||
+ |userName|String|&check;|&check;
+ |active|Boolean||
+ |displayName|String||
+ |emails[type eq "work"].value|String||
+ |phoneNumbers[type eq "work"].value|String||
+ |urn:ietf:params:scim:schemas:extension:xledger:2.0:User:accessFromDate|DateTime||
+ |urn:ietf:params:scim:schemas:extension:xledger:2.0:User:accessToDate|DateTime||
+
+1. Under the **Mappings** section, select **Synchronize Azure Active Directory Groups to Xledger**.
+
+1. Review the group attributes that are synchronized from Azure AD to Xledger in the **Attribute-Mapping** section. The attributes selected as **Matching** properties are used to match the groups in Xledger for update operations. Select the **Save** button to commit any changes.
+
+ |Attribute|Type|Supported for filtering|Required by Xledger|
+ |||||
+ |displayName|String|&check;|&check;
+ |members|Reference||
+
+1. To configure scoping filters, refer to the following instructions provided in the [Scoping filter tutorial](../app-provisioning/define-conditional-rules-for-provisioning-user-accounts.md).
+
+1. To enable the Azure AD provisioning service for Xledger, change the **Provisioning Status** to **On** in the **Settings** section.
+
+ ![Screenshot of Provisioning Status Toggled On.](common/provisioning-toggle-on.png)
+
+1. Define the users and/or groups that you would like to provision to Xledger by choosing the desired values in **Scope** in the **Settings** section.
+
+ ![Screenshot of Provisioning Scope.](common/provisioning-scope.png)
+
+1. When you're ready to provision, click **Save**.
+
+ ![Screenshot of Saving Provisioning Configuration.](common/provisioning-configuration-save.png)
+
+This operation starts the initial synchronization cycle of all users and groups defined in **Scope** in the **Settings** section. The initial cycle takes longer to perform than subsequent cycles, which occur approximately every 40 minutes as long as the Azure AD provisioning service is running.
+
+## Step 6. Monitor your deployment
+Once you've configured provisioning, use the following resources to monitor your deployment:
+
+* Use the [provisioning logs](../reports-monitoring/concept-provisioning-logs.md) to determine which users have been provisioned successfully or unsuccessfully
+* Check the [progress bar](../app-provisioning/application-provisioning-when-will-provisioning-finish-specific-user.md) to see the status of the provisioning cycle and how close it's to completion
+* If the provisioning configuration seems to be in an unhealthy state, the application goes into quarantine. Learn more about quarantine states [here](../app-provisioning/application-provisioning-quarantine-status.md).
+
+## More resources
+
+* [Managing user account provisioning for Enterprise Apps](../app-provisioning/configure-automatic-user-provisioning-portal.md)
+* [What is application access and single sign-on with Azure Active Directory?](../manage-apps/what-is-single-sign-on.md)
+
+## Next steps
+
+* [Learn how to review logs and get reports on provisioning activity](../app-provisioning/check-status-user-account-provisioning.md)
active-directory Azure Ad Pci Dss Guidance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/azure-ad-pci-dss-guidance.md
Where applications and resources use Azure AD for identity and access management
Learn more
-* [Introduction to delegated administration and isolated environments](../fundamentals/secure-with-azure-ad-introduction.md)
+* [Introduction to delegated administration and isolated environments](../fundamentals/secure-introduction.md)
* [How to use the Microsoft Authenticator app](https://support.microsoft.com/account-billing/how-to-use-the-microsoft-authenticator-app-9783c865-0308-42fb-a519-8cf666fe0acc) * [What are managed identities for Azure resources?](../managed-identities-azure-resources/overview.md) * [What are access reviews?](../governance/access-reviews-overview.md)
active-directory Pci Requirement 7 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/pci-requirement-7.md
|PCI-DSS Defined approach requirements|Azure AD guidance and recommendations| |-|-| |**7.1.1** All security policies and operational procedures that are identified in Requirement 7 are: </br> Documented </br> Kept up to date </br> In use </br> Known to all affected parties|Integrate access to cardholder data environment (CDE) applications with Azure Active Directory (Azure AD) for authentication and authorization. </br> Document Conditional Access policies for remote access technologies. Automate with Microsoft Graph API and PowerShell. [Conditional Access: Programmatic access](../conditional-access/howto-conditional-access-apis.md) </br> Archive the Azure AD audit logs to record security policy changes and Azure AD tenant configuration. To record usage, archive Azure AD sign-in logs in a security information and event management (SIEM) system. [Azure AD activity logs in Azure Monitor](../reports-monitoring/concept-activity-logs-azure-monitor.md)|
-|**7.1.2** Roles and responsibilities for performing activities in Requirement 7 are documented, assigned, and understood.|Integrate access to CDE applications with Azure AD for authentication and authorization. </br> - Assign users roles to applications or with group membership </br> - Use Microsoft Graph to list application assignments </br> - Use Azure AD audit logs to track assignment changes. </br> [List appRoleAssignments granted to a user](/graph/api/user-list-approleassignments?view=graph-rest-1.0&tabs=http&preserve-view=true) </br> [Get-MgServicePrincipalAppRoleAssignedTo](/powershell/module/microsoft.graph.applications/get-mgserviceprincipalapproleassignedto?view=graph-powershell-1.0&preserve-view=true) </br></br> **Privileged access** </br> Use Azure AD audit logs to track directory role assignments. Administrator roles relevant to this PCI requirement: </br> - Global </br> - Application </br> - Authentication </br> - Authentication Policy </br> - Hybrid Identity </br> To implement least privilege access, use Azure AD to create custom directory roles. </br> If you build portions of CDE in Azure, document privileged role assignments such as Owner, Contributor, user Access Administrator, etc., and subscription custom roles where CDE resources are deployed. </br> Microsoft recommends you enable Just-In-Time (JIT) access to roles using Privileged Identity Management (PIM). PIM enables JIT access to Azure AD security groups for scenarios when group membership represents privileged access to CDE applications or resources. [Azure AD built-in roles](../roles/permissions-reference.md) </br> [Azure AD Identity and access management operations reference guide](../fundamentals/active-directory-ops-guide-iam.md) </br> [Create and assign a custom role in Azure Active Directory](../roles/custom-create.md) </br> [Securing privileged access for hybrid and cloud deployments in Azure AD](../roles/security-planning.md) </br> [What is Azure AD Privileged Identity Management?](../privileged-identity-management/pim-configure.md) </br> [Best practices for all isolation architectures]() </br> [PIM for Groups](../fundamentals/secure-with-azure-ad-best-practices.md)|
+|**7.1.2** Roles and responsibilities for performing activities in Requirement 7 are documented, assigned, and understood.|Integrate access to CDE applications with Azure AD for authentication and authorization. </br> - Assign users roles to applications or with group membership </br> - Use Microsoft Graph to list application assignments </br> - Use Azure AD audit logs to track assignment changes. </br> [List appRoleAssignments granted to a user](/graph/api/user-list-approleassignments?view=graph-rest-1.0&tabs=http&preserve-view=true) </br> [Get-MgServicePrincipalAppRoleAssignedTo](/powershell/module/microsoft.graph.applications/get-mgserviceprincipalapproleassignedto?view=graph-powershell-1.0&preserve-view=true) </br></br> **Privileged access** </br> Use Azure AD audit logs to track directory role assignments. Administrator roles relevant to this PCI requirement: </br> - Global </br> - Application </br> - Authentication </br> - Authentication Policy </br> - Hybrid Identity </br> To implement least privilege access, use Azure AD to create custom directory roles. </br> If you build portions of CDE in Azure, document privileged role assignments such as Owner, Contributor, user Access Administrator, etc., and subscription custom roles where CDE resources are deployed. </br> Microsoft recommends you enable Just-In-Time (JIT) access to roles using Privileged Identity Management (PIM). PIM enables JIT access to Azure AD security groups for scenarios when group membership represents privileged access to CDE applications or resources. [Azure AD built-in roles](../roles/permissions-reference.md) </br> [Azure AD Identity and access management operations reference guide](../fundamentals/active-directory-ops-guide-iam.md) </br> [Create and assign a custom role in Azure Active Directory](../roles/custom-create.md) </br> [Securing privileged access for hybrid and cloud deployments in Azure AD](../roles/security-planning.md) </br> [What is Azure AD Privileged Identity Management?](../privileged-identity-management/pim-configure.md) </br> [Best practices for all isolation architectures]() </br> [PIM for Groups](../fundamentals/secure-best-practices.md)|
## 7.2 Access to system components and data is appropriately defined and assigned.
aks Azure Ad Integration Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/azure-ad-integration-cli.md
Title: Integrate Azure Active Directory with Azure Kubernetes Service (legacy)
+ Title: Integrate Azure Active Directory with Azure Kubernetes Service (AKS) (legacy)
description: Learn how to use the Azure CLI to create and Azure Active Directory-enabled Azure Kubernetes Service (AKS) cluster (legacy) Previously updated : 05/28/2023 Last updated : 06/05/2023
-# Integrate Azure Active Directory with Azure Kubernetes Service using the Azure CLI (legacy)
+# Integrate Azure Active Directory with Azure Kubernetes Service (AKS) using the Azure CLI (legacy)
> [!WARNING]
-> **The feature described in this document, Azure AD Integration (legacy), will be deprecated on June 1st, 2023. At that time, no new clusters can be created with Azure AD Integration (legacy). All Azure AD Integration (legacy) AKS clusters will be migrated to AKS-managed Azure AD automatically starting from August 1st, 2023.
+> The feature described in this document, Azure AD Integration (legacy) was **deprecated on June 1st, 2023**. At this time, no new clusters can be created with Azure AD Integration (legacy). All Azure AD Integration (legacy) AKS clusters will be migrated to AKS-managed Azure AD automatically starting from August 1st, 2023.
> > AKS has a new improved [AKS-managed Azure AD][managed-aad] experience that doesn't require you to manage server or client applications. If you want to migrate follow the instructions [here][managed-aad-migrate].
Azure Kubernetes Service (AKS) can be configured to use Azure Active Directory (
This article shows you how to create the required Azure AD components, then deploy an Azure AD-enabled cluster and create a basic Kubernetes role in the AKS cluster.
-For the complete sample script used in this article, see [Azure CLI samples - AKS integration with Azure AD][complete-script].
-
-## The following limitations apply:
+## Limitations
- Azure AD can only be enabled on Kubernetes RBAC-enabled cluster. - Azure AD legacy integration can only be enabled during cluster creation.
aks Csi Secrets Store Nginx Tls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/csi-secrets-store-nginx-tls.md
Title: Set up Secrets Store CSI Driver to enable NGINX Ingress Controller with TLS on Azure Kubernetes Service
+ Title: Set up Secrets Store CSI Driver to enable NGINX Ingress Controller with TLS on Azure Kubernetes Service (AKS)
description: How to configure Secrets Store CSI Driver to enable NGINX Ingress Controller with TLS for Azure Kubernetes Service (AKS). Previously updated : 05/26/2022 Last updated : 06/05/2023
This article walks you through the process of securing an NGINX Ingress Controller with TLS with an Azure Kubernetes Service (AKS) cluster and an Azure Key Vault (AKV) instance. For more information, see [TLS in Kubernetes][kubernetes-ingress-tls].
-Importing the ingress TLS certificate to the cluster can be accomplished using one of two methods:
+You can import the ingress TLS certificate to the cluster using one of the following methods:
-- **Application** - The application deployment manifest declares and mounts the provider volume. Only when the application is deployed, is the certificate made available in the cluster, and when the application is removed the secret is removed as well. This scenario fits development teams who are responsible for the applicationΓÇÖs security infrastructure and their integration with the cluster.-- **Ingress Controller** - The ingress deployment is modified to declare and mount the provider volume. The secret is imported when ingress pods are created. The applicationΓÇÖs pods have no access to the TLS certificate. This scenario fits scenarios where one team (for example, IT) manages and creates infrastructure and networking components (including HTTPS TLS certificates) and other teams manage application lifecycle. In this case, ingress is specific to a single namespace/workload and is deployed in the same namespace as the application.
+- **Application**: The application deployment manifest declares and mounts the provider volume. Only when you deploy the application is the certificate made available in the cluster. When you remove the application, the secret is also removed. This scenario fits development teams responsible for the applicationΓÇÖs security infrastructure and its integration with the cluster.
+- **Ingress Controller**: The ingress deployment is modified to declare and mount the provider volume. The secret is imported when ingress pods are created. The applicationΓÇÖs pods have no access to the TLS certificate. This scenario fits scenarios where one team (for example, IT) manages and creates infrastructure and networking components (including HTTPS TLS certificates) and other teams manage application lifecycle.
## Prerequisites - If you don't have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin. - Before you start, ensure your Azure CLI version is >= `2.30.0`, or [install the latest version](/cli/azure/install-azure-cli).-- An AKS cluster with the Secrets Store CSI Driver configured.-- An Azure Key Vault instance.
+- An [AKS cluster with the Secrets Store CSI Driver configured][aks-cluster-secrets-csi].
+- An [Azure Key Vault instance][aks-akv-instance].
## Generate a TLS certificate
-```bash
-export CERT_NAME=aks-ingress-cert
-openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
- -out aks-ingress-tls.crt \
- -keyout aks-ingress-tls.key \
- -subj "/CN=demo.azure.com/O=aks-ingress-tls"
-```
+- Generate a TLS certificate using the following command.
+
+ ```bash
+ export CERT_NAME=aks-ingress-cert
+ openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
+ -out aks-ingress-tls.crt \
+ -keyout aks-ingress-tls.key \
+ -subj "/CN=demo.azure.com/O=aks-ingress-tls"
+ ```
### Import the certificate to AKV
-```bash
-export AKV_NAME="[YOUR AKV NAME]"
-openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out $CERT_NAME.pfx
-# skip Password prompt
-```
+1. Export the certificate to a PFX file using the following command.
+
+ ```bash
+ export AKV_NAME="[YOUR AKV NAME]"
+ openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out $CERT_NAME.pfx
+ # skip Password prompt
+ ```
+
+2. Import the certificate using the [`az keyvault certificate import`][az-key-vault-certificate-import] command.
-```azurecli-interactive
-az keyvault certificate import --vault-name $AKV_NAME -n $CERT_NAME -f $CERT_NAME.pfx
-```
+ ```azurecli-interactive
+ az keyvault certificate import --vault-name $AKV_NAME -n $CERT_NAME -f $CERT_NAME.pfx
+ ```
## Deploy a SecretProviderClass
-First, create a new namespace:
-
-```bash
-export NAMESPACE=ingress-basic
-```
-
-```azurecli-interactive
-kubectl create namespace $NAMESPACE
-```
-
-Select a [method to provide an access identity][csi-ss-identity-access] and configure your SecretProviderClass YAML accordingly. Additionally:
--- Be sure to use `objectType=secret`, which is the only way to obtain the private key and the certificate from AKV.-- Set `kubernetes.io/tls` as the `type` in your `secretObjects` section.-
-See the following example of what your SecretProviderClass might look like:
-
-```yml
-apiVersion: secrets-store.csi.x-k8s.io/v1
-kind: SecretProviderClass
-metadata:
- name: azure-tls
-spec:
- provider: azure
- secretObjects: # secretObjects defines the desired state of synced K8s secret objects
- - secretName: ingress-tls-csi
- type: kubernetes.io/tls
- data:
- - objectName: $CERT_NAME
- key: tls.key
- - objectName: $CERT_NAME
- key: tls.crt
- parameters:
- usePodIdentity: "false"
- useVMManagedIdentity: "true"
- userAssignedIdentityID: <client id>
- keyvaultName: $AKV_NAME # the name of the AKV instance
- objects: |
- array:
- - |
- objectName: $CERT_NAME
- objectType: secret
- tenantId: $TENANT_ID # the tenant ID of the AKV instance
-```
-
-Apply the SecretProviderClass to your Kubernetes cluster:
-
-```bash
-kubectl apply -f secretProviderClass.yaml -n $NAMESPACE
-```
+1. Export a new namespace using the following command.
+
+ ```bash
+ export NAMESPACE=ingress-basic
+ ```
+
+2. Create the namespace using the `kubectl create namespace` command.
+
+ ```azurecli-interactive
+ kubectl create namespace $NAMESPACE
+ ```
+
+3. Select a [method to provide an access identity][csi-ss-identity-access] and configure your SecretProviderClass YAML accordingly.
+
+ - Be sure to use `objectType=secret`, which is the only way to obtain the private key and the certificate from AKV.
+ - Set `kubernetes.io/tls` as the `type` in your `secretObjects` section.
+
+ See the following example of what your SecretProviderClass might look like:
+
+ ```yml
+ apiVersion: secrets-store.csi.x-k8s.io/v1
+ kind: SecretProviderClass
+ metadata:
+ name: azure-tls
+ spec:
+ provider: azure
+ secretObjects: # secretObjects defines the desired state of synced K8s secret objects
+ - secretName: ingress-tls-csi
+ type: kubernetes.io/tls
+ data:
+ - objectName: $CERT_NAME
+ key: tls.key
+ - objectName: $CERT_NAME
+ key: tls.crt
+ parameters:
+ usePodIdentity: "false"
+ useVMManagedIdentity: "true"
+ userAssignedIdentityID: <client id>
+ keyvaultName: $AKV_NAME # the name of the AKV instance
+ objects: |
+ array:
+ - |
+ objectName: $CERT_NAME
+ objectType: secret
+ tenantId: $TENANT_ID # the tenant ID of the AKV instance
+ ```
+
+4. Apply the SecretProviderClass to your Kubernetes cluster using the `kubectl apply` command.
+
+ ```bash
+ kubectl apply -f secretProviderClass.yaml -n $NAMESPACE
+ ```
## Deploy the ingress controller ### Add the official ingress chart repository
-```bash
-helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
-helm repo update
-```
+- Add the official ingress chart repository using the following `helm` commands.
+
+ ```bash
+ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
+ helm repo update
+ ```
### Configure and deploy the NGINX ingress
-As mentioned above, depending on your scenario, you can choose to bind the certificate to either the application or to the ingress controller. Follow the below instructions according to your selection:
+Depending on your scenario, you can choose to bind the certificate to either the application or to the ingress controller. Follow the below instructions according to your selection:
#### Bind certificate to application
-The applicationΓÇÖs deployment will reference the Secrets Store CSI Driver's Azure Key Vault provider.
+- Bind the certificate to the application using the `helm install` command. The applicationΓÇÖs deployment references the Secrets Store CSI Driver's Azure Key Vault provider.
-```bash
-helm install ingress-nginx/ingress-nginx --generate-name \
- --namespace $NAMESPACE \
- --set controller.replicaCount=2 \
- --set controller.nodeSelector."kubernetes\.io/os"=linux \
- --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
- --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux
-```
+ ```bash
+ helm install ingress-nginx/ingress-nginx --generate-name \
+ --namespace $NAMESPACE \
+ --set controller.replicaCount=2 \
+ --set controller.nodeSelector."kubernetes\.io/os"=linux \
+ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
+ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux
+ ```
#### Bind certificate to ingress controller
-The ingress controllerΓÇÖs deployment will reference the Secrets Store CSI Driver's Azure Key Vault provider.
-
-> [!NOTE]
-> If not using Azure Active Directory (Azure AD) pod-managed identity as your method of access, remove the line with `--set controller.podLabels.aadpodidbinding=$AAD_POD_IDENTITY_NAME`
-
-```bash
-helm install ingress-nginx/ingress-nginx --generate-name \
- --namespace $NAMESPACE \
- --set controller.replicaCount=2 \
- --set controller.nodeSelector."kubernetes\.io/os"=linux \
- --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \
- --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
- --set controller.podLabels.aadpodidbinding=$AAD_POD_IDENTITY_NAME \
- -f - <<EOF
-controller:
- extraVolumes:
- - name: secrets-store-inline
- csi:
- driver: secrets-store.csi.k8s.io
- readOnly: true
- volumeAttributes:
- secretProviderClass: "azure-tls"
- extraVolumeMounts:
- - name: secrets-store-inline
- mountPath: "/mnt/secrets-store"
- readOnly: true
-EOF
-```
-
-Verify the Kubernetes secret has been created:
-
-```bash
-kubectl get secret -n $NAMESPACE
-
-NAME TYPE DATA AGE
-ingress-tls-csi kubernetes.io/tls 2 1m34s
-```
+1. Bind the certificate to the ingress controller using the `helm install` command. The ingress controllerΓÇÖs deployment references the Secrets Store CSI Driver's Azure Key Vault provider.
+
+ > [!NOTE]
+ > If not using Azure Active Directory (Azure AD) pod-managed identity as your method of access, remove the line with `--set controller.podLabels.aadpodidbinding=$AAD_POD_IDENTITY_NAME`
+
+ ```bash
+ helm install ingress-nginx/ingress-nginx --generate-name \
+ --namespace $NAMESPACE \
+ --set controller.replicaCount=2 \
+ --set controller.nodeSelector."kubernetes\.io/os"=linux \
+ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \
+ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
+ --set controller.podLabels.aadpodidbinding=$AAD_POD_IDENTITY_NAME \
+ -f - <<EOF
+ controller:
+ extraVolumes:
+ - name: secrets-store-inline
+ csi:
+ driver: secrets-store.csi.k8s.io
+ readOnly: true
+ volumeAttributes:
+ secretProviderClass: "azure-tls"
+ extraVolumeMounts:
+ - name: secrets-store-inline
+ mountPath: "/mnt/secrets-store"
+ readOnly: true
+ EOF
+ ```
+
+2. Verify the Kubernetes secret was created using the `kubectl get secret` command.
+
+ ```bash
+ kubectl get secret -n $NAMESPACE
+
+ NAME TYPE DATA AGE
+ ingress-tls-csi kubernetes.io/tls 2 1m34s
+ ```
## Deploy the application
-Again, depending on your scenario, the instructions will change slightly. Follow the instructions corresponding to the scenario you've selected so far:
+Again, the instructions change slightly depending on your scenario. Follow the instructions corresponding to the scenario you selected.
### Deploy the application using an application reference
-Create a file named `aks-helloworld-one.yaml` with the following content:
-
-```yml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: aks-helloworld-one
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: aks-helloworld-one
- template:
+1. Create a file named `aks-helloworld-one.yaml` with the following content.
+
+ ```yml
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: aks-helloworld-one
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: aks-helloworld-one
+ template:
+ metadata:
+ labels:
+ app: aks-helloworld-one
+ spec:
+ containers:
+ - name: aks-helloworld-one
+ image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
+ ports:
+ - containerPort: 80
+ env:
+ - name: TITLE
+ value: "Welcome to Azure Kubernetes Service (AKS)"
+ volumeMounts:
+ - name: secrets-store-inline
+ mountPath: "/mnt/secrets-store"
+ readOnly: true
+ volumes:
+ - name: secrets-store-inline
+ csi:
+ driver: secrets-store.csi.k8s.io
+ readOnly: true
+ volumeAttributes:
+ secretProviderClass: "azure-tls"
+
+ apiVersion: v1
+ kind: Service
metadata:
- labels:
+ name: aks-helloworld-one
+ spec:
+ type: ClusterIP
+ ports:
+ - port: 80
+ selector:
app: aks-helloworld-one
+ ```
+
+2. Create a file named `aks-helloworld-two.yaml` with the following content.
+
+ ```yml
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: aks-helloworld-two
spec:
- containers:
- - name: aks-helloworld-one
- image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
- ports:
- - containerPort: 80
- env:
- - name: TITLE
- value: "Welcome to Azure Kubernetes Service (AKS)"
- volumeMounts:
- - name: secrets-store-inline
- mountPath: "/mnt/secrets-store"
- readOnly: true
- volumes:
- - name: secrets-store-inline
- csi:
- driver: secrets-store.csi.k8s.io
- readOnly: true
- volumeAttributes:
- secretProviderClass: "azure-tls"
-
-apiVersion: v1
-kind: Service
-metadata:
- name: aks-helloworld-one
-spec:
- type: ClusterIP
- ports:
- - port: 80
- selector:
- app: aks-helloworld-one
-```
-
-Create a file named `aks-helloworld-two.yaml` with the following content:
-
-```yml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: aks-helloworld-two
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: aks-helloworld-two
- template:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: aks-helloworld-two
+ template:
+ metadata:
+ labels:
+ app: aks-helloworld-two
+ spec:
+ containers:
+ - name: aks-helloworld-two
+ image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
+ ports:
+ - containerPort: 80
+ env:
+ - name: TITLE
+ value: "AKS Ingress Demo"
+ volumeMounts:
+ - name: secrets-store-inline
+ mountPath: "/mnt/secrets-store"
+ readOnly: true
+ volumes:
+ - name: secrets-store-inline
+ csi:
+ driver: secrets-store.csi.k8s.io
+ readOnly: true
+ volumeAttributes:
+ secretProviderClass: "azure-tls"
+
+ apiVersion: v1
+ kind: Service
metadata:
- labels:
- app: aks-helloworld-two
+ name: aks-helloworld-two
spec:
- containers:
- - name: aks-helloworld-two
- image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
- ports:
- - containerPort: 80
- env:
- - name: TITLE
- value: "AKS Ingress Demo"
- volumeMounts:
- - name: secrets-store-inline
- mountPath: "/mnt/secrets-store"
- readOnly: true
- volumes:
- - name: secrets-store-inline
- csi:
- driver: secrets-store.csi.k8s.io
- readOnly: true
- volumeAttributes:
- secretProviderClass: "azure-tls"
-
-apiVersion: v1
-kind: Service
-metadata:
- name: aks-helloworld-two
-spec:
- type: ClusterIP
- ports:
- - port: 80
- selector:
- app: aks-helloworld-two
-```
-
-And apply them to your cluster:
-
-```bash
-kubectl apply -f aks-helloworld-one.yaml -n $NAMESPACE
-kubectl apply -f aks-helloworld-two.yaml -n $NAMESPACE
-```
-
-Verify the Kubernetes secret has been created:
-
-```bash
-kubectl get secret -n $NAMESPACE
-
-NAME TYPE DATA AGE
-ingress-tls-csi kubernetes.io/tls 2 1m34s
-```
+ type: ClusterIP
+ ports:
+ - port: 80
+ selector:
+ app: aks-helloworld-two
+ ```
+
+3. Apply the YAML files to your cluster using the `kubectl apply` command.
+
+ ```bash
+ kubectl apply -f aks-helloworld-one.yaml -n $NAMESPACE
+ kubectl apply -f aks-helloworld-two.yaml -n $NAMESPACE
+ ```
+
+4. Verify the Kubernetes secret was created using the `kubectl get secret` command.
+
+ ```bash
+ kubectl get secret -n $NAMESPACE
+
+ NAME TYPE DATA AGE
+ ingress-tls-csi kubernetes.io/tls 2 1m34s
+ ```
### Deploy the application using an ingress controller reference
-Create a file named `aks-helloworld-one.yaml` with the following content:
-
-```yml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: aks-helloworld-one
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: aks-helloworld-one
- template:
+1. Create a file named `aks-helloworld-one.yaml` with the following content.
+
+ ```yml
+ apiVersion: apps/v1
+ kind: Deployment
metadata:
- labels:
+ name: aks-helloworld-one
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: aks-helloworld-one
+ template:
+ metadata:
+ labels:
+ app: aks-helloworld-one
+ spec:
+ containers:
+ - name: aks-helloworld-one
+ image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
+ ports:
+ - containerPort: 80
+ env:
+ - name: TITLE
+ value: "Welcome to Azure Kubernetes Service (AKS)"
+
+ apiVersion: v1
+ kind: Service
+ metadata:
+ name: aks-helloworld-one
+ spec:
+ type: ClusterIP
+ ports:
+ - port: 80
+ selector:
app: aks-helloworld-one
+ ```
+
+2. Create a file named `aks-helloworld-two.yaml` with the following content.
+
+ ```yml
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: aks-helloworld-two
spec:
- containers:
- - name: aks-helloworld-one
- image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
- ports:
- - containerPort: 80
- env:
- - name: TITLE
- value: "Welcome to Azure Kubernetes Service (AKS)"
-
-apiVersion: v1
-kind: Service
-metadata:
- name: aks-helloworld-one
-spec:
- type: ClusterIP
- ports:
- - port: 80
- selector:
- app: aks-helloworld-one
-```
-
-Create a file named `aks-helloworld-two.yaml` with the following content:
-
-```yml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: aks-helloworld-two
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: aks-helloworld-two
- template:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: aks-helloworld-two
+ template:
+ metadata:
+ labels:
+ app: aks-helloworld-two
+ spec:
+ containers:
+ - name: aks-helloworld-two
+ image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
+ ports:
+ - containerPort: 80
+ env:
+ - name: TITLE
+ value: "AKS Ingress Demo"
+
+ apiVersion: v1
+ kind: Service
metadata:
- labels:
- app: aks-helloworld-two
+ name: aks-helloworld-two
spec:
- containers:
- - name: aks-helloworld-two
- image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
- ports:
- - containerPort: 80
- env:
- - name: TITLE
- value: "AKS Ingress Demo"
-
-apiVersion: v1
-kind: Service
-metadata:
- name: aks-helloworld-two
-spec:
- type: ClusterIP
- ports:
- - port: 80
- selector:
- app: aks-helloworld-two
-```
-
-And apply them to your cluster:
-
-```bash
-kubectl apply -f aks-helloworld-one.yaml -n $NAMESPACE
-kubectl apply -f aks-helloworld-two.yaml -n $NAMESPACE
-```
+ type: ClusterIP
+ ports:
+ - port: 80
+ selector:
+ app: aks-helloworld-two
+ ```
+
+3. Apply the YAML files to your cluster using the `kubectl apply` command.
+
+ ```bash
+ kubectl apply -f aks-helloworld-one.yaml -n $NAMESPACE
+ kubectl apply -f aks-helloworld-two.yaml -n $NAMESPACE
+ ```
## Deploy an ingress resource referencing the secret
-Finally, we can deploy a Kubernetes ingress resource referencing our secret. Create a file name `hello-world-ingress.yaml` with the following content:
-
-```yml
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
- name: ingress-tls
- annotations:
- nginx.ingress.kubernetes.io/rewrite-target: /$2
-spec:
- ingressClassName: nginx
- tls:
- - hosts:
- - demo.azure.com
- secretName: ingress-tls-csi
- rules:
- - host: demo.azure.com
- http:
- paths:
- - path: /hello-world-one(/|$)(.*)
- pathType: Prefix
- backend:
- service:
- name: aks-helloworld-one
- port:
- number: 80
- - path: /hello-world-two(/|$)(.*)
- pathType: Prefix
- backend:
- service:
- name: aks-helloworld-two
- port:
- number: 80
- - path: /(.*)
- pathType: Prefix
- backend:
- service:
- name: aks-helloworld-one
- port:
- number: 80
-```
-
-Make note of the `tls` section referencing the secret we've created earlier, and apply the file to your cluster:
-
-```bash
-kubectl apply -f hello-world-ingress.yaml -n $NAMESPACE
-```
+We can now deploy a Kubernetes ingress resource referencing the secret.
+
+1. Create a file name `hello-world-ingress.yaml` with the following content.
+
+ ```yml
+ apiVersion: networking.k8s.io/v1
+ kind: Ingress
+ metadata:
+ name: ingress-tls
+ annotations:
+ nginx.ingress.kubernetes.io/rewrite-target: /$2
+ spec:
+ ingressClassName: nginx
+ tls:
+ - hosts:
+ - demo.azure.com
+ secretName: ingress-tls-csi
+ rules:
+ - host: demo.azure.com
+ http:
+ paths:
+ - path: /hello-world-one(/|$)(.*)
+ pathType: Prefix
+ backend:
+ service:
+ name: aks-helloworld-one
+ port:
+ number: 80
+ - path: /hello-world-two(/|$)(.*)
+ pathType: Prefix
+ backend:
+ service:
+ name: aks-helloworld-two
+ port:
+ number: 80
+ - path: /(.*)
+ pathType: Prefix
+ backend:
+ service:
+ name: aks-helloworld-one
+ port:
+ number: 80
+ ```
+
+2. Make note of the `tls` section referencing the secret created earlier and apply the file to your cluster using the `kubectl apply` command.
+
+ ```bash
+ kubectl apply -f hello-world-ingress.yaml -n $NAMESPACE
+ ```
## Obtain the external IP address of the ingress controller
-Use `kubectl get service` to obtain the external IP address for the ingress controller.
+- Get the external IP address for the ingress controller using the `kubectl get service` command.
-```bash
-kubectl get service --namespace $NAMESPACE --selector app.kubernetes.io/name=ingress-nginx
+ ```bash
+ kubectl get service --namespace $NAMESPACE --selector app.kubernetes.io/name=ingress-nginx
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-nginx-ingress-1588032400-controller LoadBalancer 10.0.255.157 EXTERNAL_IP 80:31293/TCP,443:31265/TCP 19m
-nginx-ingress-1588032400-default-backend ClusterIP 10.0.223.214 <none> 80/TCP 19m
-```
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ nginx-ingress-1588032400-controller LoadBalancer 10.0.255.157 EXTERNAL_IP 80:31293/TCP,443:31265/TCP 19m
+ nginx-ingress-1588032400-default-backend ClusterIP 10.0.223.214 <none> 80/TCP 19m
+ ```
## Test ingress secured with TLS
-Use `curl` to verify your ingress has been properly configured with TLS. Be sure to use the external IP you've obtained from the previous step:
-
-```bash
-curl -v -k --resolve demo.azure.com:443:EXTERNAL_IP https://demo.azure.com
-```
-
-No additional path was provided with the address, so the ingress controller defaults to the */* route. The first demo application is returned, as shown in the following condensed example output:
-
-```console
-[...]
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <link rel="stylesheet" type="text/css" href="/static/default.css">
- <title>Welcome to Azure Kubernetes Service (AKS)</title>
-[...]
-```
-
-The *-v* parameter in our `curl` command outputs verbose information, including the TLS certificate received. Half-way through your curl output, you can verify that your own TLS certificate was used. The *-k* parameter continues loading the page even though we're using a self-signed certificate. The following example shows that the *issuer: CN=demo.azure.com; O=aks-ingress-tls* certificate was used:
-
-```
-[...]
-* Server certificate:
-* subject: CN=demo.azure.com; O=aks-ingress-tls
-* start date: Oct 22 22:13:54 2021 GMT
-* expire date: Oct 22 22:13:54 2022 GMT
-* issuer: CN=demo.azure.com; O=aks-ingress-tls
-* SSL certificate verify result: self signed certificate (18), continuing anyway.
-[...]
-```
-
-Now add */hello-world-two* path to the address, such as `https://demo.azure.com/hello-world-two`. The second demo application with the custom title is returned, as shown in the following condensed example output:
-
-```
-curl -v -k --resolve demo.azure.com:443:EXTERNAL_IP https://demo.azure.com/hello-world-two
-
-[...]
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <link rel="stylesheet" type="text/css" href="/static/default.css">
- <title>AKS Ingress Demo</title>
-[...]
-```
+1. Verify your ingress is properly configured with TLS using the following `curl` command. Make sure you use the external IP from the previous step.
+
+ ```bash
+ curl -v -k --resolve demo.azure.com:443:EXTERNAL_IP https://demo.azure.com
+ ```
+
+ Since another path wasn't provided with the address, the ingress controller defaults to the */* route. The first demo application is returned, as shown in the following condensed example output:
+
+ ```output
+ [...]
+ <!DOCTYPE html>
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <link rel="stylesheet" type="text/css" href="/static/default.css">
+ <title>Welcome to Azure Kubernetes Service (AKS)</title>
+ [...]
+ ```
+
+ The *-v* parameter in the `curl` command outputs verbose information, including the TLS certificate received. Halfway through your curl output, you can verify your own TLS certificate was used. The *-k* parameter continues loading the page even though we're using a self-signed certificate. The following example shows the *issuer: CN=demo.azure.com; O=aks-ingress-tls* certificate was used:
+
+ ```output
+ [...]
+ * Server certificate:
+ * subject: CN=demo.azure.com; O=aks-ingress-tls
+ * start date: Oct 22 22:13:54 2021 GMT
+ * expire date: Oct 22 22:13:54 2022 GMT
+ * issuer: CN=demo.azure.com; O=aks-ingress-tls
+ * SSL certificate verify result: self signed certificate (18), continuing anyway.
+ [...]
+ ```
+
+2. Add */hello-world-two* path to the address, such as `https://demo.azure.com/hello-world-two`, and verify the second demo application is properly configured.
+
+ ```bash
+ curl -v -k --resolve demo.azure.com:443:EXTERNAL_IP https://demo.azure.com/hello-world-two
+ ```
+
+ The second demo application with the custom title is returned, as shown in the following condensed example output:
+
+ ```output
+ [...]
+ <!DOCTYPE html>
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <link rel="stylesheet" type="text/css" href="/static/default.css">
+ <title>AKS Ingress Demo</title>
+ [...]
+ ```
<!-- LINKS INTERNAL --> [csi-ss-identity-access]: ./csi-secrets-store-identity-access.md
+[aks-cluster-secrets-csi]: ./csi-secrets-store-driver.md
+[aks-akv-instance]: ./csi-secrets-store-driver.md#create-or-use-an-existing-azure-key-vault
+[az-key-vault-certificate-import]: /cli/azure/keyvault/certificate#az-keyvault-certificate-import
+ <!-- LINKS EXTERNAL --> [kubernetes-ingress-tls]: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
aks Faq https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/faq.md
Yes. You can deploy an AKS cluster across one or more [availability zones][avail
Yes. There are two options for limiting access to the API server: - Use [API Server Authorized IP Ranges][api-server-authorized-ip-ranges] if you want to maintain a public endpoint for the API server but restrict access to a set of trusted IP ranges.-- Use [a private cluster][private-clusters] if you want to limit the API server to *only* be accessible from within your virtual network.
+- Use a [private cluster][private-clusters] if you want to limit the API server to *only* be accessible from within your virtual network.
## Can I have different VM sizes in a single cluster?
Yes, you can use different virtual machine sizes in your AKS cluster by creating
## Are security updates applied to AKS agent nodes?
-AKS patches CVEs that have a "vendor fix" every week. CVEs without a fix are waiting on a "vendor fix" before it can be remediated. The AKS images will get automatically updated inside of 30 days. We recommend you apply an updated Node Image on a regular cadence to ensure that latest patched images and OS patches are all applied and current. You can do this using one of the following methods:
+AKS patches CVEs that have a "vendor fix" every week. CVEs without a fix are waiting on a "vendor fix" before it can be remediated. The AKS images are automatically updated inside of 30 days. We recommend you apply an updated Node Image on a regular cadence to ensure that latest patched images and OS patches are all applied and current. You can do this using one of the following methods:
- Manually, through the Azure portal or the Azure CLI. - By upgrading your AKS cluster. The cluster upgrades [cordon and drain nodes][cordon-drain] automatically and then bring a new node online with the latest Ubuntu image and a new patch version or a minor Kubernetes version. For more information, see [Upgrade an AKS cluster][aks-upgrade]. - By using [node image upgrade](node-image-upgrade.md).
-## What is the size limit on a container image in AKS?
+## What's the size limit on a container image in AKS?
-AKS does not set a limit on the container image size. However, it is important to understand that the larger the image, the higher the memory demand. A larger size could potentially exceed resource limits or the overall available memory of worker nodes. By default, memory for VM size Standard_DS2_v2 for an AKS cluster is set to 7 GiB.
+AKS doesn't set a limit on the container image size. However, it's important to understand that the larger the image, the higher the memory demand. A larger size could potentially exceed resource limits or the overall available memory of worker nodes. By default, memory for VM size Standard_DS2_v2 for an AKS cluster is set to 7 GiB.
When a container image is excessively large, as in the Terabyte (TBs) range, kubelet might not be able to pull it from your container registry to a node due to lack of disk space. ### Windows Server nodes
-For Windows Server nodes, Windows Update does not automatically run and apply the latest updates. On a regular schedule around the Windows Update release cycle and your own validation process, you should perform an upgrade on the cluster and the Windows Server node pool(s) in your AKS cluster. This upgrade process creates nodes that run the latest Windows Server image and patches, then removes the older nodes. For more information on this process, see [Upgrade a node pool in AKS][nodepool-upgrade].
+For Windows Server nodes, Windows Update doesn't automatically run and apply the latest updates. On a regular schedule around the Windows Update release cycle and your own validation process, you should perform an upgrade on the cluster and the Windows Server node pool(s) in your AKS cluster. This upgrade process creates nodes that run the latest Windows Server image and patches, then removes the older nodes. For more information on this process, see [Upgrade a node pool in AKS][nodepool-upgrade].
-### Are there security threats targeting AKS that customers should be aware of?
+### Are there security threats targeting AKS that I should be aware of?
-Microsoft provides guidance for other actions you can take to secure your workloads through services like [Microsoft Defender for Containers](../defender-for-cloud/defender-for-containers-introduction.md?tabs=defender-for-container-arch-aks). The following security threat is related to AKS and Kubernetes that customers should be aware of:
+Microsoft provides guidance for other actions you can take to secure your workloads through services like [Microsoft Defender for Containers](../defender-for-cloud/defender-for-containers-introduction.md?tabs=defender-for-container-arch-aks). The following security threat is related to AKS and Kubernetes that you should be aware of:
-* [New large-scale campaign targets Kubeflow](https://techcommunity.microsoft.com/t5/azure-security-center/new-large-scale-campaign-targets-kubeflow/ba-p/2425750) - June 8, 2021
+- [New large-scale campaign targets Kubeflow](https://techcommunity.microsoft.com/t5/azure-security-center/new-large-scale-campaign-targets-kubeflow/ba-p/2425750) (June 8, 2021).
## How does the managed Control Plane communicate with my Nodes?
AKS uses a secure tunnel communication to allow the api-server and individual no
## Why are two resource groups created with AKS?
-AKS builds upon many Azure infrastructure resources, including Virtual Machine Scale Sets, virtual networks, and managed disks, which enables you to apply many of the core capabilities of the Azure platform within the managed Kubernetes environment provided by AKS. For example, most Azure virtual machine types can be used directly with AKS and Azure Reservations can be used to receive discounts on those resources automatically.
+AKS builds upon many Azure infrastructure resources, including Virtual Machine Scale Sets, virtual networks, and managed disks. These integrations enable you to apply many of the core capabilities of the Azure platform within the managed Kubernetes environment provided by AKS. For example, most Azure virtual machine types can be used directly with AKS and Azure Reservations can be used to receive discounts on those resources automatically.
To enable this architecture, each AKS deployment spans two resource groups: 1. You create the first resource group. This group contains only the Kubernetes service resource. The AKS resource provider automatically creates the second resource group during deployment. An example of the second resource group is *MC_myResourceGroup_myAKSCluster_eastus*. For information on how to specify the name of this second resource group, see the next section.
-2. The second resource group, known as the *node resource group*, contains all of the infrastructure resources associated with the cluster. These resources include the Kubernetes node VMs, virtual networking, and storage. By default, the node resource group has a name like *MC_myResourceGroup_myAKSCluster_eastus*. AKS automatically deletes the node resource group whenever the cluster is deleted, so it should only be used for resources that share the cluster's lifecycle.
+2. The second resource group, known as the *node resource group*, contains all of the infrastructure resources associated with the cluster. These resources include the Kubernetes node VMs, virtual networking, and storage. By default, the node resource group has a name like *MC_myResourceGroup_myAKSCluster_eastus*. AKS automatically deletes the node resource group whenever you delete the cluster. You should only use this cluster for resources that share the cluster's lifecycle.
## Can I provide my own name for the AKS node resource group?
-Yes. By default, AKS will name the node resource group *MC_resourcegroupname_clustername_location*, but you can also provide your own name.
+Yes. By default, AKS names the node resource group *MC_resourcegroupname_clustername_location*, but you can also provide your own name.
-To specify your own resource group name, install the [aks-preview][aks-preview-cli] Azure CLI extension version *0.3.2* or later. When you create an AKS cluster by using the [`az aks create`][az-aks-create] command, use the `--node-resource-group` parameter and specify a name for the resource group. If you [use an Azure Resource Manager template][aks-rm-template] to deploy an AKS cluster, you can define the resource group name by using the *nodeResourceGroup* property.
+To specify your own resource group name, install the [aks-preview][aks-preview-cli] Azure CLI extension version *0.3.2* or later. When you create an AKS cluster using the [`az aks create`][az-aks-create] command, use the `--node-resource-group` parameter and specify a name for the resource group. If you use an [Azure Resource Manager template][aks-rm-template] to deploy an AKS cluster, you can define the resource group name using the *nodeResourceGroup* property.
-* The secondary resource group is automatically created by the Azure resource provider in your own subscription.
-* You can specify a custom resource group name only when you're creating the cluster.
+- The Azure resource provider automatically creates the secondary resource group.
+- You can specify a custom resource group name only when you're creating the cluster.
As you work with the node resource group, keep in mind that you can't:
-* Specify an existing resource group for the node resource group.
-* Specify a different subscription for the node resource group.
-* Change the node resource group name after the cluster has been created.
-* Specify names for the managed resources within the node resource group.
-* Modify or delete Azure-created tags of managed resources within the node resource group. (See additional information in the next section.)
+- Specify an existing resource group for the node resource group.
+- Specify a different subscription for the node resource group.
+- Change the node resource group name after the cluster has been created.
+- Specify names for the managed resources within the node resource group.
+- Modify or delete Azure-created tags of managed resources within the node resource group. See additional information in the [next section](#can-i-modify-tags-and-other-properties-of-the-aks-resources-in-the-node-resource-group).
## Can I modify tags and other properties of the AKS resources in the node resource group?
-If you modify or delete Azure-created tags and other resource properties in the node resource group, you could get unexpected results, such as scaling and upgrading errors. AKS allows you to create and modify custom tags created by end users, and you can add those tags when [creating a node pool](use-multiple-node-pools.md#specify-a-taint-label-or-tag-for-a-node-pool). You might want to create or modify custom tags, for example, to assign a business unit or cost center. Another option is to create Azure Policies with a scope on the managed resource group.
+You might get unexpected scaling and upgrading errors if you modify or delete Azure-created tags and other resource properties in the node resource group. AKS allows you to create and modify custom tags created by end users, and you can add those tags when [creating a node pool](use-multiple-node-pools.md#specify-a-taint-label-or-tag-for-a-node-pool). You might want to create or modify custom tags, for example, to assign a business unit or cost center. Another option is to create Azure Policies with a scope on the managed resource group.
However, modifying any **Azure-created tags** on resources under the node resource group in the AKS cluster is an unsupported action, which breaks the service-level objective (SLO). For more information, see [Does AKS offer a service-level agreement?](#does-aks-offer-a-service-level-agreement)
Currently, you can't modify the list of admission controllers in AKS.
## Can I use admission controller webhooks on AKS?
-Yes, you may use admission controller webhooks on AKS. It's recommended you exclude internal AKS namespaces, which are marked with the **control-plane label.** For example:
+Yes, you can use admission controller webhooks on AKS. It's recommended you exclude internal AKS namespaces, which are marked with the **control-plane label.** For example:
```output namespaceSelector:
Windows Server support for node pool includes some limitations that are part of
AKS provides SLA guarantees in the [Standard pricing tier with the Uptime SLA feature][pricing-tiers].
-The Free pricing tier doesn't have an associated Service Level *Agreement*, but has a Service Level *Objective* of 99.5%. Transient connectivity issues are observed if there was an upgrade, unhealthy underlay nodes, platform maintenance, or an application overwhelms the API Server with requests, etc. For mission-critical and production workloads, or if your workload doesn't tolerate API Server restarts, we recommend using the Standard tier, which includes Uptime SLA.
+The Free pricing tier doesn't have an associated Service Level *Agreement*, but has a Service Level *Objective* of 99.5%. Transient connectivity issues are observed if there's an upgrade, unhealthy underlay nodes, platform maintenance, an application overwhelms the API Server with requests, etc. For mission-critical and production workloads, or if your workload doesn't tolerate API Server restarts, we recommend using the Standard tier, which includes Uptime SLA.
## Can I apply Azure reservation discounts to my AKS agent nodes?
-AKS agent nodes are billed as standard Azure virtual machines. If you've purchased [Azure reservations][reservation-discounts] for the VM size that you're using in AKS, those discounts are automatically applied.
+AKS agent nodes are billed as standard Azure virtual machines. If you purchased [Azure reservations][reservation-discounts] for the VM size that you're using in AKS, those discounts are automatically applied.
## Can I move/migrate my cluster between Azure tenants?
Moving or renaming your AKS cluster and its associated resources isn't supported
## Why is my cluster delete taking so long?
-Most clusters are deleted upon user request; in some cases, especially where customers are bringing their own Resource Group, or doing cross-RG tasks deletion can take more time or fail. If you have an issue with deletes, double-check that you do not have locks on the RG, that any resources outside of the RG are disassociated from the RG, and so on.
+Most clusters are deleted upon user request. In some cases, especially cases where you bring your own Resource Group or perform cross-RG tasks, deletion can take more time or even fail. If you have an issue with deletes, double-check that you don't have locks on the RG, that any resources outside of the RG are disassociated from the RG, and so on.
## Can I restore my cluster after deleting it?
-No, you're unable to restore your cluster after deleting it. When you delete your cluster, the associated resource group and all its resources will also be deleted. If you want to keep any of your resources, move them to another resource group before deleting your cluster. If you have the **Owner** or **User Access Administrator** built-in role, you can lock Azure resources to protect them from accidental deletions and modifications. For more information, see [Lock your resources to protect your infrastructure][lock-azure-resources].
+No, you're unable to restore your cluster after deleting it. When you delete your cluster, the associated resource group and all its resources are deleted. If you want to keep any of your resources, move them to another resource group before deleting your cluster. If you have the **Owner** or **User Access Administrator** built-in role, you can lock Azure resources to protect them from accidental deletions and modifications. For more information, see [Lock your resources to protect your infrastructure][lock-azure-resources].
## What is platform support, and what does it include?
-Platform support is a reduced support plan for unsupported "N-3" version clusters. Platform support only includes Azure infrastructure support. Platform support does not include anything related to Kubernetes functionality and components, cluster or node pool creation, hotfixes, bug fixes, security patches, retired components, etc. See [platform support policy][supported-kubernetes-versions] for additional restrictions.
+Platform support is a reduced support plan for unsupported "N-3" version clusters. Platform support only includes Azure infrastructure support. Platform support doesn't include anything related to the following:
-AKS relies on the releases and patches from [Kubernetes](https://kubernetes.io/releases/), which is an Open Source project that only supports a sliding window of 3 minor versions. AKS can only guarantee [full support](./supported-kubernetes-versions.md#kubernetes-version-support-policy) while those versions are being serviced upstream. Since there's no more patches being produced upstream, AKS can either leave those versions unpatched or fork. Due to this limitation, platform support will not support anything from relying on kubernetes upstream.
+- Kubernetes functionality and components
+- Cluster or node pool creation
+- Hotfixes
+- Bug fixes
+- Security patches
+- Retired components
-## Will AKS automatically upgrade my unsupported clusters?
+For more information on restrictions, see the [platform support policy][supported-kubernetes-versions].
-AKS will initiate auto-upgrades for unsupported clusters. When a cluster in an n-3 version (where n is the latest supported AKS GA minor version) is about to drop to n-4, AKS will automatically upgrade the cluster to n-2 to remain in an AKS support [policy][supported-kubernetes-versions]. Automatically upgrading a platform supported cluster to a supported version is enabled by default.
+AKS relies on the releases and patches from [Kubernetes](https://kubernetes.io/releases/), which is an Open Source project that only supports a sliding window of *three* minor versions. AKS can only guarantee [full support](./supported-kubernetes-versions.md#kubernetes-version-support-policy) while those versions are being serviced upstream. Since there's no more patches being produced upstream, AKS can either leave those versions unpatched or fork. Due to this limitation, platform support doesn't support anything from relying on kubernetes upstream.
-For example, kubernetes v1.25 will be upgraded to v1.26 during the v1.29 GA release. To minimize disruptions, set up [maintenance windows][planned-maintenance]. See [auto-upgrade][auto-upgrade-cluster] for details on automatic upgrade channels.
+## Does AKS automatically upgrade my unsupported clusters?
+
+AKS initiates auto-upgrades for unsupported clusters. When a cluster in an n-3 version (where n is the latest supported AKS GA minor version) is about to drop to n-4, AKS automatically upgrades the cluster to n-2 to remain in an AKS support [policy][supported-kubernetes-versions]. Automatically upgrading a platform supported cluster to a supported version is enabled by default.
+
+For example, kubernetes v1.25 upgrades to v1.26 during the v1.29 GA release. To minimize disruptions, set up [maintenance windows][planned-maintenance]. See [auto-upgrade][auto-upgrade-cluster] for details on automatic upgrade channels.
## If I have pod / deployments in state 'NodeLost' or 'Unknown' can I still upgrade my cluster?
-You can, but we don't recommend it. Upgrades should be performed when the state of the cluster is known and healthy.
+You can, but we don't recommend it. You should perform updates when the state of the cluster is known and healthy.
## If I have a cluster with one or more nodes in an Unhealthy state or shut down, can I perform an upgrade?
-No, delete/remove any nodes in a failed state or otherwise removed from the cluster prior to upgrading.
+No, delete/remove any nodes in a failed state or otherwise from the cluster before upgrading.
## I ran a cluster delete, but see the error `[Errno 11001] getaddrinfo failed`
-Most commonly, this is caused by users having one or more Network Security Groups (NSGs) still in use and associated with the cluster. Remove them and attempt the delete again.
+Most commonly, this error arises if you have one or more Network Security Groups (NSGs) still in use that are associated with the cluster. Remove them and attempt the delete again.
## I ran an upgrade, but now my pods are in crash loops, and readiness probes fail?
-Confirm your service principal hasn't expired. See: [AKS service principal](./kubernetes-service-principal.md) and [AKS update credentials](./update-credentials.md).
+Confirm your service principal hasn't expired. See: [AKS service principal](./kubernetes-service-principal.md) and [AKS update credentials](./update-credentials.md).
## My cluster was working, but suddenly can't provision LoadBalancers, mount PVCs, etc.?
-Confirm your service principal hasn't expired. See: [AKS service principal](./kubernetes-service-principal.md) and [AKS update credentials](./update-credentials.md).
+Confirm your service principal hasn't expired. See: [AKS service principal](./kubernetes-service-principal.md) and [AKS update credentials](./update-credentials.md).
## Can I scale my AKS cluster to zero? You can completely [stop a running AKS cluster](start-stop-cluster.md), saving on the respective compute costs. Additionally, you may also choose to [scale or autoscale all or specific `User` node pools](scale-cluster.md#scale-user-node-pools-to-0) to 0, maintaining only the necessary cluster configuration.+ You can't directly scale [system node pools](use-system-pools.md) to zero. ## Can I use the Virtual Machine Scale Set APIs to scale manually?
No, scale operations by using the Virtual Machine Scale Set APIs aren't supporte
## Can I use Virtual Machine Scale Sets to manually scale to zero nodes?
-No, scale operations by using the Virtual Machine Scale Set APIs aren't supported. You can use the AKS API to scale to zero non-system node pools or [stop your cluster](start-stop-cluster.md) instead.
+No, scale operations by using the Virtual Machine Scale Set APIs aren't supported. You can use the AKS API to scale to zero nonsystem node pools or [stop your cluster](start-stop-cluster.md) instead.
## Can I stop or de-allocate all my VMs?
-While AKS has resilience mechanisms to withstand such a config and recover from it, this isn't a supported configuration. [Stop your cluster](start-stop-cluster.md) instead.
+While AKS has resilience mechanisms to withstand such a config and recover from it, it isn't a supported configuration. [Stop your cluster](start-stop-cluster.md) instead.
## Can I use custom VM extensions?
The following images have functional requirements to "Run as Root" and exception
## What is Azure CNI Transparent Mode vs. Bridge Mode?
-Starting with version 1.2.0, Azure CNI sets Transparent mode as default for single tenancy Linux CNI deployments. Transparent mode is replacing bridge mode. In this section, we will discuss more about the differences about both modes and what are the benefits/limitation for using Transparent mode in Azure CNI.
+Starting with version 1.2.0, Azure CNI sets Transparent mode as default for single tenancy Linux CNI deployments. Transparent mode is replacing bridge mode. In the following [Bridge mode](#bridge-mode) and [Transparent mode](#transparent-mode) sections, we discuss more about the differences between both modes and the benefits and limitations for Transparent mode in Azure CNI.
### Bridge mode
-As the name suggests, bridge mode Azure CNI, in a "just in time" fashion, will create an L2 bridge named "azure0". All the host side pod `veth` pair interfaces will be connected to this bridge. So Pod-Pod intra VM communication and the remaining traffic goes through this bridge. The bridge in question is a layer 2 virtual device that on its own cannot receive or transmit anything unless you bind one or more real devices to it. For this reason, eth0 of the Linux VM has to be converted into a subordinate to "azure0" bridge. This creates a complex network topology within the Linux VM and as a symptom CNI had to take care of other networking functions like DNS server update and so on.
+Azure CNI Bridge mode creates an L2 bridge named "azure0" in a "just in time" fashion. All the host side pod `veth` pair interfaces are connected to this bridge. Pod-Pod intra VM communication and the remaining traffic go through this bridge. The bridge is a layer 2 virtual device that on its own can't receive or transmit anything unless you bind one or more real devices to it. For this reason, eth0 of the Linux VM has to be converted into a subordinate to "azure0" bridge, which creates a complex network topology within the Linux VM. As a symptom, CNI had to handle other networking functions, such as DNS server updates.
:::image type="content" source="media/faq/bridge-mode.png" alt-text="Bridge mode topology":::
-The following example shows what the ip route setup looks like in Bridge mode. Regardless of how many pods the node has, there will only ever be two routes. The first one saying, all traffic excluding local on azure0 will go to the default gateway of the subnet through the interface with ip "src 10.240.0.4" (which is Node primary IP) and the second one saying "10.20.x.x" Pod space to kernel for kernel to decide.
+The following example shows what the ip route setup looks like in Bridge mode. Regardless of how many pods the node has, there are only ever two routes. The first one route says traffic (excluding local on azure0) goes to the default gateway of the subnet through the interface with ip "src 10.240.0.4", which is Node primary IP. The second one says "10.20.x.x" Pod space to kernel for kernel to decide.
```output default via 10.240.0.1 dev azure0 proto dhcp src 10.240.0.4 metric 100
root@k8s-agentpool1-20465682-1:/#
### Transparent mode
-Transparent mode takes a straight forward approach to setting up Linux networking. In this mode, Azure CNI won't change any properties of eth0 interface in the Linux VM. This minimal approach of changing the Linux networking properties helps reduce complex corner case issues that clusters could face with Bridge mode. In Transparent Mode, Azure CNI will create and add host-side pod `veth` pair interfaces that will be added to the host network. Intra VM Pod-to-Pod communication is through ip routes that the CNI will add. Essentially Pod-to-Pod communication is over layer 3 and pod traffic is routed by L3 routing rules.
+Transparent mode takes a straightforward approach to setting up Linux networking. In this mode, Azure CNI doesn't change any properties of eth0 interface in the Linux VM. This approach of changing the Linux networking properties helps reduce complex corner case issues that clusters might face with Bridge mode. In Transparent mode, Azure CNI creates and adds host-side pod `veth` pair interfaces that are added to the host network. Intra VM Pod-to-Pod communication is through ip routes added by the CNI. Essentially, Pod-to-Pod communication is over layer 3 and L3 routing rules route pod traffic.
:::image type="content" source="media/faq/transparent-mode.png" alt-text="Transparent mode topology":::
-The following example shows a ip route setup of transparent mode. Each Pod's interface will get a static route attached so that traffic with dest IP as the Pod will be sent directly to the Pod's host side `veth` pair interface.
+The following example shows an ip route setup of Transparent mode. Each Pod's interface gets a static route attached so traffic with dest IP as the Pod is sent directly to the Pod's host side `veth` pair interface.
```output 10.240.0.216 dev azv79d05038592 proto static
The following example shows a ip route setup of transparent mode. Each Pod's int
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown ```
-### Benefits of transparent mode
+### Benefits of Transparent mode
- Provides mitigation for `conntrack` DNS parallel race condition and avoidance of 5-sec DNS latency issues without the need to set up node local DNS (you may still use node local DNS for performance reasons). - Eliminates the initial 5-sec DNS latency CNI bridge mode introduces today due to "just in time" bridge setup.-- One of the corner cases in bridge mode is that the Azure CNI can't keep updating the custom DNS server lists users add to either VNET or NIC. This results in the CNI picking up only the first instance of the DNS server list. Solved in Transparent mode as CNI doesn't change any eth0 properties. See more [here](https://github.com/Azure/azure-container-networking/issues/713).-- Provides better handling of UDP traffic and mitigation for UDP flood storm when ARP times out. In bridge mode, when bridge doesn't know a MAC address of destination pod in intra-VM Pod-to-Pod communication, by design, this results in storm of the packet to all ports. Solved in Transparent mode as there are no L2 devices in path. See more [here](https://github.com/Azure/azure-container-networking/issues/704).-- Transparent mode performs better in Intra VM Pod-to-Pod communication in terms of throughput and latency when compared to bridge mode.
+- One of the corner cases in Bridge mode is that the Azure CNI can't keep updating the custom DNS server lists users add to either VNET or NIC. This scenario results in the CNI picking up only the first instance of the DNS server list. This issue is resolved in Transparent mode, as CNI doesn't change any eth0 properties. See more [here](https://github.com/Azure/azure-container-networking/issues/713).
+- Provides better handling of UDP traffic and mitigation for UDP flood storm when ARP times out. In Bridge mode, when bridge doesn't know a MAC address of destination pod in intra-VM Pod-to-Pod communication, by design, it results in storm of the packet to all ports. This issue is resolved in Transparent mode, as there are no L2 devices in path. See more [here](https://github.com/Azure/azure-container-networking/issues/704).
+- Transparent mode performs better in Intra VM Pod-to-Pod communication in terms of throughput and latency when compared to Bridge mode.
-## How to avoid permission ownership setting slow issues when the volume has a lot of files?
+## How to avoid permission ownership setting slow issues when the volume has numerous files?
-Traditionally if your pod is running as a non-root user (which you should), you must specify a `fsGroup` inside the podΓÇÖs security context so that the volume can be readable and writable by the Pod. This requirement is covered in more detail in [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
+Traditionally if your pod is running as a nonroot user (which you should), you must specify a `fsGroup` inside the podΓÇÖs security context so the volume can be readable and writable by the Pod. This requirement is covered in more detail in [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).
-But one side-effect of setting `fsGroup` is that, each time a volume is mounted, Kubernetes must recursively `chown()` and `chmod()` all the files and directories inside the volume - with a few exceptions noted below. This happens even if group ownership of the volume already matches the requested `fsGroup`, and can be expensive for larger volumes with lots of small files, which causes pod startup to take a long time. This scenario has been a known problem before v1.20, and the workaround is setting the Pod run as root:
+A side effect of setting `fsGroup` is that each time a volume is mounted, Kubernetes must recursively `chown()` and `chmod()` all the files and directories inside the volume (with a few exceptions noted below). This scenario happens even if group ownership of the volume already matches the requested `fsGroup`. It can be expensive for larger volumes with lots of small files, which can cause pod startup to take a long time. This scenario has been a known problem before v1.20, and the workaround is setting the Pod run as root:
```yaml apiVersion: v1
AKS nodes run the "chrony" service, which pulls time from the localhost. Contai
## How are AKS addons updated?
-Any patch, including security patches, is automatically applied to the AKS cluster. Anything bigger than a patch, like major or minor version changes (which can have breaking changes to your deployed objects), is updated when you update your cluster if a new release is available. You can find when a new release is available by visiting the [AKS release notes](https://github.com/Azure/AKS/releases).
+Any patch, including a security patch, is automatically applied to the AKS cluster. Anything bigger than a patch, like major or minor version changes (which can have breaking changes to your deployed objects), is updated when you update your cluster if a new release is available. You can find when a new release is available by visiting the [AKS release notes](https://github.com/Azure/AKS/releases).
-## What is the purpose of the AKS Linux Extension I see installed on my Linux VMSS instances?
+## What is the purpose of the AKS Linux Extension I see installed on my Linux Virtual Machine Scale Sets instances?
-The AKS Linux Extension is an Azure VM extension whose purpose is to install and configure monitoring tools on Kubernetes worker nodes. The extension is installed on all new and existing Linux nodes. It configures the following monitoring tools:
+The AKS Linux Extension is an Azure VM extension that installs and configures monitoring tools on Kubernetes worker nodes. The extension is installed on all new and existing Linux nodes. It configures the following monitoring tools:
-- [Node-exporter](https://github.com/prometheus/node_exporter): collects hardware telemetry from the virtual machine and makes it available using a metrics endpoint. These metrics are then able to be scraped by a monitoring tool such as Prometheus.-- [Node-problem-detector](https://github.com/kubernetes/node-problem-detector): aims to make various node problems visible to upstream layers in the cluster management stack. It is a systemd unit that runs on each node, detects node problems, and reports them to the clusterΓÇÖs API server using Events and NodeConditions.-- [Local-gadget](https://www.inspektor-gadget.io/docs/latest/local-gadget/): uses in-kernel eBPF helper programs to monitor events mainly related to syscalls from userspace programs in a pod.
+- [Node-exporter](https://github.com/prometheus/node_exporter): Collects hardware telemetry from the virtual machine and makes it available using a metrics endpoint. Then, a monitoring tool, such as Prometheus, is able to scrap these metrics.
+- [Node-problem-detector](https://github.com/kubernetes/node-problem-detector): Aims to make various node problems visible to upstream layers in the cluster management stack. It's a systemd unit that runs on each node, detects node problems, and reports them to the clusterΓÇÖs API server using Events and NodeConditions.
+- [Local-gadget](https://inspektor-gadget.io/docs/v0.16.0): Uses in-kernel eBPF helper programs to monitor events related to syscalls from userspace programs in a pod.
-These tools assist in providing observability around many node health related problems such as:
+These tools help provide observability around many node health related problems, such as:
- Infrastructure daemon issues: NTP service down-- Hardware issues: Bad CPU, memory or disk
+- Hardware issues: Bad CPU, memory, or disk
- Kernel issues: Kernel deadlock, corrupted file system-- Container runtime issues: Unresponsive runtime daemon
+- Container runtime issues: Unresponsive runtime daemon
-The extension **does not** require any additional outbound access to any URLs, IP addresses, or ports beyond the [documented AKS egress requirements](./limit-egress-traffic.md). It does not require any special permissions granted in Azure. It uses kubeconfig to connect to the API server to send the monitoring data collected.
+The extension **doesn't require additional outbound access** to any URLs, IP addresses, or ports beyond the [documented AKS egress requirements](./limit-egress-traffic.md). It doesn't require any special permissions granted in Azure. It uses kubeconfig to connect to the API server to send the monitoring data collected.
<!-- LINKS - internal --> [aks-upgrade]: ./upgrade-cluster.md [auto-upgrade-cluster]: ./auto-upgrade-cluster.md [planned-maintenance]: ./planned-maintenance.md
-[aks-cluster-autoscale]: ./cluster-autoscaler.md
-[aks-advanced-networking]: ./configure-azure-cni.md
-[aks-rbac-aad]: ./azure-ad-integration-cli.md
-[node-updates-kured]: node-updates-kured.md
[aks-preview-cli]: /cli/azure/aks [az-aks-create]: /cli/azure/aks#az-aks-create [aks-rm-template]: /azure/templates/microsoft.containerservice/2022-09-01/managedclusters
-[aks-cluster-autoscaler]: cluster-autoscaler.md
[nodepool-upgrade]: use-multiple-node-pools.md#upgrade-a-node-pool
-[aks-windows-cli]: windows-container-cli.md
[aks-windows-limitations]: ./windows-faq.md [reservation-discounts]:../cost-management-billing/reservations/save-compute-costs-reservations.md [api-server-authorized-ip-ranges]: ./api-server-authorized-ip-ranges.md
The extension **does not** require any additional outbound access to any URLs, I
[private-clusters]: ./private-clusters.md [supported-kubernetes-versions]: ./supported-kubernetes-versions.md [bcdr-bestpractices]: ./operator-best-practices-multi-region.md#plan-for-multiregion-deployment
-[availability-zones]: ./availability-zones.md
[az-regions]: ../availability-zones/az-region.md [pricing-tiers]: ./free-standard-pricing-tiers.md [aks-keyvault-provider]: ./csi-secrets-store-driver.md <!-- LINKS - external --> [aks-regions]: https://azure.microsoft.com/global-infrastructure/services/?products=kubernetes-service
-[auto-scaler]: https://github.com/kubernetes/autoscaler
[cordon-drain]: https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/ [admission-controllers]: https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/
-[private-clusters-github-issue]: https://github.com/Azure/AKS/issues/948
-[csi-driver]: https://github.com/Azure/secrets-store-csi-driver-provider-azure
-[vm-sla]: https://azure.microsoft.com/support/legal/sla/virtual-machines/
[lock-azure-resources]: ../azure-resource-manager/management/lock-resources.md
aks Keda About https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/keda-about.md
Title: Kubernetes Event-driven Autoscaling (KEDA) (Preview)
description: Simplified application autoscaling with Kubernetes Event-driven Autoscaling (KEDA) add-on. Previously updated : 05/24/2022 Last updated : 06/06/2023
aks Quick Kubernetes Deploy Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/learn/quick-kubernetes-deploy-portal.md
This quickstart assumes a basic understanding of Kubernetes concepts. For more i
1. Sign in to the [Azure portal](https://portal.azure.com). 1. On the Azure portal menu or from the **Home** page, select **Create a resource**.
-1. Select **Containers** > **Kubernetes Service**.
+1. In the **Categories** section, select **Containers** > **Azure Kubernetes Service (AKS)**.
1. On the **Basics** page, configure the following options: - **Project details**: * Select an Azure **Subscription**.
- * Select or create an Azure **Resource group**, such as *myResourceGroup*.
+ * Create an Azure **Resource group**, such as *myResourceGroup*. While you can select an existing resource group, for testing or evaluation purposes, we recommend creating a resource group to temporarily host these resources and avoid impacting your production or development workloads.
- **Cluster details**:
- * Ensure the **Preset configuration** is *Standard ($$)*. For more details on preset configurations, see [Cluster configuration presets in the Azure portal][preset-config].
+ * Ensure that the **Preset configuration** is *Standard ($$)*. For more details on preset configurations, see [Cluster configuration presets in the Azure portal][preset-config].
* Enter a **Kubernetes cluster name**, such as *myAKSCluster*. * Select a **Region** for the AKS cluster, and leave the default value selected for **Kubernetes version**.
- * Select **99.5%** for **API server availability**.
- **Primary node pool**: * Leave the default values selected.
This quickstart assumes a basic understanding of Kubernetes concepts. For more i
> :::image type="content" source="media/quick-kubernetes-deploy-portal/cluster-preset-options.png" alt-text="Screenshot of Create AKS cluster - portal preset options."::: 1. Select **Next: Node pools** when complete.
-1. Keep the default **Node pools** options. At the bottom of the screen, click **Next: Access**.
+1. On the **Node pools** page, leave the default options and then select **Next: Access**.
1. On the **Access** page, configure the following options:
- - The default value for **Resource identity** is **System-assigned managed identity**. Managed identities provide an identity for applications to use when connecting to resources that support Azure Active Directory (Azure AD) authentication. For more details about managed identities, see [What are managed identities for Azure resources?](../../active-directory/managed-identities-azure-resources/overview.md).
+ - The default value for **Resource identity** is **System-assigned managed identity**. Managed identities provide an identity for applications to use when connecting to resources that support Azure Active Directory (Azure AD) authentication. For more details about managed identities, see [What are managed identities for Azure resources?](../../active-directory/managed-identities-azure-resources/overview.md)
- The Kubernetes role-based access control (RBAC) option is the default value to provide more fine-grained control over access to the Kubernetes resources deployed in your AKS cluster.
- By default, *Basic* networking is used, and [Container insights](../../azure-monitor/containers/container-insights-overview.md) is enabled.
- 1. Select **Next: Networking** when complete.
-1. Keep the default **Networking** options. At the bottom of the screen, click **Next: Integrations**.
-1. On the **Integrations** page, if you want to enable the [recommended out-of-the-box alerts](../../azure-monitor/alerts/alerts-overview.md#recommended-alert-rules) for AKS clusters, select **Enable recommended alert rules**. You can see the list of alerts that are automatically enabled if you select this option.
-1. Click **Review + create**. When you navigate to the **Review + create** tab, Azure runs validation on the settings that you have chosen. If validation passes, you can proceed to create the AKS cluster by selecting **Create**. If validation fails, then it indicates which settings need to be modified.
+
+1. Keep the default **Networking** options, which uses the kubenet networking plug-in, and then select **Next: Integrations**.
+1. Keep the default **Integrations** options and then select **Next: Advanced**.
+1. Keep the default **Advanced** options and then select **Next: Tags**.
+1. On the tags page, leave the default option and then select **Next: Review + create**.
+1. When you navigate to the **Review + create** tab, Azure runs validation on the settings that you have chosen. If validation passes, you can proceed to create the AKS cluster by selecting **Create**. If validation fails, then it indicates which settings need to be modified.
1. It takes a few minutes to create the AKS cluster. When your deployment is complete, navigate to your resource by either: * Selecting **Go to resource**, or * Browsing to the AKS cluster resource group and selecting the AKS resource. In this example you browse for *myResourceGroup* and select the resource *myAKSCluster*.
- :::image type="content" source="media/quick-kubernetes-deploy-portal/aks-portal-dashboard.png" alt-text="Screenshot of AKS dashboard in the Azure portal.":::
- ## Connect to the cluster To manage a Kubernetes cluster, use the Kubernetes command-line client, [kubectl][kubectl]. `kubectl` is already installed if you use Azure Cloud Shell. If you're unfamiliar with the Cloud Shell, review [Overview of Azure Cloud Shell](../../cloud-shell/overview.md).
To manage a Kubernetes cluster, use the Kubernetes command-line client, [kubectl
Output shows the single node created in the previous steps. Make sure the node status is *Ready*: ```output
- NAME STATUS ROLES AGE VERSION
- aks-agentpool-12345678-vmss000000 Ready agent 23m v1.19.11
- aks-agentpool-12345678-vmss000001 Ready agent 24m v1.19.11
+ NAME STATUS ROLES AGE VERSION
+ aks-agentpool-87331340-vmss000000 Ready agent 8m53s v1.25.6
+ aks-agentpool-87331340-vmss000001 Ready agent 8m51s v1.25.6
+ aks-agentpool-87331340-vmss000002 Ready agent 8m57s v1.25.6
``` ## Deploy the application
aks Node Problem Detector https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/node-problem-detector.md
+
+ Title: Node Problem Detector (NPD) in Azure Kubernetes Service (AKS) nodes
+description: Learn about how AKS uses Node Problem detector to expose issues with the node.
+ 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 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 |
+| | | |
+|CustomPluginMonitor| FilesystemCorruptionProblem | FilesystemCorruptionDetected |
+|CustomPluginMonitor| KubeletProblem | KubeletIsDown |
+|CustomPluginMonitor| ContainerRuntimeProblem | ContainerRuntimeIsDown |
+|CustomPluginMonitor| VMEventScheduled | VMEventScheduled |
+|CustomPluginMonitor| FrequentUnregisterNetDevice | UnregisterNetDevice|
+|CustomPluginMonitor|FrequentKubeletRestart|FrequentKubeletRestart|
+|CustomPluginMonitor|FrequentContainerdRestart|FrequentContainerdRestart|
+|CustomPluginMonitor|FrequentDockerRestart|FrequentDockerRestart|
+|SystemLogMonitor|KernelDeadlock|DockerHung|
+|SystemLogMonitor|ReadonlyFilesystem |FilesystemIsReadOnly|
+
+## Events
+In few temporary scenarios, Events are emitted with relevant information to be able to diagnose the underlying issue.
+
+|Problem Daemon type| Reason |
+|||
+|CustomPluginMonitor|FilesystemCorruptionDetected|
+|CustomPluginMonitor|KubeletIsDown|
+|CustomPluginMonitor|ContainerRuntimeIsDown|
+|CustomPluginMonitor|FreezeScheduled|
+|CustomPluginMonitor|RebootScheduled|
+|CustomPluginMonitor|RedeployScheduled|
+|CustomPluginMonitor|TerminateScheduled|
+|CustomPluginMonitor|PreemptScheduled|
+|CustomPluginMonitor|DNSProblem|
+|CustomPluginMonitor|PodIPProblem|
+|SystemLogMonitor|OOMKilling|
+|SystemLogMonitor|TaskHung|
+|SystemLogMonitor|UnregisterNetDevice|
+|SystemLogMonitor| KernelOops|
+|SystemLogMonitor| DockerSocketCannotConnect|
+|SystemLogMonitor| KubeletRPCDeadlineExceeded|
+|SystemLogMonitor|KubeletRPCNoSuchContainer|
+|SystemLogMonitor|CNICannotStatFS|
+|SystemLogMonitor|PLEGUnhealthy|
+|SystemLogMonitor|KubeletStart|
+|SystemLogMonitor|DockerStart|
+|SystemLogMonitor|ContainerdStart|
+
+## Check the node conditions and events
+ ```azurecli-interactive
+ kubectl describe node my-aks-node
+```
+The output is clipped to only show the relevant parts
+```output
+...
+...
+
+Conditions:
+ Type Status LastHeartbeatTime LastTransitionTime Reason Message
+ - -- -
+ VMEventScheduled False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoVMEventScheduled VM has no scheduled event
+ FrequentContainerdRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentContainerdRestart containerd is functioning properly
+ FrequentDockerRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentDockerRestart docker is functioning properly
+ FilesystemCorruptionProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsOK Filesystem is healthy
+ FrequentUnregisterNetDevice False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentUnregisterNetDevice node is functioning properly
+ ContainerRuntimeProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:40 +0000 ContainerRuntimeIsUp container runtime service is up
+ KernelDeadlock False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KernelHasNoDeadlock kernel has no deadlock
+ FrequentKubeletRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentKubeletRestart kubelet is functioning properly
+ KubeletProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KubeletIsUp kubelet service is up
+ ReadonlyFilesystem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsNotReadOnly Filesystem is not read-only
+ NetworkUnavailable False Thu, 01 Jun 2023 03:58:39 +0000 Thu, 01 Jun 2023 03:58:39 +0000 RouteCreated RouteController created a route
+ MemoryPressure True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 19:16:50 +0000 KubeletHasInsufficientMemory kubelet has insufficient memory available
+ DiskPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
+ PIDPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
+ Ready True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:23 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled
+...
+...
+...
+Events:
+ Type Reason Age From Message
+ - - - -
+ Normal NodeHasSufficientMemory 94s (x176 over 15h) kubelet Node aks-agentpool-40622340-vmss000009 status is now: NodeHasSufficientMemory
+
+```
+These events are also available in [Container Insights](/azure/azure-monitor/containers/container-insights-overview) through [KubeEvents](/azure/azure-monitor/reference/tables/kubeevents).
aks Tutorial Kubernetes Scale https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/tutorial-kubernetes-scale.md
Kubernetes supports [horizontal pod autoscaling][kubernetes-hpa] to adjust the n
> **Example installation**: > > ```console
-> kubectl apply -f https://github.com/kubernetes-sigs metrics-server/releases/download/v0.3.6/components.yaml
+> kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
> ``` To use the autoscaler, all containers and pods must have defined CPU requests and limits. In the `azure-vote-front` deployment, the *front-end* container requests 0.25 CPU with a limit of 0.5 CPU.
aks Use Managed Identity https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/use-managed-identity.md
AKS uses several managed identities for built-in services and add-ons.
az aks update -g myResourceGroup -n myManagedCluster --enable-managed-identity ```
-After updating your cluster, the control plane and pods use the managed identity. kubelet continues using a service principal until you upgrade your agentpool. You can use the `az aks nodepool upgrade --node-image-only` command on your nodes to update to a managed identity. A node pool upgrade causes downtime for your AKS cluster as the nodes in the node pools are cordoned/drained and reimaged.
+After updating your cluster, the control plane and pods use the managed identity. kubelet continues using a service principal until you upgrade your agentpool. You can use the `az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only` command on your nodes to update to a managed identity. A node pool upgrade causes downtime for your AKS cluster as the nodes in the node pools are cordoned/drained and reimaged.
> [!NOTE] >
After updating your cluster, the control plane and pods use the managed identity
> > * The Azure CLI ensures your addon's permission is correctly set after migrating. If you're not using the Azure CLI to perform the migrating operation, you need to handle the addon identity's permission by yourself. For an example using an Azure Resource Manager (ARM) template, see [Assign Azure roles using ARM templates](../role-based-access-control/role-assignments-template.md). >
-> * If your cluster was using `--attach-acr` to pull from images from Azure Container Registry, you need to run the `az aks update --attach-acr <ACR resource ID>` command after updating your cluster to let the newly-created kubelet used for managed identity get the permission to pull from ACR. Otherwise, you won't be able to pull from ACR after the update.
+> * If your cluster was using `--attach-acr` to pull from images from Azure Container Registry, you need to run the `az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID>` command after updating your cluster to let the newly-created kubelet used for managed identity get the permission to pull from ACR. Otherwise, you won't be able to pull from ACR after the update.
## Add role assignment for control plane identity
Now you can create your AKS cluster with your existing identities. Make sure to
> Updating kubelet managed identity upgrades node pools, which causes downtime for your AKS cluster as the nodes in the node pools will be cordoned/drained and reimaged. > [!NOTE]
-> If your cluster was using `--attach-acr` to pull from images from Azure Container Registry, you need to run the `az aks update --attach-acr <ACR Resource ID>` command after updating your cluster to let the newly-created kubelet used for managed identity get the permission to pull from ACR. Otherwise, you won't be able to pull from ACR after the upgrade.
+> If your cluster was using `--attach-acr` to pull from images from Azure Container Registry, you need to run the `az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID>` command after updating your cluster to let the newly-created kubelet used for managed identity get the permission to pull from ACR. Otherwise, you won't be able to pull from ACR after the upgrade.
#### Make sure your CLI version is updated
api-management Api Management Howto App Insights https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/api-management-howto-app-insights.md
na Previously updated : 04/03/2023 Last updated : 06/02/2023
Application Insights receives:
You can emit [custom metrics](../azure-monitor/essentials/metrics-custom-overview.md) to Application Insights from your API Management instance. API Management emits custom metrics using the [emit-metric](emit-metric-policy.md) policy. > [!NOTE]
-> Custom metrics are a preview feature of Azure Monitor and subject to limitations.
+> Custom metrics are a [preview feature](../azure-monitor/essentials/metrics-custom-overview.md) of Azure Monitor and subject to [limitations](../azure-monitor/essentials/metrics-custom-overview.md#design-limitations-and-considerations).
To emit custom metrics, perform the following configuration steps.
To emit custom metrics, perform the following configuration steps.
1. Ensure that the Application Insights logger is configured at the scope you intend to emit custom metrics (either all APIs, or a single API). For more information, see [Enable Application Insights logging for your API](#enable-application-insights-logging-for-your-api), earlier in this article. 1. Configure the `emit-metric` policy at a scope where Application Insights logging is configured (either all APIs, or a single API) and is enabled for custom metrics. For policy details, see the [`emit-metric`](emit-metric-policy.md) policy reference.
+### Limits for custom metrics
+
+Azure Monitor imposes [usage limits](../azure-monitor/essentials/metrics-custom-overview.md#quotas-and-limits) for custom metrics that may affect your ability to emit metrics from API Management. For example, Azure Monitor currently sets a limit of 10 dimension keys per metric, and a limit of 50,000 total active time series per region in a subscription (within a 12 hour period).
+
+These limits have the following implications for configuring custom metrics in API Management:
+
+* You can configure a maximum of 10 custom dimensions per `emit-metric` policy.
+
+* The number of active time series generated by the `emit-metric` policy within a 12 hour period is the product of the number of unique values of each configured dimension during the period. For example, if three custom dimensions were configured in the policy, and each dimension had 10 possible values within the period, the `emit-metric` policy would contribute 1,000 (10 x 10 x 10) active time series.
+
+* If you configure the `emit-metric` policy in multiple API Management instances that are in the same region in a subscription, all instances can contribute to the regional active time series limit.
+ ## Performance implications and log sampling > [!WARNING]
api-management Emit Metric Policy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/emit-metric-policy.md
Previously updated : 12/08/2022 Last updated : 06/02/2023 + # Emit custom metrics
The `emit-metric` policy sends custom metrics in the specified format to Applica
- [**Policy scopes:**](./api-management-howto-policies.md#scopes) global, workspace, product, API, operation - [**Gateways:**](api-management-gateways-overview.md) dedicated, consumption, self-hosted
+### Usage notes
+
+* You can configure at most 10 custom dimensions for this policy.
+
+* Invoking the `emit-metric` policy counts toward the usage limits for custom metrics per region in a subscription. [Learn more](api-management-howto-app-insights.md#limits-for-custom-metrics)
+ ## Example The following example sends a custom metric to count the number of API requests along with user ID, client IP, and API ID as custom dimensions.
api-management High Availability https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/api-management/high-availability.md
API Management supports the following key service capabilities that are recommen
Azure [availability zones](../reliability/availability-zones-overview.md) are physically separate locations within an Azure region that are tolerant to datacenter-level failures. Each zone is composed of one or more datacenters equipped with independent power, cooling, and networking infrastructure. To ensure resiliency, a minimum of three separate availability zones are present in all availability zone-enabled regions.
-Enabling [zone redundancy](../reliability/migrate-api-mgt.md) for an API Management instance in a supported region provides redundancy for all [service components](api-management-key-concepts.md#api-management-components): gateway, management plane, and developer portal. Azure automatically replicates all service components across the zones that you select.
+Enabling [zone redundancy](../reliability/migrate-api-mgt.md) for an API Management instance in a supported region provides redundancy for all [service components](api-management-key-concepts.md#api-management-components): gateway, management plane, and developer portal. Azure automatically replicates all service components across the zones that you select. Zone redundancy is only available in the Premium SKU.
When you enable zone redundancy in a region, consider the number of API Management scale [units](upgrade-and-scale.md) that need to be distributed. Minimally, configure the same number of units as the number of availability zones, or a multiple so that the units are distributed evenly across the zones. For example, if you select 3 availability zones in a region, you could have 3 units so that each zone hosts one unit.
app-service Configure Language Java https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/configure-language-java.md
Azure App Service supports out of the box tuning and customization through the A
- [Add a CDN](../cdn/cdn-add-to-web-app.md) - [Configure the Kudu site](https://github.com/projectkudu/kudu/wiki/Configurable-settings#linux-on-app-service-settings)
+### Copy App Content Locally
+
+Set the app setting `JAVA_COPY_ALL` to `true` to copy your app contents to the local worker from the shared file system. This helps address file-locking issues.
+ ### Set Java runtime options To set allocated memory or other JVM runtime options, create an [app setting](configure-common.md#configure-app-settings) named `JAVA_OPTS` with the options. App Service passes this setting as an environment variable to the Java runtime when it starts.
app-service Deploy Azure Pipelines https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/deploy-azure-pipelines.md
Learn more about [Azure Pipelines ecosystem support](/azure/devops/pipelines/eco
1. Go to **Pipelines**, and then select **New Pipeline**.
-1. Walk through the steps of the wizard by first selecting **GitHub** as the location of your source code.
+1. When prompted, select the location of your source code: either **Azure Repos Git** or **GitHub**.
-1. You might be redirected to GitHub to sign in. If so, enter your GitHub credentials.
+ You might be redirected to GitHub to sign in. If so, enter your GitHub credentials.
1. When the list of repositories appears, select your repository. 1. You might be redirected to GitHub to install the Azure Pipelines app. If so, select **Approve & install**.
-1. When the **Configure** tab appears, select **ASP.NET Core**.
+1. When the **Configure** tab appears, select **ASP.NET Core**.
1. When your new pipeline appears, take a look at the YAML to see what it does. When you're ready, select **Save and run**.
app-service Monitor Instances Health Check https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/monitor-instances-health-check.md
# Monitor App Service instances using Health check
-This article uses Health check in the Azure portal to monitor App Service instances. Health check increases your application's availability by rerouting requests away from unhealthy instances, and replacing instances if they remain unhealthy. Your [App Service plan](./overview-hosting-plans.md) should be scaled to two or more instances to fully utilize Health check. The Health check path should check critical components of your application. For example, if your application depends on a database and a messaging system, the Health check endpoint should connect to those components. If the application can't connect to a critical component, then the path should return a 500-level response code to indicate the app is unhealthy. Also, if the path does not return a response within 1 minute the health check ping is considered unhealthy.
+This article uses Health check in the Azure portal to monitor App Service instances. Health check increases your application's availability by rerouting requests away from unhealthy instances and replacing instances if they remain unhealthy. It does that by pinging every minute a path of your web application of your choice.
![Health check failure][1]
+Please note that _/api/health_ is just an example added for illustration purposes. You should make sure that the path you are selecting is a valid path and we do not create a healthcheck path by default but it needs to exist for your application.
+ ## What App Service does with Health checks - When given a path on your app, Health check pings this path on all instances of your App Service app at 1-minute intervals.
This article uses Health check in the Azure portal to monitor App Service instan
>- At most one instance will be replaced per hour, with a maximum of three instances per day per App Service Plan. >- If your health check is giving the status `Waiting for health check response` then the check is likely failing due to an HTTP status code of 307, which can happen if you have HTTPS redirect enabled but have `HTTPS Only` disabled.
-## Enable Health Check
+## Enable Health check
+
+![Health check navigation in Azure portal][3]
-![Health check navigation in Azure Portal][3]
+1. To enable Health check, browse to the Azure portal and select your App Service app.
+2. Under **Monitoring**, select **Health check**.
+3. Select **Enable** and provide a valid URL path on your application, such as `/health` or `/api/health`.
+4. Select **Save**.
-- To enable Health check, browse to the Azure portal and select your App Service app.-- Under **Monitoring**, select **Health check**.-- Select **Enable** and provide a valid URL path on your application, such as `/health` or `/api/health`.-- Select **Save**.
+> [!NOTE]
+> - Your [App Service plan](./overview-hosting-plans.md) should be scaled to two or more instances to fully utilize Health check. The Health check path should check critical components of your application. For example, if your application depends on a database and a messaging system, the Health check endpoint should connect to those components. If the application can't connect to a critical component, then the path should return a 500-level response code to indicate the app is unhealthy. Also, if the path does not return a response within 1 minute, the health check ping is considered unhealthy.
+> - When selecting the Health check path, make sure you're selecting a path that returns 200 status code only when the app is fully warmed up.
> [!CAUTION] > Health check configuration changes restart your app. To minimize impact to production apps, we recommend [configuring staging slots](deploy-staging-slots.md) and swapping to production.
After providing your application's Health check path, you can monitor the health
## Limitations - Health check can be enabled for **Free** and **Shared** App Service Plans so you can have metrics on the site's health and setup alerts, but because **Free** and **Shared** sites can't scale out, any unhealthy instances won't be replaced. You should scale up to the **Basic** tier or higher so you can scale out to 2 or more instances and utilize the full benefit of Health check. This is recommended for production-facing applications as it will increase your app's availability and performance.
+- The App Service plan can have a maximum of one unhealthy instance replaced per hour and, at most, three instances per day.
+- There's a limit of replaced instances we have per scale unit, and its value is reset once at 12h.
## Frequently Asked Questions
Imagine you have two applications (or one app with a slot) with Health check ena
In the scenario where all instances of your application are unhealthy, App Service will remove instances from the load balancer up to the percentage specified in `WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT`. In this scenario, taking all unhealthy app instances out of the load balancer rotation would effectively cause an outage for your application.
-### Does Health Check work on App Service Environments?
+### Does Health check work on App Service Environments?
Yes, health check is available for the App Service Environment v3, but not for versions 1 or 2. If you are using the older versions of the App Service Environment, you can use the [migration feature](environment/migrate.md) to migrate your App Service Environment to version 3.
app-service Overview Managed Identity https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/overview-managed-identity.md
This article shows you how to create a managed identity for App Service and Azur
[!INCLUDE [app-service-managed-identities](../../includes/app-service-managed-identities.md)]
+The managed identity configuration is specific to the slot. To configure a managed identity for a deployment slot in the portal, navigate to the slot first. To find the managed identity for your web app or deployment slot in your Azure Active Directory tenant from the Azure portal, search for it directly from the **Overview** page of your tenant. Usually, the slot name is similar to `<app name>/slots/<slot name>`.
+ ## Add a system-assigned identity # [Azure portal](#tab/portal)
This article shows you how to create a managed identity for App Service and Azur
![Screenshot that shows where to switch Status to On and then select Save.](media/app-service-managed-service-identity/system-assigned-managed-identity-in-azure-portal.png) -
-> [!NOTE]
-> To find the managed identity for your web app or slot app in the Azure portal, under **Enterprise applications**, look in the **User settings** section. Usually, the slot name is similar to `<app name>/slots/<slot name>`.
-- # [Azure CLI](#tab/cli) Run the `az webapp identity assign` command to create a system-assigned identity:
app-service Reference App Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/reference-app-settings.md
The following environment variables are related to [hybrid connections](app-serv
| `WEBSITE_VNET_ROUTE_ALL` | By default, if you use [regional VNet Integration](./overview-vnet-integration.md#regional-virtual-network-integration), your app only routes RFC1918 traffic into your VNet. Set to `1` to route all outbound traffic into your VNet and be subject to the same NSGs and UDRs. The setting lets you access non-RFC1918 endpoints through your VNet, secure all outbound traffic leaving your app, and force tunnel all outbound traffic to a network appliance of your own choosing. | | `WEBSITE_PRIVATE_IP` | Read-only. IP address associated with the app when [integrated with a VNet](./overview-vnet-integration.md). For Regional VNet Integration, the value is an IP from the address range of the delegated subnet, and for Gateway-required VNet Integration, the value is an IP from the address range of the point-to-site address pool configured on the Virtual Network Gateway. This IP is used by the app to connect to the resources through the VNet. Also, it can change within the described address range. | | `WEBSITE_PRIVATE_PORTS` | Read-only. In VNet integration, shows which ports are useable by the app to communicate with other nodes. |
+| `WEBSITE_CONTENTOVERVNET` | If you are mounting an Azure File Share on the App Service and the Storage account is restricted to a VNET, ensure to enable this setting with a value of `1`. |
<!-- | WEBSITE_SLOT_POLL_WORKER_FOR_CHANGE_NOTIFICATION | Poll worker before pinging the site to detect when change notification has been processed. | WEBSITE_SPECIAL_CACHE
app-service Reference Dangling Subdomain Prevention https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/reference-dangling-subdomain-prevention.md
The risks of subdomain takeover include:
Learn more about Subdomain Takeover at [Dangling DNS and subdomain takeover](../security/fundamentals/subdomain-takeover.md). Azure App Service provides [Name Reservation Service](#how-app-service-prevents-subdomain-takeovers) and [domain verification tokens](#how-you-can-prevent-subdomain-takeovers) to prevent subdomain takeovers.
-## How App Service prevents subdomain takeovers
-Upon deletion of an App Service app or App Service Environment (ASE), the corresponding DNS is reserved. During the reservation period, reuse of the DNS is forbidden except for subscriptions belonging to tenant of the subscription originally owning the DNS.
+## How App Service prevents subdomain takeovers
-After the reservation expires, the DNS is free to be claimed by any subscription. By Name Reservation Service, the customer is afforded some time to either clean-up any associations/pointers to said DNS or reclaim the DNS in Azure. The DNS name being reserved for web apps can be derived by appending 'azurewebsites.net' and for ASE can be derived by appending 'appserviceenvironment.net'. Name Reservation Service is enabled by default on Azure App Service and doesn't require more configuration.
+Upon deletion of an App Service app or App Service Environment (ASE), immediate reuse of the corresponding DNS is forbidden except for subscriptions belonging to the tenant of the subscription that originally owned the DNS. Thus, the customer is afforded some time to either clean-up any associations/pointers to the said DNS or reclaim the DNS in Azure by recreating the resource with the same name. This behavior is enabled by default on Azure App Service for "\*.azurewebsites.net" and "\*.appserviceenvironment.net" resources, so it doesn't require any customer configuration.
#### Example scenario
-Subscription 'A' and subscription 'B' are the only subscriptions belonging to tenant 'AB'. Subscription 'A' contains an App Service app 'test' with DNS name 'test'.azurewebsites.net'. Upon deletion of the app, a reservation is taken on DNS name 'test.azurewebsites.net'.
-
-During the reservation period, only subscription 'A' or subscription 'B' will be able to claim the DNS name 'test.azurewebsites.net' by creating a web app named 'test'. No other subscriptions will be allowed to claim it. After the reservation period is complete, any subscription in Azure can now claim 'test.azurewebsites.net'.
-
+Subscription 'A' and subscription 'B' are the only subscriptions belonging to tenant 'AB'. Subscription 'A' contains an App Service web app 'test' with DNS name 'test'.azurewebsites.net'. Upon deletion of the app, only subscription 'A' or subscription 'B' will be able to immediately reuse the DNS name 'test.azurewebsites.net' by creating a web app named 'test'. No other subscriptions will be allowed to claim the name right after the resource deletion.
## How you can prevent subdomain takeovers
These records prevent the creation of another App Service app using the same nam
DNS records should be updated before the site deletion to ensure bad actors can't take over the domain between the period of deletion and re-creation.
-To get a domain verification ID, see the [Map a custom domain tutorial](app-service-web-tutorial-custom-domain.md)
+To get a domain verification ID, see the [Map a custom domain tutorial](app-service-web-tutorial-custom-domain.md)
application-gateway Private Link Configure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/application-gateway/private-link-configure.md
Title: Configure Azure Application Gateway Private Link (preview)
+ Title: Configure Azure Application Gateway Private Link
description: This article shows you how to configure Application Gateway Private Link. Previously updated : 05/09/2022 Last updated : 06/06/2022
-# Configure Azure Application Gateway Private Link (preview)
+# Configure Azure Application Gateway Private Link
Application Gateway Private Link allows you to connect your workloads over a private connection spanning across VNets and subscriptions. For more information, see [Application Gateway Private Link](private-link.md). :::image type="content" source="media/private-link/private-link.png" alt-text="Diagram showing Application Gateway Private Link":::
-> [!IMPORTANT]
-> Azure Application Gateway Private Link is currently in [public preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
- ## Configuration options Application Gateway Private Link can be configured via multiple options, such as, but not limited to, the Azure portal, Azure PowerShell, and Azure CLI.
Application Gateway Private Link can be configured via multiple options, such as
**Define a subnet for Private Link Configuration**
-To enable Private Link Configuration, a subnet, different from the Application Gateway subnet, is required for the private link IP configuration. Private Link must use a subnet that doesn't contain any Application Gateways. Subnet sizing can be determined by the number of connections required for your deployment. Each IP address allocated to this subnet ensures 64-K concurrent TCP connections that can be established via Private Link at single point in time. Allocate more IP addresses to allow more connections via Private Link. For example: `n * 64K`; where `n` is the number of IP addresses being provisioned.
+To enable Private Link Configuration, a subnet, different from the Application Gateway subnet, is required for the private link IP configuration. Private Link must use a subnet that doesn't contain any Application Gateways. Subnet sizing is determined by the number of connections required for your deployment. Each IP address allocated to this subnet ensures 64-K concurrent TCP connections that can be established via Private Link at single point in time. Allocate more IP addresses to allow more connections via Private Link. For example: `n * 64K`; where `n` is the number of IP addresses being provisioned.
> [!Note] > The maximum number of IP addresses per private link configuration is eight. Only dynamic allocation is supported.
-The following steps can be completed to create a new subnet:
+Complete the following steps to create a new subnet:
[Add, change, or delete a virtual network subnet](../virtual-network/virtual-network-manage-subnet.md#add-a-subnet)
The Private link configuration defines the infrastructure used by Application Ga
- **Frontend IP Configuration**: The frontend IP address that private link should forward traffic to on Application Gateway. - **Private IP address settings**: specify at least one IP address 1. Select **Add**.
-1. Within your **Application Gateways** properties blade, obtain and make a note of the **Resource ID**, you will require this if setting up a Private Endpoint within a different Azure AD tenant
+1. Within your **Application Gateways** properties blade, obtain and make a note of the **Resource ID**, this is required if you are setting up a Private Endpoint within a different Azure AD tenant.
**Configure Private Endpoint**
-A private endpoint is a network interface that uses a private IP address from the virtual network containing clients wishing to connect to your Application Gateway. Each of the clients will use the private IP address of the Private Endpoint to tunnel traffic to the Application Gateway. To create a private endpoint, complete the following steps:
+A private endpoint is a network interface that uses a private IP address from the virtual network containing clients wishing to connect to your Application Gateway. Each of the clients uses the private IP address of the Private Endpoint to tunnel traffic to the Application Gateway. To create a private endpoint, complete the following steps:
1. Select the **Private endpoint connections** tab. 1. Select **Create**.
A private endpoint is a network interface that uses a private IP address from th
# [Azure PowerShell](#tab/powershell)
-To configure Private link on an existing Application Gateway via Azure PowerShell, the following commands can be referenced:
+To configure Private link on an existing Application Gateway via Azure PowerShell, use following commands:
```azurepowershell # Disable Private Link Service Network Policies
$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "AppGW-PL-
## Create private endpoint New-AzPrivateEndpoint -Name "AppGWPrivateEndpoint" -ResourceGroupName $vnet_plendpoint.ResourceGroupName -Location $vnet_plendpoint.Location -Subnet ($vnet_plendpoint | Select -ExpandProperty subnets | Where-Object {$_.Name -eq 'MySubnet'}) -PrivateLinkServiceConnection $privateEndpointConnection ```
-A list of all Azure PowerShell references for Private Link Configuration on Application Gateway can be found here:
+The following is a list of all Azure PowerShell references for Private Link Configuration on Application Gateway:
- [Get-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/get-azapplicationgatewayprivatelinkconfiguration) - [New-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/new-azapplicationgatewayprivatelinkconfiguration) - [New-AzApplicationGatewayPrivateLinkIpConfiguration](/powershell/module/az.network/new-azapplicationgatewayprivatelinkipconfiguration)
A list of all Azure PowerShell references for Private Link Configuration on Appl
# [Azure CLI](#tab/cli)
-To configure Private link on an existing Application Gateway via Azure CLI, the following commands can be referenced:
+To configure Private link on an existing Application Gateway via Azure CLI, use following commands:
```azurecli # Disable Private Link Service Network Policies
az network private-endpoint create \
--connection-name AppGW-PL-Connection ```
-A list of all Azure CLI references for Private Link Configuration on Application Gateway can be found here: [Azure CLI CLI - Private Link](/cli/azure/network/application-gateway/private-link)
+A list of all Azure CLI references for Private Link Configuration on Application Gateway is available here: [Azure CLI CLI - Private Link](/cli/azure/network/application-gateway/private-link)
application-gateway Private Link https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/application-gateway/private-link.md
Title: Azure Application Gateway Private Link (preview)
+ Title: Azure Application Gateway Private Link
description: This article is an overview of Application Gateway Private Link. Previously updated : 11/02/2022 Last updated : 06/06/2023
-# Application Gateway Private Link (preview)
+# Application Gateway Private Link
Today, you can deploy your critical workloads securely behind Application Gateway, gaining the flexibility of Layer 7 load balancing features. Access to the backend workloads is possible in two ways: - Public IP address - your workloads are accessible over the Internet. - Private IP address- your workloads are accessible privately via your virtual network / connected networks
-Private Link for Application Gateway allows you to connect workloads over a private connection spanning across VNets and subscriptions. When configured, a private endpoint will be placed into a defined virtual network's subnet, providing a private IP address for clients looking to communicate to the gateway. For a list of other PaaS services that support Private Link functionality, see [What is Azure Private Link?](../private-link/private-link-overview.md).
+Private Link for Application Gateway allows you to connect workloads over a private connection spanning across VNets and subscriptions. When configured, a private endpoint is placed into a defined virtual network's subnet, providing a private IP address for clients looking to communicate to the gateway. For a list of other PaaS services that support Private Link functionality, see [What is Azure Private Link?](../private-link/private-link-overview.md).
:::image type="content" source="media/private-link/private-link.png" alt-text="Diagram showing Application Gateway Private Link":::
-> [!IMPORTANT]
-> Azure Application Gateway Private Link is currently in [public preview](https://azure.microsoft.com/support/legal/preview-supplemental-terms/).
- ## Features and capabilities Private Link allows you to extend private connectivity to Application Gateway via a Private Endpoint in the following scenarios:
Four components are required to implement Private Link with Application Gateway:
- Application Gateway Private Link Configuration
- A Private link configuration can be associated with an Application Gateway Frontend IP address, which can then be used to establish a connection using a Private Endpoint. If there's no association to an Application Gateway frontend IP address, then the Private Link feature won't be enabled.
+ A Private link configuration can be associated with an Application Gateway Frontend IP address, which is then used to establish a connection using a Private Endpoint. If there's no association to an Application Gateway frontend IP address, then the Private Link feature isn't enabled.
- Application Gateway Frontend IP address
Four components are required to implement Private Link with Application Gateway:
- Private Endpoint
- An Azure network resource that allocates a private IP address in your VNet address space. It's used to connect to the Application Gateway via the private IP address similar to many other Azure Services like Storage, KeyVault, etc., that provide private link access.
+ An Azure network resource that allocates a private IP address in your VNet address space. It's used to connect to the Application Gateway via the private IP address similar to many other Azure Services that provide private link access; for example, Storage and KeyVault.
- Private Endpoint Connection
- A connection on Application Gateway originated by Private Endpoints. You can auto-approve, manually approve, or reject connections to grant or deny access.
+ A connection on Application Gateway originated by Private Endpoints. You can autoapprove, manually approve, or reject connections to grant or deny access.
## Limitations - API version 2020-03-01 or later should be used to configure Private Link configurations. - Static IP allocation method in the Private Link Configuration object isn't supported.-- The subnet used for PrivateLinkConfiguration cannot be same as the Application Gateway subnet.
+- The subnet used for PrivateLinkConfiguration can't be same as the Application Gateway subnet.
- Private link configuration for Application Gateway doesn't expose the "Alias" property and must be referenced via resource URI.-- Private Endpoint creation doesn't create a \*.privatelink DNS record/zone. All DNS records should be entered in existing zones used for your Application Gateway.-- Azure Front Door and Application Gateway do not support chaining via Private Link.-- Source IP address and x-forwarded-for headers will contain the Private link IP addresses
+- Private Endpoint creation doesn't create a \*.privatelink DNS record or zone. All DNS records should be entered in existing zones used for your Application Gateway.
+- Azure Front Door and Application Gateway don't support chaining via Private Link.
+- Private Link Configuration for Application Gateway has an idle timeout of ~5 minutes (300 seconds). To avoid hitting this limit, applications connecting through private endpoints to Application Gateway must use TCP keepalive intervals of less than 300 seconds.
## Next steps
applied-ai-services Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/applied-ai-services/form-recognizer/whats-new.md
Form Recognizer service is updated on an ongoing basis. Bookmark this page to st
* [🆕 Form Recognizer Overview](overview.md?view=form-recog-3.0.0&preserve-view=true) has enhanced navigation, structured access points, and enriched images.
-* [🆕 Choose a Form Recognizer model](choose-model-feature.md?view=form-recog-3.0.0&preserve-view=true) is now a standalone that provides guidance for choosing the best Form Recognizer solution for your projects and workflows.
+* [🆕 Choose a Form Recognizer model](choose-model-feature.md?view=form-recog-3.0.0&preserve-view=true) provides guidance for choosing the best Form Recognizer solution for your projects and workflows.
## April 2023
Form Recognizer service is updated on an ongoing basis. Bookmark this page to st
## August 2020
-* **Form Recognizer v2.1-preview.1 has been released and includes the following features:
+* **Form Recognizer `v2.1-preview.1` has been released and includes the following features:
* **REST API reference is available** - View the [`v2.1-preview.1 reference`](https://westus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v2-1/operations/AnalyzeBusinessCardAsync) * **New languages supported In addition to English**, the following [languages](language-support.md) are now supported: for `Layout` and `Train Custom Model`: English (`en`), Chinese (Simplified) (`zh-Hans`), Dutch (`nl`), French (`fr`), German (`de`), Italian (`it`), Portuguese (`pt`) and Spanish (`es`).
azure-arc Troubleshoot Resource Bridge https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/resource-bridge/troubleshoot-resource-bridge.md
To resolve this problem, delete the resource bridge, register the providers, the
1. Register the providers: ```azurecli
- az provider register --namespace Microsoft.ExtendedLocation ΓÇôwait
- az provider register --namespace Microsoft.ResourceConnector ΓÇôwait
+ az provider register --namespace Microsoft.ExtendedLocation ΓÇô-wait
+ az provider register --namespace Microsoft.ResourceConnector ΓÇô-wait
``` 1. Redeploy the resource bridge.
azure-arc Agent Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/agent-overview.md
Title: Overview of the Azure Connected Machine agent
-description: This article provides a detailed overview of the Azure Arc-enabled servers agent available, which supports monitoring virtual machines hosted in hybrid environments.
+description: This article provides a detailed overview of the Azure Connected Machine agent, which supports monitoring virtual machines hosted in hybrid environments.
Last updated 05/12/2023
The Azure Connected Machine agent enables you to manage your Windows and Linux m
## Agent components The Azure Connected Machine agent package contains several logical components bundled together:
We provide several options for deploying the agent. For more information, see [P
## Next steps * To begin evaluating Azure Arc-enabled servers, see [Quickstart: Connect hybrid machines with Azure Arc-enabled servers](learn/quick-enable-hybrid-vm.md).
-* Before you deploy the Azure Arc-enabled servers agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).
+* Before you deploy the Azure Connected Machine agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).
* Review troubleshooting information in the [agent connection issues troubleshooting guide](troubleshoot-agent-onboard.md).
azure-arc Agent Release Notes Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/agent-release-notes-archive.md
Title: Archive for What's new with Azure Arc-enabled servers agent
+ Title: Archive for What's new with Azure Connected Machine agent
description: Release notes for Azure Connected Machine agent versions older than six months Last updated 05/08/2023
-# Archive for What's new with Azure Arc-enabled servers agent
+# Archive for What's new with Azure Connected Machine agent
-The primary [What's new in Azure Arc-enabled servers agent?](agent-release-notes.md) article contains updates for the last six months, while this article contains all the older information.
+The primary [What's new in Azure Connected Machine agent?](agent-release-notes.md) article contains updates for the last six months, while this article contains all the older information.
The Azure Connected Machine agent receives improvements on an ongoing basis. This article provides you with information about:
azure-arc Agent Release Notes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/agent-release-notes.md
Title: What's new with Azure Arc-enabled servers agent
-description: This article has release notes for Azure Arc-enabled servers agent. For many of the summarized issues, there are links to more details.
+ Title: What's new with Azure Connected Machine agent
+description: This article has release notes for Azure Connected Machine agent. For many of the summarized issues, there are links to more details.
Last updated 05/08/2023
-# What's new with Azure Arc-enabled servers agent
+# What's new with Azure Connected Machine agent
The Azure Connected Machine agent receives improvements on an ongoing basis. To stay up to date with the most recent developments, this article provides you with information about:
The Azure Connected Machine agent receives improvements on an ongoing basis. To
- Known issues - Bug fixes
-This page is updated 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 with Azure Arc-enabled servers agent](agent-release-notes-archive.md).
+This page is updated 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 with Azure Connected Machine agent](agent-release-notes-archive.md).
## Version 1.30 - May 2023
azure-arc Azcmagent Connect https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/azcmagent-connect.md
Identifies the mechanism being used to connect the server to Azure Arc. For exam
`--ignore-network-check`
-Instructs the agent to continue onboarding even if the network check for required endpoints fails. You should only use this option if you're sure that the network check results are incorrect. In most cases, a failed network check indicates that the Arc agent won't function correctly on the server.
+Instructs the agent to continue onboarding even if the network check for required endpoints fails. You should only use this option if you're sure that the network check results are incorrect. In most cases, a failed network check indicates that the Azure Connected Machine agent won't function correctly on the server.
`-l`, `--location`
azure-arc Azcmagent https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/azcmagent.md
Last updated 04/20/2023
The Azure Connected Machine agent command line tool, azcmagent, helps you configure, manage, and troubleshoot a server's connection with Azure Arc. The azcmagent CLI is installed with the Azure Connected Machine agent and controls actions specific to the server where it's running. Once the server is connected to Azure Arc, you can use the [Azure CLI](/cli/azure/connectedmachine) or [Azure PowerShell](/powershell/module/az.connectedmachine/) module to enable extensions, manage tags, and perform other operations on the server resource.
-Unless otherwise specified, the command syntax and flags represent available options in the most recent release of the Azure Connected Machine agent. For more information, see [What's new with the Azure Arc-enabled servers agent](agent-release-notes.md).
+Unless otherwise specified, the command syntax and flags represent available options in the most recent release of the Azure Connected Machine agent. For more information, see [What's new with the Azure Connected Machine agent](agent-release-notes.md).
## Commands
azure-arc Tutorial Assign Policy Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/learn/tutorial-assign-policy-portal.md
Follow the steps below to create a policy assignment and assign the policy defin
For a partial list of available built-in policies, see [Azure Policy samples](../../../governance/policy/samples/index.md). 1. Search through the policy definitions list to find the _\[Preview]: Log Analytics extension should be installed on your Windows Azure Arc machines_
- definition (if you have enabled the Arc-enabled servers agent on a Windows-based machine). For a Linux-based machine, find the corresponding _\[Preview]: Log Analytics extension should be installed on your Linux Azure Arc machines_ policy definition. Click on that policy and click **Select**.
+ definition (if you have enabled the Azure Connected Machine agent on a Windows-based machine). For a Linux-based machine, find the corresponding _\[Preview]: Log Analytics extension should be installed on your Linux Azure Arc machines_ policy definition. Click on that policy and click **Select**.
1. The **Assignment name** is automatically populated with the policy name you selected, but you can change it. For this example, leave the policy name as is, and don't change any of the remaining options on the page.
azure-arc Manage Agent https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/manage-agent.md
Title: Managing the Azure Arc-enabled servers agent
+ Title: Managing the Azure Connected Machine agent
description: This article describes the different management tasks that you will typically perform during the lifecycle of the Azure Connected Machine agent. Last updated 05/04/2023
azure-arc Network Requirements https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/network-requirements.md
This topic describes the networking requirements for using the Connected Machine
## Next steps * Review additional [prerequisites for deploying the Connected Machine agent](prerequisites.md).
-* Before you deploy the Azure Arc-enabled servers agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).
+* Before you deploy the Azure Connected Machine agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).
* To resolve problems, review the [agent connection issues troubleshooting guide](troubleshoot-agent-onboard.md). * For a complete list of network requirements for Azure Arc features and Azure Arc-enabled services, see [Azure Arc network requirements (Consolidated)](../network-requirements-consolidated.md).
azure-arc Plan Evaluate On Azure Virtual Machine https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/plan-evaluate-on-azure-virtual-machine.md
While you cannot install Azure Arc-enabled servers on an Azure VM for production
To start managing your Azure VM as an Azure Arc-enabled server, you need to make the following changes to the Azure VM before you can install and configure Azure Arc-enabled servers.
-1. Remove any VM extensions deployed to the Azure VM, such as the Log Analytics agent. While Azure Arc-enabled servers support many of the same extensions as Azure VMs, the Azure Arc-enabled servers agent can't manage VM extensions already deployed to the VM.
+1. Remove any VM extensions deployed to the Azure VM, such as the Log Analytics agent. While Azure Arc-enabled servers support many of the same extensions as Azure VMs, the Azure Connected Machine agent can't manage VM extensions already deployed to the VM.
2. Disable the Azure Windows or Linux Guest Agent. The Azure VM guest agent serves a similar purpose to the Azure Connected Machine agent. To avoid conflicts between the two, the Azure VM Agent needs to be disabled. Once it is disabled, you cannot use VM extensions or some Azure services.
When Azure Arc-enabled servers is configured on the VM, you see two representati
> The iptables configuration needs to be set after every reboot unless a persistent iptables solution is used.
-4. Install and configure the Azure Arc-enabled servers agent.
+4. Install and configure the Azure Connected Machine agent.
- The VM is now ready for you to begin evaluating Azure Arc-enabled servers. To install and configure the Azure Arc-enabled servers agent, see [Connect hybrid machines using the Azure portal](onboard-portal.md) and follow the steps to generate an installation script and install using the scripted method.
+ The VM is now ready for you to begin evaluating Azure Arc-enabled servers. To install and configure the Azure Connected Machine agent, see [Connect hybrid machines using the Azure portal](onboard-portal.md) and follow the steps to generate an installation script and install using the scripted method.
> [!NOTE] > If outbound connectivity to the internet is restricted from your Azure VM, you'll need to download the agent package manually. Copy the agent package to the Azure VM, and modify the Azure Arc-enabled servers installation script to reference the source folder.
After you install and configure the agent to register with Azure Arc-enabled ser
* Learn about our [supported Azure VM extensions](manage-vm-extensions.md) available to simplify deployment with other Azure services like Automation, KeyVault, and others for your Windows or Linux machine.
-* When you have finished testing, [uninstall the Azure Arc-enabled servers agent](manage-agent.md#uninstall-the-agent).
+* When you have finished testing, [uninstall the Azure Connected Machine agent](manage-agent.md#uninstall-the-agent).
azure-arc Prerequisites https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/prerequisites.md
You can also register the resource providers in the [Azure portal](../../azure-r
## Next steps * Review the [networking requirements for deploying Azure Arc-enabled servers](network-requirements.md).
-* Before you deploy the Azure Arc-enabled servers agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).* To resolve problems, review the [agent connection issues troubleshooting guide](troubleshoot-agent-onboard.md).
+* Before you deploy the Azure Connected Machine agent and integrate with other Azure management and monitoring services, review the [Planning and deployment guide](plan-at-scale-deployment.md).* To resolve problems, review the [agent connection issues troubleshooting guide](troubleshoot-agent-onboard.md).
azure-arc Scenario Migrate To Azure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/scenario-migrate-to-azure.md
In this article, you:
* Uninstall all VM extensions from the Azure Arc-enabled server. * Identify Azure services configured to authenticate with your Azure Arc-enabled server-managed identity and prepare to update those services to use the Azure VM identity after migration. * Review Azure role-based access control (Azure RBAC) access rights granted to the Azure Arc-enabled server resource to maintain who has access to the resource after it has been migrated to an Azure VM.
-* Delete the Azure Arc-enabled server resource identity from Azure and remove the Azure Arc-enabled server agent.
+* Delete the Azure Arc-enabled server resource identity from Azure and remove the Azure Connected Machine agent.
* Install the Azure guest agent. * Migrate the server or VM to Azure.
azure-arc Troubleshoot Agent Onboard https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/troubleshoot-agent-onboard.md
Title: Troubleshoot Azure Arc-enabled servers agent connection issues
+ Title: Troubleshoot Azure Connected Machine agent connection issues
description: This article tells how to troubleshoot and resolve issues with the Connected Machine agent that arise with Azure Arc-enabled servers when trying to connect to the service. Last updated 10/13/2022
-# Troubleshoot Azure Arc-enabled servers agent connection issues
+# Troubleshoot Azure Connected Machine agent connection issues
This article provides information for troubleshooting issues that may occur configuring the Azure Connected Machine agent for Windows or Linux. Both the interactive and at-scale installation methods when configuring connection to the service are included. For general information, see [Azure Arc-enabled servers overview](./overview.md). ## Agent error codes
-Use the following table to identify and resolve issues when configuring the Azure Arc-enabled servers agent. You will need the `AZCM0000` ("0000" can be any four digit number) error code printed to the console or script output.
+Use the following table to identify and resolve issues when configuring the Azure Connected Machine agent. You'll need the `AZCM0000` ("0000" can be any four digit number) error code printed to the console or script output.
| Error code | Probable cause | Suggested remediation | ||-|--|
Use the following table to identify and resolve issues when configuring the Azur
| AZCM0018 | The command was executed without administrative privileges | Retry the command in an elevated user context (administrator/root). | | AZCM0019 | The path to the configuration file is incorrect | Ensure the path to the configuration file is correct and try again. | | AZCM0023 | The value provided for a parameter (argument) is invalid | Review the error message for more specific information. Refer to the syntax of the command (`azcmagent <command> --help`) for valid values or expected format for the arguments. |
-| AZCM0026 | There is an error in network configuration or some critical services are temporarily unavailable | Check if the required endpoints are reachable (for example, hostnames are resolvable, endpoints are not blocked). If the network is configured for Private Link Scope, a Private Link Scope resource ID must be provided for onboarding using the `--private-link-scope` parameter. |
+| AZCM0026 | There is an error in network configuration or some critical services are temporarily unavailable | Check if the required endpoints are reachable (for example, hostnames are resolvable, endpoints aren't blocked). If the network is configured for Private Link Scope, a Private Link Scope resource ID must be provided for onboarding using the `--private-link-scope` parameter. |
| AZCM0041 | The credentials supplied are invalid | For device logins, verify that the user account specified has access to the tenant and subscription where the server resource will be created<sup>[1](#footnote3)</sup>.<br> For service principal logins, check the client ID and secret for correctness, the expiration date of the secret<sup>[2](#footnote4)</sup>, and that the service principal is from the same tenant where the server resource will be created<sup>[1](#footnote3)</sup>.<br> <a name="footnote3"></a><sup>1</sup>See [How to find your Azure Active Directory tenant ID](../../active-directory/fundamentals/active-directory-how-to-find-tenant.md).<br> <a name="footnote4"></a><sup>2</sup>In Azure portal, open Azure Active Directory and select the App registration blade. Select the application to be used and the Certificates and secrets within it. Check whether the expiration data has passed. If it has, create new credentials with sufficient roles and try again. See [Connected Machine agent prerequisites-required permissions](prerequisites.md#required-permissions). | | AZCM0042 | Creation of the Azure Arc-enabled server resource failed | Review the error message in the output to identify the cause of the failure to create resource and the suggested remediation. For permission issues, see [Connected Machine agent prerequisites-required permissions](prerequisites.md#required-permissions) for more information. | | AZCM0043 | Deletion of the Azure Arc-enabled server resource failed | Verify that the user/service principal specified has permissions to delete Azure Arc-enabled server/resources in the specified group ΓÇö see [Connected Machine agent prerequisites-required permissions](prerequisites.md#required-permissions).<br> If the resource no longer exists in Azure, use the `--force-local-only` flag to proceed. |
Use the following table to identify and resolve issues when configuring the Azur
| AZCM0063 | An error occurred while disconnecting the server | Review the error message in the output for more specific information. If this error persists, delete the resource in Azure, and then run `azcmagent disconnect --force-local-only` on the server. | | AZCM0067 | The machine is already connected to Azure | Run `azcmagent disconnect` to remove the current connection, then try again. | | AZCM0068 | Subscription name was provided, and an error occurred while looking up the corresponding subscription GUID. | Retry the command with the subscription GUID instead of subscription name. |
-| AZCM0061<br>AZCM0064<br>AZCM0065<br>AZCM0066<br>AZCM0070<br> | The agent service is not responding or unavailable | Verify the command is run in an elevated user context (administrator/root). Ensure that the HIMDS service is running (start or restart HIMDS as needed) then try the command again. |
+| AZCM0061<br>AZCM0064<br>AZCM0065<br>AZCM0066<br>AZCM0070<br> | The agent service isn't responding or unavailable | Verify the command is run in an elevated user context (administrator/root). Ensure that the HIMDS service is running (start or restart HIMDS as needed) then try the command again. |
| AZCM0081 | An error occurred while downloading the Azure Active Directory managed identity certificate | If this message is encountered while attempting to connect the server to Azure, the agent won't be able to communicate with the Azure Arc service. Delete the resource in Azure and try connecting again. |
-| AZCM0101 | The command was not parsed successfully | Run `azcmagent <command> --help` to review the command syntax. |
-| AZCM0102 | An error occurred while retrieving the computer hostname | Retry the command and specify a resource name (with parameter --resource-name or ΓÇôn). Use only alphanumeric characters, hyphens and/or underscores; note that resource name cannot end with a hyphen or underscore. |
+| AZCM0101 | The command wasn't parsed successfully | Run `azcmagent <command> --help` to review the command syntax. |
+| AZCM0102 | An error occurred while retrieving the computer hostname | Retry the command and specify a resource name (with parameter --resource-name or ΓÇôn). Use only alphanumeric characters, hyphens and/or underscores; note that resource name can't end with a hyphen or underscore. |
| AZCM0103 | An error occurred while generating RSA keys | Contact Microsoft Support for assistance. | | AZCM0105 | An error occurred while downloading the Azure Active Directory managed identify certificate | Delete the resource created in Azure and try again. | | AZCM0147-<br>AZCM0152 | An error occurred while installing Azcmagent on Windows | Review the error message in the output for more specific information. |
azure-cache-for-redis Cache Configure Role Based Access Control https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-cache-for-redis/cache-configure-role-based-access-control.md
Previously updated : 05/31/2023 Last updated : 06/05/2023
These [commands](cache-configure.md#redis-commands-not-supported-in-azure-cache-
### Commands
-_Commands_ allow you to control which specific commands can be executed by a particular Redis user.
+_Commands_ allow you to control which specific commands can be run by a particular Redis user.
- Use `+command` to allow a command. - Use `-command` to disallow a command.
The following list contains some examples of permission strings for various scen
1. [Configure Permissions](#permissions-for-your-data-access-policy) as per your requirements.
+1. From the Resource menu, select **Advanced settings**.
+
+1. If not checked already, Check the box labeled **(PREVIEW) Enable Azure AD Authorization** and select **OK**. Then, select **Save**.
+
+ :::image type="content" source="media/cache-azure-active-directory-for-authentication/cache-azure-ad-access-authorization.png" alt-text="Screenshot of Azure AD access authorization.":::
+
+1. A dialog box displays a popup notifying you that upgrading is permanent and might cause a brief connection blip. Select **Yes.**
+
+ > [!IMPORTANT]
+ > Once the enable operation is complete, the nodes in your cache instance reboots to load the new configuration. We recommend performing this operation during your maintenance window or outside your peak business hours. The operation can take up to 30 minutes.
+
+## Configure your Redis client to use Azure Active Directory
+
+Now that you have configured Redis User and Data access policy for configuring role based access control, you need to update your client workflow to support authenticating using a specific user/password. To learn how to configure you client application to connect to your cache instance as a specific Redis User, see [Configure your Redis client to use Azure AD.](cache-azure-active-directory-for-authentication.md#configure-your-redis-client-to-use-azure-active-directory)
+ ## Next steps - [Use Azure Active Directory for cache authentication](cache-azure-active-directory-for-authentication.md)
azure-government Documentation Accelerate Compliance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-government/compliance/documentation-accelerate-compliance.md
# FedRAMP compliance program overview
-Accelerating your path to the US Federal Risk and Authorization Management Program (FedRAMP) compliance in Azure is a focused program that provides learning resources and implementation tools. The goal of the program is education and support during the scoping and implementation of your project. Moreover, Microsoft works with key assessment and automation partners to share reference architectures and solutions that can help you meet your compliance needs.
+Accelerating your path to the US Federal Risk and Authorization Management Program (FedRAMP) compliance in Azure is a focused effort that provides learning resources and implementation tools. The goal is education and support during the scoping and implementation of your project. Moreover, Microsoft works with key assessment and automation partners to share reference architectures and solutions that can help you meet your compliance needs.
As a partner who provides a service in this field, you can publish your offering in the marketplace that expands the reach of your service.
Consequently, an ISV can choose to go for a JAB authorization, which grants a ge
Microsoft is able to scale through its partners. Scale is what allows us to create a more predictable, cost-effective, and speedy delivery. These concerns are also common with pursuing an ATO. We're focused on enabling two main kinds of partnerships: -- **Advisory:** enables partners to create offerings based on Azure that guide a customer through individual steps or the entire ATO process. These partners offer consulting services bundled with some automated solutions that add value to what Azure Compliance Launchpad provides. They can usually be contracted directly, by reference, or via Microsoft Azure Marketplace.
+- **Advisory:** enables partners to create offerings based on Azure that guide a customer through individual steps or the entire ATO process. These partners offer consulting services bundled with some automated solutions that add value to Azure Marketplace compliance offerings. They can usually be contracted directly, by reference, or via Microsoft Azure Marketplace.
- **Automation:** there are two types of automation partners we focus on: - Foundational partners, which enable integration of third party solutions with Azure and help you achieve / meet controls from your FedRAMP package. These partners are part of our recommended reference architectures. - True automation partners that help automate certain aspects of the ATO journey such as the FedRAMP System Security Plan (SSP) generation, self-healing, alerts, and monitoring.
azure-government Documentation Government Csp Application https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-government/documentation-government-csp-application.md
The process begins with a request for an Azure Government tenant. For more infor
## Applying for government CSP
-Once you have the credentials described previously, navigate to [Partner Center for Microsoft US Government Cloud](/partner-center/partner-center-for-microsoft-us-govt-cloud) to apply for the CSP Government reseller program. It takes 5-6 days to process the application, and, once approved, you should receive an email to log in to [Partner Center](https://partner.microsoft.com/dashboard/home) to accept the Terms and Conditions. For more information, see [Partner Center documentation](/partner-center/overview).
+Once you have the credentials described previously, navigate to [Partner Center for Microsoft US Government Cloud](https://aka.ms/accounts/rncEnrollment) to apply for the CSP Government reseller program. It takes 5-6 days to process the application, and, once approved, you should receive an email to log in to [Partner Center](https://partner.microsoft.com/dashboard/home) to accept the Terms and Conditions. For more information, see [Partner Center documentation](/partner-center/overview).
> [!NOTE] > Terms and Conditions aren't negotiable for the Cloud Solution Provider program. If you wish to discuss customer terms that you have in place for your Commercial agreement, contact your Microsoft account representative.
azure-health-insights Transparency Note https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-health-insights/trial-matcher/transparency-note.md
Title: Transparency Note for Trial Matcher
-description: Microsoft's Transparency Notes for Trial Matcher are intended to help you understand how our AI technology works.
+description: Microsoft's Transparency Note for Trial Matcher intended to help understand how our AI technology works
-+ Previously updated : 01/27/2023- Last updated : 05/28/2023+
-# Transparency Note for Trial Matcher
+# What is a Transparency Note?
-An AI system includes not only the technology, but also the people who use it, the people who will be affected by it, and the environment in which it's deployed. Creating a system that is fit for its intended purpose requires an understanding of how the technology works, its capabilities and limitations, and how to achieve the best performance.
+An AI system includes not only the technology, but also the people who will use it, the people who will be affected by it, and the environment in which it is deployed. Creating a system that is fit for its intended purpose requires an understanding of how the technology works, what its capabilities and limitations are, and how to achieve the best performance. MicrosoftΓÇÖs Transparency Notes are intended to help you understand how our AI technology works, the choices system owners can make that influence system performance and behavior, and the importance of thinking about the whole system, including the technology, the people, and the environment. You can use Transparency Notes when developing or deploying your own system or share them with the people who will use or be affected by your system.
+MicrosoftΓÇÖs Transparency Notes are part of a broader effort at Microsoft to put our AI Principles into practice. To find out more, see the [Microsoft AI principles](https://www.microsoft.com/ai/responsible-ai).
-Microsoft's Transparency Notes are intended to help you understand how our AI technology works, the choices system owners can make that influence system performance and behavior, and the importance of thinking about the whole system, including the technology, the people, and the environment. They are also part of a broader effort at Microsoft to put our AI principles into practice. To find out more, see [Microsoft AI principles](https://www.microsoft.com/ai/responsible-ai).
-## Example use cases for the Trial Matcher
+## The basic of Trial Matcher
-**Use case** | **Description**
--|-
-Assisted annotation and curation | Support solutions for clinical data annotation and curation. For example: to support clinical coding, digitization of data that was manually created, automation of registry reporting.
-Decision support | Enable solutions that provide information that can assist a human in their work or support a decision made by a human.
+### Introduction
-## Considerations when choosing a use case
+Trial Matcher is a model thatΓÇÖs offered as part of Azure Health Insights cognitive service. You can use Trial Matcher to build solutions that help clinicians make decisions about whether further examination of potential eligibility for clinical trials should take place.
+Organizations can use the Trial Matcher model to match patients to potentially suitable clinical trials based on trial condition, site location, eligibility criteria, and patient details. Trial Matcher helps researchers and organizations match patients with trials based on the patientΓÇÖs unique characteristics and find a group of potentially eligible patients to match to a list of clinical trials.
-Given the sensitive nature of health-related data, it's important to consider your use cases carefully. In all cases, a human should be making decisions, assisted by the information the system returns and there should be a way to review the source data and correct errors.
-## Don't use
- - **Don't use for scenarios that use this service as a medical device, clinical support, or diagnostic tools to be used in the diagnosis, cure, mitigation, treatment or prevention of disease or other conditions without a human intervention.** A qualified medical professional should always do due diligence and verify the source data regarding patient care decisions.
+### Key terms
+| Term | What is it | | | | |
+|-|--|--|--|--|--|
+| Patient centric | Trial Matcher, when powering a single patient trial search, helps a patient narrow down the list of potentially suitable clinical trials based on the patientΓÇÖs clinical information. | |
+| Trial centric | Trial Matcher, when powering search for eligible patients to clinical trial, is provided with list of clinical trials (one or more) and multiple patientsΓÇÖ information. The model is using the matching technology to find which patients could potentially be suitable for each trial. | |
+| Evidence | For each trial that the model concludes the patient is not eligible for, the model returns the relevant patient information and the eligibility criteria that the model used to exclude the patient from trial eligibility. | |
+| Gradual matching | The model can provide patient information with gradual matching. In this mode, the user can send requests to Trial Matcher gradually, primarily via conversational intelligence or chat-like scenarios. | |
+++
+## Capabilities
+
+### System behavior
+Trial Matcher analyzes and matches clinical trial eligibility criteria and patientsΓÇÖ clinical information.
+Clinical trial eligibility criteria are extracted from clinical trials available on clinicaltrials.gov or provided by the service user as a custom trial. Patient clinical information is provided either as unstructured clinical note, FHIR bundles or key-value schema.
+
+Trial Matcher uses [Text Analytics for health](https://docs.microsoft.com/azure/cognitive-services/language-service/text-analytics-for-health/overview?tabs=ner) to identify and extract medical entities in case the information provided is unstructured, either from clinical trial protocols from clinicaltrials.gov, custom trials and patient clinical notes.
+
+When Trial Matcher is in patient centric mode, it returns a list of potentially suitable clinical trials, based on the patient clinical information. When Trial Matcher is in trial centric mode, it returns a list of patients who are potentially eligible for a clinical trial. The Trial Matcher results should be reviewed by a human decision maker for a further full qualification.
+Trial Matcher results also include an explainability layer. When a patient appears to be ineligible for a trial, Trial Matcher provides evidence of why the patient is not eligible to meet the criteria of the specific trial.
+
+The Trial Matcher algorithm is recall-optimized. It lists a patient as ineligible for a trial only when there is a high probability that a criteria is not met (one or more criteria). This approach minimizes the number of false negative cases and helps avoid a potential trial from being eliminated as an option for a patient.
++
+### Use cases
+
+#### Intended uses
+Trial Matcher can be used in multiple scenarios. The systemΓÇÖs intended uses include:
+
+##### One patient trial search (patient-centric):
+Assist a single patient or a caregiver find potentially suitable clinical trials based on the patientΓÇÖs clinical information.
+
+##### Trial feasibility assessment:
+Assist in a feasibility assessment of a single clinical trial based on patient data repositories. A pharmaceutical company or contract research organization (CRO) uses patient data repositories to identify patients who might be suitable for a single trial they are recruiting for.
+##### Provider-site matching (trial-centric):
+Match a list of clinical trials with multiple patients. Assist a provider or CRO to find patients from a database of multiple patients, who might be suitable for trials.
+
+##### Eligibility assessment:
+Verify single-patient eligibility for a single trial and show the criteria that renders the patient ineligible . Assists a trial coordinator to screen and qualify a single patient for a specific trial and to understand the gaps in the match.
++
+#### Considerations when choosing other use cases
+We encourage customers to leverage Trial Matcher in their innovative solutions or applications. However, here are some considerations when you choose a use case:
+* Carefully consider the use of free text as input for the trial condition and location. Incorrect spelling of these parameters might reduce effectiveness and lead to potential matching results that are less focused and/or less accurate.
+* Trial Matcher is not suitable for unsupervised decision making to determine whether a patient is eligible to participate in a clinical trial. To avoid preventing access to possible treatment for eligible patients, Trial Matcher results should always be reviewed and interpreted by a human who makes any decisions related to participation in clinical trials.
+* Trial Material should not be used as a medical device, to provide clinical support, or as a diagnostic tool used in the diagnosis, cure, mitigation, treatment, or prevention of disease or other conditions without human intervention. A qualified medical professional should always do due diligence and verify the source data that might influence any decisions related to participation in clinical trials.
++
+## Limitations
+
+### Technical limitations, operational factors, and ranges
+* Trial Matcher is available only in English.
+* Since Trial Matcher is based on TA4H for analyzing unstructured text, please refer to [Text Analytics for health Transparency Note](https://learn.microsoft.com/legal/cognitive-services/language-service/transparency-note-health)
+for further information.
++
+## System performance
+
+### Best practices for improving system performance
+* When you use Trial Matcher for a trial-centric use case, we recommend that you use a filtering criterion that is relevant to the clinical trial to narrow the list of patients that are potentially eligible for the trial. For example, initially filter patients by using a relevant medical condition. Then, use Trial Matcher to refine the list of eligible patients, starting from the cohort of patients that meet the baseline criteria.
+* The Trial Matcher model infers a patient as ineligible for a clinical trial based on evidence in the patient's information. To improve the quality of the matching results, we recommend that you provide patient information that is as detailed and up to date as possible.
++
+## Learn more about responsible AI
+* [Microsoft AI principles](https://www.microsoft.com/ai/responsible-ai).
+* [Microsoft responsible AI resources](https://www.microsoft.com/ai/responsible-ai-resources).
+* [Microsoft Azure Learning courses on responsible AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/).
++
+## Learn more about Text Analytics For Health
+[Text Analytics for Health Transparency Note](https://learn.microsoft.com/legal/cognitive-services/language-service/transparency-note-health).
++++
+## About this document
+© 2023 Microsoft Corporation. All rights reserved. This document is provided "as-is" and for informational purposes only. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. Some examples are for illustration only and are fictitious. No real association is intended or inferred.
azure-maps Map Add Drawing Toolbar https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/map-add-drawing-toolbar.md
Title: Add drawing tools toolbar to map | Microsoft Azure Maps description: How to add a drawing toolbar to a map using Azure Maps Web SDK-- Previously updated : 09/04/2019++ Last updated : 06/05/2023
drawingManager = new atlas.drawing.DrawingManager(map, {
}); ```
-Below is the complete running code sample of the functionality above:
+For a complete working sample that demonstrates how to add a drawing toolbar to your map, see [Add drawing toolbar to map] in the [Azure Maps Samples].
-<br/>
+<!
<iframe height="500" scrolling="no" title="Add drawing toolbar" src="//codepen.io/azuremaps/embed/ZEzLeRg/?height=265&theme-id=0&default-tab=js,result&editable=true" frameborder='no' loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href='https://codepen.io/azuremaps/pen/ZEzLeRg/'>Add drawing toolbar</a> by Azure Maps (<a href='https://codepen.io/azuremaps'>@azuremaps</a>) on <a href='https://codepen.io'>CodePen</a>. </iframe>-
+>
## Limit displayed toolbar options
drawingManager = new atlas.drawing.DrawingManager(map, {
}); ```
-Below is the complete running code sample of the functionality above:
+The following screenshot shows a sample of an instance of the drawing manager that displays the toolbar with just a single drawing tool on the map:
-<br/>
+<!
<iframe height="500" scrolling="no" title="Add a polygon drawing tool" src="//codepen.io/azuremaps/embed/OJLWWMy/?height=265&theme-id=0&default-tab=js,result&editable=true" frameborder='no' loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href='https://codepen.io/azuremaps/pen/OJLWWMy/'>Add a polygon drawing tool</a> by Azure Maps (<a href='https://codepen.io/azuremaps'>@azuremaps</a>) on <a href='https://codepen.io'>CodePen</a>. </iframe>-
+>
## Change drawing rendering style The style of the shapes that are drawn can be customized by retrieving the underlying layers of the drawing manager by using the `drawingManager.getLayers()` and `drawingManager.getPreviewLayers()` functions and then setting options on the individual layers. The drag handles that appear for coordinates when editing a shape are HTML markers. The style of the drag handles can be customized by passing HTML marker options into the `dragHandleStyle` and `secondaryDragHandleStyle` options of the drawing manager.
-The following code gets the rendering layers from the drawing manager and modifies their options to change rendering style for drawing. In this case, points will be rendered with a blue marker icon. Lines will be red and four pixels wide. Polygons will have a green fill color and an orange outline. It then changes the styles of the drag handles to be square icons.
+The following code gets the rendering layers from the drawing manager and modifies their options to change rendering style for drawing. In this case, points will be rendered with a blue marker icon. Lines will be red and four pixels wide. Polygons will have a green fill color and an orange outline. It then changes the styles of the drag handles to be square icons.
```javascript //Get rendering layers of drawing manager.
var previewLayers = drawingManager.getPreviewLayers();
previewLayers.lineLayer.setOptions({ strokeColor: 'red', strokeWidth: 4, strokeDashArray: [3,3] }); previewLayers.polygonOutlineLayer.setOptions({ strokeColor: 'orange', strokeDashArray: [3, 3] });
-//Update the style of the drag handles that appear when editting.
+//Update the style of the drag handles that appear when editing.
drawingManager.setOptions({ //Primary drag handle that represents coordinates in the shape. dragHandleStyle: {
drawingManager.setOptions({
draggable: true },
- //Secondary drag hanle that represents mid-point coordinates that users can grab to add new cooridnates in the middle of segments.
+ //Secondary drag handle that represents mid-point coordinates that users can grab to add new coordinates in the middle of segments.
secondaryDragHandleStyle: { anchor: 'center', htmlContent: '<svg width="10" height="10" viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg" style="cursor:pointer"><rect x="0" y="0" width="10" height="10" style="stroke:white;fill:black;stroke-width:4px;"/></svg>',
drawingManager.setOptions({
}); ```
-Below is the complete running code sample of the functionality above:
+For a complete working sample that demonstrates how to customize the rendering of the drawing shapes in the drawing manager by accessing the rendering layers, see [Change drawing rendering style] in the [Azure Maps Samples].
-<br/>
+<!
<iframe height="500" scrolling="no" title="Change drawing rendering style" src="//codepen.io/azuremaps/embed/OJLWpyj/?height=265&theme-id=0&default-tab=js,result&editable=true" frameborder='no' loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href='https://codepen.io/azuremaps/pen/OJLWpyj/'>Change drawing rendering style</a> by Azure Maps (<a href='https://codepen.io/azuremaps'>@azuremaps</a>) on <a href='https://codepen.io'>CodePen</a>. </iframe>
+>
> [!NOTE]
-> When in edit mode, shapes can be rotated. Rotation is supported from MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, and Rectangle geometries. Point and Circle geometries can not be rotated.
+> When in edit mode, shapes can be rotated. Rotation is supported from MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, and Rectangle geometries. Point and Circle geometries can not be rotated.
## Next steps
Learn more about the classes and methods used in this article:
> [!div class="nextstepaction"] > [Drawing manager](/javascript/api/azure-maps-drawing-tools/atlas.drawing.drawingmanager)+
+[Azure Maps Samples]: https://samples.azuremaps.com
+[Add drawing toolbar to map]: https://samples.azuremaps.com/?search=add%20drawing%20toolbar&sample=add-drawing-toolbar-to-map
+[Change drawing rendering style]: https://samples.azuremaps.com/?search=render&sample=change-drawing-rendering-style
azure-monitor Data Sources Event Tracing Windows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/agents/data-sources-event-tracing-windows.md
Title: Collecting Event Tracing for Windows (ETW) Events for analysis Azure Mon
description: Learn how to collect Event Tracing for Windows (ETW) for analysis in Azure Monitor Logs. Previously updated : 02/07/2022++ Last updated : 05/31/2023 ms. reviewer: shseth # Collecting Event Tracing for Windows (ETW) Events for analysis Azure Monitor Logs
Follow [these instructions](./diagnostics-extension-logs.md#collect-logs-from-az
## Next steps - Use [custom fields](../logs/custom-fields.md) to create structure in your ETW events-- Learn about [log queries](../logs/log-query-overview.md) to analyze the data collected from data sources and solutions.
+- Learn about [log queries](../logs/log-query-overview.md) to analyze the data collected from data sources and solutions.
azure-monitor Rest Api Walkthrough https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/essentials/rest-api-walkthrough.md
Once you've created a service principal, retrieve an access token using a REST c
For example ```bash
-curl --location --request POST 'https://login.microsoftonline.com/a1234bcd-5849-4a5d-a2eb-5267eae1bbc7/oauth2/token' \
+curl --location --request POST 'https://login.microsoftonline.com/abcd1234-5849-4a5d-a2eb-5267eae1bbc7/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \data-urlencode 'client_id=0a123b56-c987-1234-abcd-1a2b3c4d5e6f' \data-urlencode 'client_secret123456.ABCDE.~XYZ876123ABceDb0000' \
+--data-urlencode 'client_id=0123b56a-c987-1234-abcd-1a2b3c4d5e6f' \
+--data-urlencode 'client_secret=123456.ABCDE.~XYZ876123ABceDb0000' \
--data-urlencode 'resource=https://management.azure.com' ```
A successful request receives an access token in the response:
token_type": "Bearer", "expires_in": "86399", "ext_expires_in": "86399",
- "access_token": ""eyJ0eXAiOiJKV1QiLCJ.....Ax"
+ "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
} ```
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:
| 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 | [AppTraces](/azure/azure-monitor/reference/tables/ChaosStudioExperimentEventLogs) |
+ | Chaos Experiments | [ChaosStudioExperimentEventLogs](/azure/azure-monitor/reference/tables/ChaosStudioExperimentEventLogs) |
| 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) |
azure-monitor Queries https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/queries.md
Last updated 06/22/2022
-# Use queries in Azure Monitor Log Analytics
-When you open Log Analytics, you have access to existing log queries. You can either run these queries without modification or use them as a starting point for your own queries. The available queries include examples provided by Azure Monitor and queries saved by your organization. This article describes the queries that are available and how you can discover and use them.
+# Use queries in Log Analytics
+When you open Log Analytics, you can access existing log queries. You can either run these queries without modification or use them as a starting point for your own queries. The available queries include examples provided by Azure Monitor and queries saved by your organization. This article describes the queries that are available and how you can discover and use them.
+ ## Queries interface Select queries from the query interface, which is available from two different locations in Log Analytics.
You can access the same functionality of the dialog experience from the **Querie
The options in this section are available in both the dialog and sidebar query experience, but with a slightly different user interface.
-### Group by
+### [Group by](#tab/groupby)
Change the grouping of the queries by selecting the **group by** dropdown list. The grouping values also act as an active table of contents. Selecting one of the values on the left side of the screen scrolls the **Queries** view directly to the item selected. If your organization created query packs with tags, the custom tags will be included in this list. [![Screenshot that shows the Example queries screen group by dropdown list.](media/queries/example-query-groupby.png)](media/queries/example-query-groupby.png#lightbox)
-### Filter
+### [Filter](#tab/filter)
You can also filter the queries according to the **group by** values mentioned earlier. In the **Example queries** dialog, the filters are found at the top. [![Screenshot that shows an Example queries screen filter.](media/queries/example-query-filter.png)](media/queries/example-query-filter.png#lightbox)
-### Combine group by and filter
+### [Combine group by and filter](#tab/combinegroupbyandfilter)
The filter and group by functionalities are designed to work in tandem. They provide flexibility in how queries are arranged. For example, if you're using a resource group with multiple resources, you might want to filter down to a specific resource type and arrange the resulting queries by topic. ++ ## Query properties Each query has multiple properties that help you group and find them. These properties are available for sorting and filtering. You can define several of them when you [save your own query](save-query.md). The types of properties are: -- **Resource type**: A resource as defined in Azure, such as a virtual machine. For a full mapping of Azure Monitor Logs and Log Analytics tables to resource type, see the [Azure Monitor table reference](/azure/azure-monitor/reference/tables/tables-resourcetype).-- **Category**: A type of information, such as **Security** or **Audit**. Categories are identical to the categories defined in the **Tables** side pane. For a full list of categories, see the [Azure Monitor table reference](/azure/azure-monitor/reference/tables/tables-category).-- **Solution**: An Azure Monitor solution associated with the queries.-- **Topic**: The topic of the example query, such as **Activity logs** or **App logs**. The topic property is unique to example queries and might differ according to the specific resource type.-- **Query type**: Defines the type of the query. Query type might be **Example queries**, **Query pack queries**, or **Legacy queries**.-- **Labels**: Custom labels that you can define and assign when you [save your own query](save-query.md).-- **Tags**: Custom properties that you can define when you [create a query pack](query-packs.md). You can use tags to create your own taxonomies for organizing queries.
+| Query property | Description |
+| : | : |
+| Resource type | A resource as defined in Azure, such as a virtual machine. For a full mapping of Azure Monitor Logs and Log Analytics tables to resource type, see the [Azure Monitor table reference](/azure/azure-monitor/reference/tables/tables-resourcetype). |
+| Category | A type of information, such as Security or Audit. Categories are identical to the categories defined in the Tables side pane. For a full list of categories, see the [Azure Monitor table reference](/azure/azure-monitor/reference/tables/tables-category). |
+| Solution | An Azure Monitor solution associated with the queries. |
+| Topic | The topic of the example query, such as Activity logs or App logs. The topic property is unique to example queries and might differ according to the specific resource type. |
+| Query type | Defines the type of the query. Query type might be Example queries, Query pack queries, or Legacy queries. |
+| Labels | Custom labels that you can define and assign when you [save your own query](save-query.md). |
+| Tags | Custom properties that you can define when you [create a query pack](query-packs.md). You can use tags to create your own taxonomies for organizing queries. |
## Favorites You can identify frequently used queries as favorites to give you quicker access. Select the star next to the query to add it to **Favorites**. View your favorite queries from the **Favorites** option in the query interface.
You can identify frequently used queries as favorites to give you quicker access
## Types of queries The query interface is populated with the following types of queries: -- **Example queries**: Example queries can provide instant insight into a resource and offer a way to start learning and using Kusto Query Language (KQL). They can help you shorten the time it takes to start using Log Analytics. We've collected and curated more than 500 example queries to provide you with instant value. The number of example queries is continually growing.-- **Query packs**: A [query pack](query-packs.md) holds a collection of log queries. Queries that you save yourself, the [default query pack](query-packs.md#default-query-pack), and query packs that your organization might have created in the subscription are included.-- **Legacy queries**: Log queries previously saved in the query explorer experience are legacy queries. Also, queries associated with Azure solutions that are installed in the workspace are legacy queries. These queries are listed in the **Queries** dialog under **Legacy queries**.
+| Type | Description |
+| : | : |
+| Example queries | Example queries can provide instant insight into a resource and offer a way to start learning and using Kusto Query Language (KQL). They can help you shorten the time it takes to start using Log Analytics. We've collected and curated more than 500 example queries to provide you with instant value. The number of example queries is continually growing. |
+| Query packs | A [query pack](query-packs.md) holds a collection of log queries. Queries that you save yourself, the [default query pack](query-packs.md#default-query-pack), and query packs that your organization might have created in the subscription are included. |
+| Legacy queries | Log queries previously saved in the query explorer experience are legacy queries. Also, queries associated with Azure solutions that are installed in the workspace are legacy queries. These queries are listed in the **Queries** dialog under **Legacy queries**. |
>[!TIP] > Legacy queries are only available in a Log Analytics workspace.
The query interface is populated with the following types of queries:
## Effect of query scope The queries that are available when you open Log Analytics are determined by the current [query scope](scope.md). For example: -- **Workspace**: All example queries and queries from query packs. Legacy queries in the workspace.-- **Single resource**: Example queries and queries from query packs for the resource type.-- **Resource group**: Example queries and queries from query packs for resource types in the resource group.
+| Query scope | Description |
+| : | : |
+| Workspace | All example queries and queries from query packs. Legacy queries in the workspace. |
+| Single resource | Example queries and queries from query packs for the resource type. |
+| Resource group | Example queries and queries from query packs for resource types in the resource. |
> [!TIP] > The more resources you have in your scope, the longer the time it takes for the portal to filter and show the **Queries** dialog.
azure-monitor Tables Feature Support https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/tables-feature-support.md
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [AADServicePrincipalSignInLogs](/azure/azure-monitor/reference/tables/aadserviceprincipalsigninlogs) | | | [AADUserRiskEvents](/azure/azure-monitor/reference/tables/aaduserriskevents) | | | [ABSBotRequests](/azure/azure-monitor/reference/tables/absbotrequests) | |
+| [ACRConnectedClientList](/azure/azure-monitor/reference/tables/acrconnectedclientlist) | |
| [ACSAuthIncomingOperations](/azure/azure-monitor/reference/tables/acsauthincomingoperations) | | | [ACSBillingUsage](/azure/azure-monitor/reference/tables/acsbillingusage) | |
-| [ACRConnectedClientList](/azure/azure-monitor/reference/tables/acrconnectedclientlist) | |
-| [ACRConnectedClientList](/azure/azure-monitor/reference/tables/acrconnectedclientlist) | |
| [ACSCallDiagnostics](/azure/azure-monitor/reference/tables/acscalldiagnostics) | | | [ACSCallSummary](/azure/azure-monitor/reference/tables/acscallsummary) | | | [ACSChatIncomingOperations](/azure/azure-monitor/reference/tables/acschatincomingoperations) | | | [ACSSMSIncomingOperations](/azure/azure-monitor/reference/tables/acssmsincomingoperations) | | | [ADAssessmentRecommendation](/azure/azure-monitor/reference/tables/adassessmentrecommendation) | |
+| [AddonAzureBackupAlerts](/azure/azure-monitor/reference/tables/AddonAzureBackupAlerts) | |
+| [AddonAzureBackupJobs](/azure/azure-monitor/reference/tables/AddonAzureBackupJobs) | |
+| [AddonAzureBackupPolicy](/azure/azure-monitor/reference/tables/AddonAzureBackupPolicy) | |
+| [AddonAzureBackupProtectedInstance](/azure/azure-monitor/reference/tables/AddonAzureBackupProtectedInstance) | |
+| [AddonAzureBackupStorage](/azure/azure-monitor/reference/tables/AddonAzureBackupStorage) | |
| [ADFActivityRun](/azure/azure-monitor/reference/tables/adfactivityrun) | |
+| [ADFAirflowSchedulerLogs](/azure/azure-monitor/reference/tables/ADFAirflowSchedulerLogs) | |
+| [ADFAirflowTaskLogs](/azure/azure-monitor/reference/tables/ADFAirflowTaskLogs) | |
+| [ADFAirflowWebLogs](/azure/azure-monitor/reference/tables/ADFAirflowWebLogs) | |
+| [ADFAirflowWorkerLogs](/azure/azure-monitor/reference/tables/ADFAirflowWorkerLogs) | |
| [ADFPipelineRun](/azure/azure-monitor/reference/tables/adfpipelinerun) | |
+| [ADFSandboxActivityRun](/azure/azure-monitor/reference/tables/ADFSandboxActivityRun) | |
+| [ADFSandboxPipelineRun](/azure/azure-monitor/reference/tables/ADFSandboxPipelineRun) | |
| [ADFSSignInLogs](/azure/azure-monitor/reference/tables/adfssigninlogs) | |
+| [ADFSSISIntegrationRuntimeLogs](/azure/azure-monitor/reference/tables/ADFSSISIntegrationRuntimeLogs) | |
+| [ADFSSISPackageEventMessageContext](/azure/azure-monitor/reference/tables/ADFSSISPackageEventMessageContext) | |
+| [ADFSSISPackageEventMessages](/azure/azure-monitor/reference/tables/ADFSSISPackageEventMessages) | |
+| [ADFSSISPackageExecutableStatistics](/azure/azure-monitor/reference/tables/ADFSSISPackageExecutableStatistics) | |
+| [ADFSSISPackageExecutionComponentPhases](/azure/azure-monitor/reference/tables/ADFSSISPackageExecutionComponentPhases) | |
+| [ADFSSISPackageExecutionDataStatistics](/azure/azure-monitor/reference/tables/ADFSSISPackageExecutionDataStatistics) | |
| [ADFTriggerRun](/azure/azure-monitor/reference/tables/adftriggerrun) | | | [ADPAudit](/azure/azure-monitor/reference/tables/adpaudit) | | | [ADPDiagnostics](/azure/azure-monitor/reference/tables/adpdiagnostics) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [ADTModelsOperation](/azure/azure-monitor/reference/tables/adtmodelsoperation) | | | [ADTQueryOperation](/azure/azure-monitor/reference/tables/adtqueryoperation) | | | [ADXCommand](/azure/azure-monitor/reference/tables/adxcommand) | |
+| [ADXJournal](/azure/azure-monitor/reference/tables/ADXJournal) | |
| [ADXQuery](/azure/azure-monitor/reference/tables/adxquery) | |
+| [ADXTableDetails](/azure/azure-monitor/reference/tables/ADXTableDetails) | |
+| [ADXTableUsageStatistics](/azure/azure-monitor/reference/tables/ADXTableUsageStatistics) | |
| [AegDeliveryFailureLogs](/azure/azure-monitor/reference/tables/aegdeliveryfailurelogs) | | | [AegPublishFailureLogs](/azure/azure-monitor/reference/tables/aegpublishfailurelogs) | | | [AEWAuditLogs](/azure/azure-monitor/reference/tables/aewauditlogs) | | | [AgriFoodApplicationAuditLogs](/azure/azure-monitor/reference/tables/agrifoodapplicationauditlogs) | |
-| [AgriFoodApplicationAuditLogs](/azure/azure-monitor/reference/tables/agrifoodapplicationauditlogs) | |
-| [AgriFoodFarmManagementLogs](/azure/azure-monitor/reference/tables/agrifoodfarmmanagementlogs) | |
| [AgriFoodFarmManagementLogs](/azure/azure-monitor/reference/tables/agrifoodfarmmanagementlogs) | | | [AgriFoodFarmOperationLogs](/azure/azure-monitor/reference/tables/agrifoodfarmoperationlogs) | | | [AgriFoodInsightLogs](/azure/azure-monitor/reference/tables/agrifoodinsightlogs) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [AgriFoodProviderAuthLogs](/azure/azure-monitor/reference/tables/agrifoodproviderauthlogs) | | | [AgriFoodSatelliteLogs](/azure/azure-monitor/reference/tables/agrifoodsatellitelogs) | | | [AgriFoodWeatherLogs](/azure/azure-monitor/reference/tables/agrifoodweatherlogs) | |
+| [AirflowDagProcessingLogs](/azure/azure-monitor/reference/tables/AirflowDagProcessingLogs) | |
| [Alert](/azure/azure-monitor/reference/tables/alert) | | | [AlertEvidence](/azure/azure-monitor/reference/tables/alertevidence) | |
+| [AlertInfo](/azure/azure-monitor/reference/tables/AlertInfo) | |
+| [AmlComputeClusterEvent](/azure/azure-monitor/reference/tables/AmlComputeClusterEvent) | |
+| [AmlComputeCpuGpuUtilization](/azure/azure-monitor/reference/tables/AmlComputeCpuGpuUtilization) | |
+| [AmlComputeInstanceEvent](/azure/azure-monitor/reference/tables/AmlComputeInstanceEvent) | |
+| [AmlComputeJobEvent](/azure/azure-monitor/reference/tables/AmlComputeJobEvent) | |
+| [AmlDataLabelEvent](/azure/azure-monitor/reference/tables/AmlDataLabelEvent) | |
+| [AmlDataSetEvent](/azure/azure-monitor/reference/tables/AmlDataSetEvent) | |
+| [AmlDataStoreEvent](/azure/azure-monitor/reference/tables/AmlDataStoreEvent) | |
+| [AmlDeploymentEvent](/azure/azure-monitor/reference/tables/AmlDeploymentEvent) | |
+| [AmlEnvironmentEvent](/azure/azure-monitor/reference/tables/AmlEnvironmentEvent) | |
+| [AmlInferencingEvent](/azure/azure-monitor/reference/tables/AmlInferencingEvent) | |
+| [AmlModelsEvent](/azure/azure-monitor/reference/tables/AmlModelsEvent) | |
| [AmlOnlineEndpointConsoleLog](/azure/azure-monitor/reference/tables/amlonlineendpointconsolelog) | |
+| [AmlPipelineEvent](/azure/azure-monitor/reference/tables/AmlPipelineEvent) | |
+| [AmlRunEvent](/azure/azure-monitor/reference/tables/AmlRunEvent) | |
+| [AmlRunStatusChangedEvent](/azure/azure-monitor/reference/tables/AmlRunStatusChangedEvent) | |
+| [Anomalies](/azure/azure-monitor/reference/tables/Anomalies) | |
| [ApiManagementGatewayLogs](/azure/azure-monitor/reference/tables/apimanagementgatewaylogs) | | | [AppAvailabilityResults](/azure/azure-monitor/reference/tables/appavailabilityresults) | | | [AppBrowserTimings](/azure/azure-monitor/reference/tables/appbrowsertimings) | |
+| [AppBrowserTimings](/azure/azure-monitor/reference/tables/AppBrowserTimings) | |
| [AppCenterError](/azure/azure-monitor/reference/tables/appcentererror) | | | [AppDependencies](/azure/azure-monitor/reference/tables/appdependencies) | | | [AppEvents](/azure/azure-monitor/reference/tables/appevents) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [AppMetrics](/azure/azure-monitor/reference/tables/appmetrics) | | | [AppPageViews](/azure/azure-monitor/reference/tables/apppageviews) | | | [AppPerformanceCounters](/azure/azure-monitor/reference/tables/appperformancecounters) | |
+| [AppPlatformIngressLogs](/azure/azure-monitor/reference/tables/AppPlatformIngressLogs) | |
+| [AppPlatformLogsforSpring](/azure/azure-monitor/reference/tables/AppPlatformLogsforSpring) | |
| [AppPlatformSystemLogs](/azure/azure-monitor/reference/tables/appplatformsystemlogs) | | | [AppRequests](/azure/azure-monitor/reference/tables/apprequests) | |
+| [AppServiceAntivirusScanAuditLogs](/azure/azure-monitor/reference/tables/AppServiceAntivirusScanAuditLogs) | |
| [AppServiceAppLogs](/azure/azure-monitor/reference/tables/appserviceapplogs) | | | [AppServiceAuditLogs](/azure/azure-monitor/reference/tables/appserviceauditlogs) | | | [AppServiceConsoleLogs](/azure/azure-monitor/reference/tables/appserviceconsolelogs) | |
+| [AppServiceEnvironmentPlatformLogs](/azure/azure-monitor/reference/tables/AppServiceEnvironmentPlatformLogs) | |
| [AppServiceFileAuditLogs](/azure/azure-monitor/reference/tables/appservicefileauditlogs) | | | [AppServiceHTTPLogs](/azure/azure-monitor/reference/tables/appservicehttplogs) | |
+| [AppServiceIPSecAuditLogs](/azure/azure-monitor/reference/tables/AppServiceIPSecAuditLogs) | |
| [AppServicePlatformLogs](/azure/azure-monitor/reference/tables/appserviceplatformlogs) | | | [AppSystemEvents](/azure/azure-monitor/reference/tables/appsystemevents) | | | [AppTraces](/azure/azure-monitor/reference/tables/apptraces) | |
+| [ASimAuditEventLogs](/azure/azure-monitor/reference/tables/ASimAuditEventLogs) | |
+| [ASimDnsActivityLogs](/azure/azure-monitor/reference/tables/ASimDnsActivityLogs) | |
+| ASimFileEventLogs | |
+| [ASimNetworkSessionLogs](/azure/azure-monitor/reference/tables/ASimNetworkSessionLogs) | |
+| [ASimWebSessionLogs](/azure/azure-monitor/reference/tables/ASimWebSessionLogs) | |
| [ATCExpressRouteCircuitIpfix](/azure/azure-monitor/reference/tables/atcexpressroutecircuitipfix) | | | [AuditLogs](/azure/azure-monitor/reference/tables/auditlogs) | | | [AutoscaleEvaluationsLog](/azure/azure-monitor/reference/tables/autoscaleevaluationslog) | | | [AutoscaleScaleActionsLog](/azure/azure-monitor/reference/tables/autoscalescaleactionslog) | | | [AWSCloudTrail](/azure/azure-monitor/reference/tables/awscloudtrail) | |
+| [AWSCloudWatch](/azure/azure-monitor/reference/tables/AWSCloudWatch) | |
| [AWSGuardDuty](/azure/azure-monitor/reference/tables/awsguardduty) | | | [AWSVPCFlow](/azure/azure-monitor/reference/tables/awsvpcflow) | | | [AzureAssessmentRecommendation](/azure/azure-monitor/reference/tables/azureassessmentrecommendation) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [CloudAppEvents](/azure/azure-monitor/reference/tables/cloudappevents) | | | [CommonSecurityLog](/azure/azure-monitor/reference/tables/commonsecuritylog) | | | [ComputerGroup](/azure/azure-monitor/reference/tables/computergroup) | |
+| [ConfigurationChange](/azure/azure-monitor/reference/tables/ConfigurationChange) | |
| [ConfigurationData](/azure/azure-monitor/reference/tables/configurationdata) | Partial support ΓÇô some of the data is ingested through internal services that aren't supported.| | [ContainerImageInventory](/azure/azure-monitor/reference/tables/containerimageinventory) | | | [ContainerInventory](/azure/azure-monitor/reference/tables/containerinventory) | | | [ContainerLog](/azure/azure-monitor/reference/tables/containerlog) | | | [ContainerLogV2](/azure/azure-monitor/reference/tables/containerlogv2) | | | [ContainerNodeInventory](/azure/azure-monitor/reference/tables/containernodeinventory) | |
+| [ContainerRegistryLoginEvents](/azure/azure-monitor/reference/tables/ContainerRegistryLoginEvents) | |
+| [ContainerRegistryRepositoryEvents](/azure/azure-monitor/reference/tables/ContainerRegistryRepositoryEvents) | |
| [ContainerServiceLog](/azure/azure-monitor/reference/tables/containerservicelog) | | | [CoreAzureBackup](/azure/azure-monitor/reference/tables/coreazurebackup) | | | [DatabricksAccounts](/azure/azure-monitor/reference/tables/databricksaccounts) | | | [DatabricksClusters](/azure/azure-monitor/reference/tables/databricksclusters) | | | [DatabricksDBFS](/azure/azure-monitor/reference/tables/databricksdbfs) | |
+| [DatabricksFeatureStore](/azure/azure-monitor/reference/tables/DatabricksFeatureStore) | |
+| [DatabricksGenie](/azure/azure-monitor/reference/tables/DatabricksGenie) | |
+| [DatabricksGlobalInitScripts](/azure/azure-monitor/reference/tables/DatabricksGlobalInitScripts) | |
| [DatabricksInstancePools](/azure/azure-monitor/reference/tables/databricksinstancepools) | | | [DatabricksJobs](/azure/azure-monitor/reference/tables/databricksjobs) | |
+| [DatabricksMLflowAcledArtifact](/azure/azure-monitor/reference/tables/DatabricksMLflowAcledArtifact) | |
+| [DatabricksMLflowExperiment](/azure/azure-monitor/reference/tables/DatabricksMLflowExperiment) | |
| [DatabricksNotebook](/azure/azure-monitor/reference/tables/databricksnotebook) | |
+| [DatabricksRemoteHistoryService](/azure/azure-monitor/reference/tables/DatabricksRemoteHistoryService) | |
| [DatabricksSecrets](/azure/azure-monitor/reference/tables/databrickssecrets) | | | [DatabricksSQLPermissions](/azure/azure-monitor/reference/tables/databrickssqlpermissions) | | | [DatabricksSSH](/azure/azure-monitor/reference/tables/databricksssh) | | | [DatabricksWorkspace](/azure/azure-monitor/reference/tables/databricksworkspace) | |
+| DefenderForSqlAlerts | |
+| DefenderForSqlTelemetry | |
+| [DeviceEvents](/azure/azure-monitor/reference/tables/DeviceEvents) | |
+| [DeviceFileCertificateInfo](/azure/azure-monitor/reference/tables/DeviceFileCertificateInfo) | |
+| [DeviceFileEvents](/azure/azure-monitor/reference/tables/DeviceFileEvents) | |
+| [DeviceImageLoadEvents](/azure/azure-monitor/reference/tables/DeviceImageLoadEvents) | |
+| [DeviceInfo](/azure/azure-monitor/reference/tables/DeviceInfo) | |
+| [DeviceLogonEvents](/azure/azure-monitor/reference/tables/DeviceLogonEvents) | |
+| [DeviceNetworkEvents](/azure/azure-monitor/reference/tables/DeviceNetworkEvents) | |
| [DeviceNetworkInfo](/azure/azure-monitor/reference/tables/devicenetworkinfo) | |
+| [DeviceProcessEvents](/azure/azure-monitor/reference/tables/DeviceProcessEvents) | |
+| [DeviceRegistryEvents](/azure/azure-monitor/reference/tables/DeviceRegistryEvents) | |
+| [DeviceTvmSecureConfigurationAssessment](/azure/azure-monitor/reference/tables/DeviceTvmSecureConfigurationAssessment) | |
+| [DeviceTvmSecureConfigurationAssessmentKB](/azure/azure-monitor/reference/tables/DeviceTvmSecureConfigurationAssessmentKB) | |
+| [DeviceTvmSoftwareInventory](/azure/azure-monitor/reference/tables/DeviceTvmSoftwareInventory) | |
+| [DeviceTvmSoftwareVulnerabilities](/azure/azure-monitor/reference/tables/DeviceTvmSoftwareVulnerabilities) | |
+| [DeviceTvmSoftwareVulnerabilitiesKB](/azure/azure-monitor/reference/tables/DeviceTvmSoftwareVulnerabilitiesKB) | |
| [DnsEvents](/azure/azure-monitor/reference/tables/dnsevents) | | | [DnsInventory](/azure/azure-monitor/reference/tables/dnsinventory) | |
+| [DynamicEventCollection](/azure/azure-monitor/reference/tables/DynamicEventCollection) | |
| [Dynamics365Activity](/azure/azure-monitor/reference/tables/dynamics365activity) | | | [EmailAttachmentInfo](/azure/azure-monitor/reference/tables/emailattachmentinfo) | | | [EmailEvents](/azure/azure-monitor/reference/tables/emailevents) | | | [EmailPostDeliveryEvents](/azure/azure-monitor/reference/tables/emailpostdeliveryevents) | | | [EmailUrlInfo](/azure/azure-monitor/reference/tables/emailurlinfo) | |
-| [Event](/azure/azure-monitor/reference/tables/event) | Partial support . Data arriving from Log Analytics agent (MMA) or Azure Monitor Agent (AMA) is fully supported. Data arriving from Diagnostics Extension is collected through Azure storage. This path isnΓÇÖt supported. |
+| [Event](/azure/azure-monitor/reference/tables/event) | Partial support . Data arriving from Log Analytics agent (MMA) or Azure Monitor Agent (AMA) is fully supported. Data arriving from Diagnostics Extension  is collected through Azure storage. This path isn’t supported. |
| [ExchangeAssessmentRecommendation](/azure/azure-monitor/reference/tables/exchangeassessmentrecommendation) | |
+| [ExchangeOnlineAssessmentRecommendation](/azure/azure-monitor/reference/tables/ExchangeOnlineAssessmentRecommendation) | |
| [FailedIngestion](/azure/azure-monitor/reference/tables/failedingestion) | | | [FunctionAppLogs](/azure/azure-monitor/reference/tables/functionapplogs) | |
+| [GCPAuditLogs](/azure/azure-monitor/reference/tables/GCPAuditLogs) | |
| [HDInsightAmbariClusterAlerts](/azure/azure-monitor/reference/tables/hdinsightambariclusteralerts) | | | [HDInsightAmbariSystemMetrics](/azure/azure-monitor/reference/tables/hdinsightambarisystemmetrics) | | | [HDInsightHadoopAndYarnLogs](/azure/azure-monitor/reference/tables/hdinsighthadoopandyarnlogs) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [HDInsightSparkStageEvents](/azure/azure-monitor/reference/tables/hdinsightsparkstageevents) | | | [HDInsightSparkStageTaskAccumulables](/azure/azure-monitor/reference/tables/hdinsightsparkstagetaskaccumulables) | | | [HDInsightSparkTaskEvents](/azure/azure-monitor/reference/tables/hdinsightsparktaskevents) | |
+| [HealthStateChangeEvent](/azure/azure-monitor/reference/tables/HealthStateChangeEvent) | |
| [HuntingBookmark](/azure/azure-monitor/reference/tables/huntingbookmark) | |
+| [IdentityDirectoryEvents](/azure/azure-monitor/reference/tables/IdentityDirectoryEvents) | |
+| [IdentityInfo](/azure/azure-monitor/reference/tables/IdentityInfo) | |
+| [IdentityLogonEvents](/azure/azure-monitor/reference/tables/IdentityLogonEvents) | |
+| [IdentityQueryEvents](/azure/azure-monitor/reference/tables/IdentityQueryEvents) | |
| [InsightsMetrics](/azure/azure-monitor/reference/tables/insightsmetrics) | Partial support ΓÇô some of the data is ingested through internal services that aren't supported. | | [IntuneAuditLogs](/azure/azure-monitor/reference/tables/intuneauditlogs) | | | [IntuneDevices](/azure/azure-monitor/reference/tables/intunedevices) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [KubeMonAgentEvents](/azure/azure-monitor/reference/tables/kubemonagentevents) | | | [KubeNodeInventory](/azure/azure-monitor/reference/tables/kubenodeinventory) | | | [KubePodInventory](/azure/azure-monitor/reference/tables/kubepodinventory) | |
+| [KubePVInventory](/azure/azure-monitor/reference/tables/KubePVInventory) | |
| [KubeServices](/azure/azure-monitor/reference/tables/kubeservices) | | | [LAQueryLogs](/azure/azure-monitor/reference/tables/laquerylogs) | |
+| [LinuxAuditLog](/azure/azure-monitor/reference/tables/LinuxAuditLog) | |
| [McasShadowItReporting](/azure/azure-monitor/reference/tables/mcasshadowitreporting) | | | [MCCEventLogs](/azure/azure-monitor/reference/tables/mcceventlogs) | | | [MicrosoftAzureBastionAuditLogs](/azure/azure-monitor/reference/tables/microsoftazurebastionauditlogs) | | | [MicrosoftDataShareReceivedSnapshotLog](/azure/azure-monitor/reference/tables/microsoftdatasharereceivedsnapshotlog) | | | [MicrosoftDataShareSentSnapshotLog](/azure/azure-monitor/reference/tables/microsoftdatasharesentsnapshotlog) | | | [MicrosoftDataShareShareLog](/azure/azure-monitor/reference/tables/microsoftdatasharesharelog) | |
+| [MicrosoftGraphActivityLogs](/azure/azure-monitor/reference/tables/MicrosoftGraphActivityLogs) | |
| [MicrosoftHealthcareApisAuditLogs](/azure/azure-monitor/reference/tables/microsofthealthcareapisauditlogs) | |
+| [MicrosoftPurviewInformationProtection](/azure/azure-monitor/reference/tables/MicrosoftPurviewInformationProtection) | |
+| [NetworkAccessTraffic](/azure/azure-monitor/reference/tables/NetworkAccessTraffic) | |
+| [NetworkMonitoring](/azure/azure-monitor/reference/tables/NetworkMonitoring) | |
+| [NTAIpDetails](/azure/azure-monitor/reference/tables/NTAIpDetails) | |
+| [NTANetAnalytics](/azure/azure-monitor/reference/tables/NTANetAnalytics) | |
+| [NTATopologyDetails](/azure/azure-monitor/reference/tables/NTATopologyDetails) | |
| [NWConnectionMonitorPathResult](/azure/azure-monitor/reference/tables/nwconnectionmonitorpathresult) | | | [NWConnectionMonitorTestResult](/azure/azure-monitor/reference/tables/nwconnectionmonitortestresult) | | | [OfficeActivity](/azure/azure-monitor/reference/tables/officeactivity) | | | [Perf](/azure/azure-monitor/reference/tables/perf) | Partial support ΓÇô only windows perf data is currently supported. |
+| [PowerBIActivity](/azure/azure-monitor/reference/tables/PowerBIActivity) | |
| [PowerBIDatasetsWorkspace](/azure/azure-monitor/reference/tables/powerbidatasetsworkspace) | |
-| [HDInsightRangerAuditLogs](/azure/azure-monitor/reference/tables/hdinsightrangerauditlogs) | |
+| ProcessInvestigator | |
+| [ProjectActivity](/azure/azure-monitor/reference/tables/ProjectActivity) | |
+| [ProtectionStatus](/azure/azure-monitor/reference/tables/ProtectionStatus) | |
| [PurviewScanStatusLogs](/azure/azure-monitor/reference/tables/purviewscanstatuslogs) | |
+| RomeDetectionEvent | |
| [SCCMAssessmentRecommendation](/azure/azure-monitor/reference/tables/sccmassessmentrecommendation) | | | [SCOMAssessmentRecommendation](/azure/azure-monitor/reference/tables/scomassessmentrecommendation) | |
+| [SecureScoreControls](/azure/azure-monitor/reference/tables/SecureScoreControls) | |
+| [SecureScores](/azure/azure-monitor/reference/tables/SecureScores) | |
| [SecurityAlert](/azure/azure-monitor/reference/tables/securityalert) | | | [SecurityBaseline](/azure/azure-monitor/reference/tables/securitybaseline) | | | [SecurityBaselineSummary](/azure/azure-monitor/reference/tables/securitybaselinesummary) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [SecurityIoTRawEvent](/azure/azure-monitor/reference/tables/securityiotrawevent) | | | [SecurityNestedRecommendation](/azure/azure-monitor/reference/tables/securitynestedrecommendation) | | | [SecurityRecommendation](/azure/azure-monitor/reference/tables/securityrecommendation) | |
+| [SecurityRegulatoryCompliance](/azure/azure-monitor/reference/tables/SecurityRegulatoryCompliance) | |
| [SentinelHealth](/azure/azure-monitor/reference/tables/sentinelhealth) | |
+| ServiceMap | |
| [SfBAssessmentRecommendation](/azure/azure-monitor/reference/tables/sfbassessmentrecommendation) | | | [SfBOnlineAssessmentRecommendation](/azure/azure-monitor/reference/tables/sfbonlineassessmentrecommendation) | | | [SharePointOnlineAssessmentRecommendation](/azure/azure-monitor/reference/tables/sharepointonlineassessmentrecommendation) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [SigninLogs](/azure/azure-monitor/reference/tables/signinlogs) | | | [SPAssessmentRecommendation](/azure/azure-monitor/reference/tables/spassessmentrecommendation) | | | [SQLAssessmentRecommendation](/azure/azure-monitor/reference/tables/sqlassessmentrecommendation) | |
+| [SqlAtpStatus](/azure/azure-monitor/reference/tables/SqlAtpStatus) | |
| [SQLSecurityAuditEvents](/azure/azure-monitor/reference/tables/sqlsecurityauditevents) | |
+| [SqlThreatProtectionLoginAudits](/azure/azure-monitor/reference/tables/SqlThreatProtectionLoginAudits) | |
+| [SqlVulnerabilityAssessmentResult](/azure/azure-monitor/reference/tables/SqlVulnerabilityAssessmentResult) | |
+| [SqlVulnerabilityAssessmentScanStatus](/azure/azure-monitor/reference/tables/SqlVulnerabilityAssessmentScanStatus) | |
+| [StorageBlobLogs](/azure/azure-monitor/reference/tables/StorageBlobLogs) | |
+| [StorageFileLogs](/azure/azure-monitor/reference/tables/StorageFileLogs) | |
+| [StorageQueueLogs](/azure/azure-monitor/reference/tables/StorageQueueLogs) | |
+| [StorageTableLogs](/azure/azure-monitor/reference/tables/StorageTableLogs) | |
| [SucceededIngestion](/azure/azure-monitor/reference/tables/succeededingestion) | | | [SynapseBigDataPoolApplicationsEnded](/azure/azure-monitor/reference/tables/synapsebigdatapoolapplicationsended) | | | [SynapseBuiltinSqlPoolRequestsEnded](/azure/azure-monitor/reference/tables/synapsebuiltinsqlpoolrequestsended) | |
+| [SynapseDXFailedIngestion](/azure/azure-monitor/reference/tables/SynapseDXFailedIngestion) | |
+| [SynapseDXSucceededIngestion](/azure/azure-monitor/reference/tables/SynapseDXSucceededIngestion) | |
| [SynapseGatewayApiRequests](/azure/azure-monitor/reference/tables/synapsegatewayapirequests) | | | [SynapseIntegrationActivityRuns](/azure/azure-monitor/reference/tables/synapseintegrationactivityruns) | | | [SynapseIntegrationPipelineRuns](/azure/azure-monitor/reference/tables/synapseintegrationpipelineruns) | |
The following list identifies the tables in a [Log Analytics workspace](log-anal
| [SynapseSqlPoolWaits](/azure/azure-monitor/reference/tables/synapsesqlpoolwaits) | | | [Syslog](/azure/azure-monitor/reference/tables/syslog) | Partial support ΓÇô data arriving from Log Analytics agent (MMA) or Azure Monitor Agent (AMA) is fully supported. Data arriving via Diagnostics Extension agent is collected though storage while this path isnΓÇÖt supported. | | [ThreatIntelligenceIndicator](/azure/azure-monitor/reference/tables/threatintelligenceindicator) | |
+| [TSIIngress](/azure/azure-monitor/reference/tables/TSIIngress) | |
+| [UCClient](/azure/azure-monitor/reference/tables/UCClient) | |
+| [UCClientReadinessStatus](/azure/azure-monitor/reference/tables/UCClientReadinessStatus) | |
+| [UCClientUpdateStatus](/azure/azure-monitor/reference/tables/UCClientUpdateStatus) | |
+| [UCDeviceAlert](/azure/azure-monitor/reference/tables/UCDeviceAlert) | |
+| [UCDOAggregatedStatus](/azure/azure-monitor/reference/tables/UCDOAggregatedStatus) | |
+| [UCDOStatus](/azure/azure-monitor/reference/tables/UCDOStatus) | |
+| [UCServiceUpdateStatus](/azure/azure-monitor/reference/tables/UCServiceUpdateStatus) | |
+| [UCUpdateAlert](/azure/azure-monitor/reference/tables/UCUpdateAlert) | |
| [Update](/azure/azure-monitor/reference/tables/update) | Partial support ΓÇô some of the data is ingested through internal services that aren't supported. | | [UpdateRunProgress](/azure/azure-monitor/reference/tables/updaterunprogress) | | | [UpdateSummary](/azure/azure-monitor/reference/tables/updatesummary) | |
+| [UrlClickEvents](/azure/azure-monitor/reference/tables/UrlClickEvents) | |
| [UserAccessAnalytics](/azure/azure-monitor/reference/tables/useraccessanalytics) | | | [UserPeerAnalytics](/azure/azure-monitor/reference/tables/userpeeranalytics) | |
+| [W3CIISLog](/azure/azure-monitor/reference/tables/W3CIISLog) | |
+| [WaaSDeploymentStatus](/azure/azure-monitor/reference/tables/WaaSDeploymentStatus) | |
+| [WaaSInsiderStatus](/azure/azure-monitor/reference/tables/WaaSInsiderStatus) | |
+| [WaaSUpdateStatus](/azure/azure-monitor/reference/tables/WaaSUpdateStatus) | |
| [Watchlist](/azure/azure-monitor/reference/tables/watchlist) | |
+| [WebPubSubConnectivity](/azure/azure-monitor/reference/tables/WebPubSubConnectivity) | |
+| [WebPubSubHttpRequest](/azure/azure-monitor/reference/tables/WebPubSubHttpRequest) | |
+| [WebPubSubMessaging](/azure/azure-monitor/reference/tables/WebPubSubMessaging) | |
+| [WindowsClientAssessmentRecommendation](/azure/azure-monitor/reference/tables/WindowsClientAssessmentRecommendation) | |
| [WindowsEvent](/azure/azure-monitor/reference/tables/windowsevent) | | | [WindowsFirewall](/azure/azure-monitor/reference/tables/windowsfirewall) | |
+| [WindowsServerAssessmentRecommendation](/azure/azure-monitor/reference/tables/WindowsServerAssessmentRecommendation) | |
| [WireData](/azure/azure-monitor/reference/tables/wiredata) | Partial support ΓÇô some of the data is ingested through internal services that aren't supported. | | [WorkloadDiagnosticLogs](/azure/azure-monitor/reference/tables/workloaddiagnosticlogs) | |
+| [WUDOAggregatedStatus](/azure/azure-monitor/reference/tables/WUDOAggregatedStatus) | |
+| [WUDOStatus](/azure/azure-monitor/reference/tables/WUDOStatus) | |
| [WVDAgentHealthStatus](/azure/azure-monitor/reference/tables/wvdagenthealthstatus) | | | [WVDCheckpoints](/azure/azure-monitor/reference/tables/wvdcheckpoints) | |
+| [WVDConnectionNetworkData](/azure/azure-monitor/reference/tables/WVDConnectionNetworkData) | |
| [WVDConnections](/azure/azure-monitor/reference/tables/wvdconnections) | | | [WVDErrors](/azure/azure-monitor/reference/tables/wvderrors) | | | [WVDFeeds](/azure/azure-monitor/reference/tables/wvdfeeds) | |
+| [WVDHostRegistrations](/azure/azure-monitor/reference/tables/WVDHostRegistrations) | |
| [WVDManagement](/azure/azure-monitor/reference/tables/wvdmanagement) | |
azure-monitor Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/whats-new.md
Title: "What's new in Azure Monitor documentation" description: "What's new in Azure Monitor documentation"+ Previously updated : 05/03/2023 Last updated : 06/06/2023
This article lists significant changes to Azure Monitor documentation.
+## May 2023
+
+|Subservice| Article | Description |
+||||
+Agents|[Azure Monitor Agent overview](agents/agents-overview.md)|Mma ama migration update|
+Agents|[Azure Monitor Agent overview](agents/agents-overview.md)|Azure Monitoring Agent for Linux now officially supports various hardening standards for Linux operating systems and distros.|
+Agents|[Migrate from MMA custom text log to AMA DCR based custom text logs](agents/azure-monitor-agent-custom-text-log-migration.md)|New article that explains how to migrate from the HTTP Data Collector API to the Log Ingestion API.|
+Agents|[Azure Monitor Agent overview](agents/agents-overview.md)|Azure Monitor Agent now supports Azure Stack HCI. |
+Alerts|[Create a new alert rule](alerts/alerts-create-new-alert-rule.md)|Log alert rules support using managed identities to send the log query.|
+Alerts|[Monitor Azure AD B2C with Azure Monitor](https://learn.microsoft.com/azure/active-directory-b2c/azure-monitor)|Articles on action groups have been updated.|
+Alerts|[Create a new alert rule](alerts/alerts-create-new-alert-rule.md)|Alert rules that use action groups support custom properties to add custom information to the alert notification payload.|
+Application-Insights|[Feature extensions for the Application Insights JavaScript SDK (Click Analytics)](app/javascript-feature-extensions.md)|Most of our JavaScript SDK documentation has been updated and overhauled.|
+Application-Insights|[Analyze product usage with HEART](app/usage-heart.md)|Updated and overhauled HEART framework documentation.|
+Application-Insights|[Dependency tracking in Application Insights](app/asp-net-dependencies.md)|All new documentation supports the Azure Monitor OpenTelemetry Distro public preview release announced on May 10th, 2023. [Public Preview: Azure Monitor OpenTelemetry Distro for ASP.NET Core, JavaScript (Node.js), Python](https://azure.microsoft.com/updates/public-preview-azure-monitor-opentelemetry-distro-for-aspnet-core-javascript-nodejs-python)|
+Application-Insights|[Application Monitoring for Azure App Service and Java](app/azure-web-apps-java.md)|Added CATALINA_OPTS for Tomcat.|
+Essentials|[Configure remote write for Azure Monitor managed service for Prometheus using Microsoft Azure Active Directory pod identity (preview)](essentials/prometheus-remote-write-azure-ad-pod-identity.md)|New article: Configure remote write for Azure Monitor managed service for Prometheus using Microsoft Azure Active Directory pod identity|
+Essentials|[Use private endpoints for Managed Prometheus and Azure Monitor workspace](essentials/azure-monitor-workspace-private-endpoint.md)|New article: Use private endpoints for Managed Prometheus and Azure Monitor workspace|
+Essentials|[Private Link for data ingestion for Managed Prometheus and Azure Monitor workspace](essentials/private-link-data-ingestion.md)|New article: Private Link for data ingestion for Managed Prometheus and Azure Monitor workspace|
+Essentials|[Collect Prometheus metrics from an Arc-enabled Kubernetes cluster (preview)](essentials/prometheus-metrics-from-arc-enabled-cluster.md)|New article: Collect Prometheus metrics from an Arc-enabled Kubernetes cluster (preview)|
+Essentials|[How to migrate from the metrics API to the getBatch API](essentials/migrate-to-batch-api.md)|Migrate from the metrics API to the getBatch API|
+Essentials|[Azure Active Directory authorization proxy](essentials/prometheus-authorization-proxy.md)|Aad auth proxy|
+Essentials|[Integrate KEDA with your Azure Kubernetes Service cluster](essentials/integrate-keda.md)|New Article: Integrate KEDA with AKS and Prometheus|
+Essentials|[General Availability: Azure Monitor managed service for Prometheus](https://techcommunity.microsoft.com/t5/azure-observability-blog/general-availability-azure-monitor-managed-service-for/ba-p/3817973)|General Availability: Azure Monitor managed service for Prometheus |
+Insights|[Monitor and analyze runtime behavior with Code Optimizations (Preview)](insights/code-optimizations.md)|New doc for public preview release of Code Optimizations feature.|
+Logs|[Set a table's log data plan to Basic or Analytics](logs/basic-logs-configure.md)|Added Azure Active Directory, Communication Services, Container Apps Environments, and Data Manager for Energy to the list of tables that support Basic logs.|
+Logs|[Export data from a Log Analytics workspace to a storage account by using Logic Apps](logs/logs-export-logic-app.md)|Added an Azure Resource Manager template for exporting data from a Log Analytics workspace to a storage account by using Logic Apps.|
+Logs|[Set daily cap on Log Analytics workspace](logs/daily-cap.md)|Starting September 18, 2023, the Log Analytics Daily Cap will no longer exclude a set of data types from the daily cap, and all billable data types will be capped if the daily cap is met.|
++ ## April 2023 |Subservice| Article | Description |
azure-portal Azure Portal Safelist Urls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-portal/azure-portal-safelist-urls.md
The URL endpoints to allow for the Azure portal are specific to the Azure cloud
#### Azure portal authentication ```
-*.login.microsoftonline.com
+login.microsoftonline.com
*.aadcdn.msftauth.net *.aadcdn.msftauthimages.net *.aadcdn.msauthimages.net *.logincdn.msftauth.net
-*.login.live.com
+login.live.com
*.msauth.net *.aadcdn.microsoftonline-p.com *.microsoftonline-p.com
The URL endpoints to allow for the Azure portal are specific to the Azure cloud
*.portal.azure.com *.hosting.portal.azure.net *.reactblade.portal.azure.net
-*.management.azure.com
+management.azure.com
*.ext.azure.com *.graph.windows.net *.graph.microsoft.com
azure-resource-manager File https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/file.md
Title: Bicep file structure and syntax
description: Describes the structure and properties of a Bicep file using declarative syntax. Previously updated : 05/24/2023 Last updated : 06/06/2023 # Understand the structure and syntax of Bicep files
output <output-name> <output-data-type> = <output-value>
The following example shows an implementation of these elements. ```bicep
-metadata description = {
- description: 'Creates a storage account and a web app'
-}
+metadata description = 'Creates a storage account and a web app'
@description('The prefix to use for the storage account name.') @minLength(3)
azure-vmware Concepts Storage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/concepts-storage.md
description: Learn about storage capacity, storage policies, fault tolerance, an
Previously updated : 12/08/2022 Last updated : 6/6/2023 # Azure VMware Solution storage concepts
Microsoft provides alerts when capacity consumption exceeds 75%. In addition, yo
Now that you've covered Azure VMware Solution storage concepts, you may want to learn about: -- [Attach disk pools to Azure VMware Solution hosts (Preview)](attach-disk-pools-to-azure-vmware-solution-hosts.md) - You can use disks as the persistent storage for Azure VMware Solution for optimal cost and performance.- - [Configure storage policy](configure-storage-policy.md) - Each VM deployed to a vSAN datastore is assigned at least one VM storage policy. You can assign a VM storage policy in an initial deployment of a VM or when you perform other VM operations, such as cloning or migrating. - [Scale clusters in the private cloud][tutorial-scale-private-cloud] - You can scale the clusters and hosts in a private cloud as required for your application workload. Performance and availability limitations for specific services should be addressed on a case by case basis.
backup Backup Vault Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/backup/backup-vault-overview.md
Title: Overview of Backup vaults description: An overview of Backup vaults. Previously updated : 10/19/2022 Last updated : 06/06/2023
Ensure that you cycle through the **Datasource type** filter options in **Backup
### Proper way to delete a vault >[!WARNING]
-The following operation is destructive and can't be undone. All backup data and backup items associated with the protected server will be permanently deleted. Proceed with caution.
+>The following operation is destructive and can't be undone. All backup data and backup items associated with the protected server will be permanently deleted. Proceed with caution.
To properly delete a vault, you must follow the steps in this order:
Wait till the move operation is complete to perform any other operations on the
>[!Important] >If you encounter any error while moving the vault, refer to the [Error codes and troubleshooting section](#error-codes-and-troubleshooting). ++ ### Error codes and troubleshooting Troubleshoot the following common issues you might encounter during Backup vault move:
Troubleshoot the following common issues you might encounter during Backup vault
**Cause**: You may face this error if you try to perform any operations on the Backup vault while itΓÇÖs being moved. **Recommendation**: Wait till the move operation is complete, and then retry. + #### UserErrorBackupVaultResourceMoveNotAllowedForMultipleResources **Cause**: You may face this error if you try to move multiple Backup vaults in a single attempt. **Recommentation**: Ensure that only one Backup vault is selected for every move operation. + #### UserErrorBackupVaultResourceMoveNotAllowedUntilResourceProvisioned **Cause**: You may face this error if the vault is not yet provisioned.
Troubleshoot the following common issues you might encounter during Backup vault
**Cause**: Resource move for Backup vault is currently not supported in the selected Azure region.
-**Recommendation**: Ensure that you've selected one of the supported regions to move Backup vaults. See [Supported regions](#supported-regions
+**Recommendation**: Ensure that you've selected one of the supported regions to move Backup vaults. See [Supported regions](#supported-regions).
#### UserErrorCrossTenantMSIMoveNotSupported
Troubleshoot the following common issues you might encounter during Backup vault
**Recommendation**: Remove the Managed Identity from the existing Tenant; move the resource and add it again to the new one.
+## Cross Region Restore support for PostgreSQL using Azure Backup (preview)
+
+Azure Backup allows you to replicate your backups to an additional Azure paired region by using Geo-redundant Storage (GRS) to protect your backups from regional outages. When you enable the backups with GRS, the backups in the secondary region become accessible only when Microsoft declares an outage in the primary region. However, Cross Region Restore enables you to access and perform restores from the secondary region recovery points even when no outage occurs in the primary region; thus, enables you to perform drills to assess regional resiliency.
+
+>[!Note]
+>- Cross Region Restore is now available for PostgreSQL backups protected in Backup vaults.
+>- Backup vaults enabled with Cross Region Restore will be automatically charged at [RA-GRS rates](https://azure.microsoft.com/pricing/details/backup/) for the PostgreSQL backups stored in the vault once the feature is generally available.
+
+### Perform Cross Region Restore using Azure portal
+
+Follow these steps:
+
+1. Sign in to [Azure portal](https://portal.azure.com/).
+
+2. [Create a new Backup vault](backup-vault-overview.md#create-backup-vault) or choose an existing Backup vault, and then enable Cross Region Restore by going to **Properties** > **Cross Region Restore (Preview)**, and choose **Enable**.
+
+ :::image type="content" source="./media/backup-vault-overview/enable-cross-region-restore-for-postgresql-database.png" alt-text="Screenshot shows how to enable Cross Region Restore for PostgreSQL database." lightbox="./media/backup-vault-overview/enable-cross-region-restore-for-postgresql-database.png":::
+
+3. Go to the Backup vaultΓÇÖs **Overview** pane, and then [configure a backup for PostgreSQL database](backup-azure-database-postgresql.md).
+
+ Once the backup is complete in the primary region, it can take up to *12 hours* for the recovery point in the primary region to get replicated to the secondary region.
+
+4. To check the availability of recovery point in the secondary region, go to the **Backup center** > **Backup Instances** > **Filter to Azure Database for PostgreSQL servers**, filter **Instance Region** as *Secondary Region*, and then select the required Backup Instance.
+
+ :::image type="content" source="./media/backup-vault-overview/check-availability-of-recovery-point-in-secondary-region.png" alt-text="Screenshot shows how to check availability for the recovery points in the secondary region." lightbox="./media/backup-vault-overview/check-availability-of-recovery-point-in-secondary-region.png":::
+
+ The recovery points available in the secondary region are now listed.
+
+5. Choose **Restore to secondary region**.
+
+ :::image type="content" source="./media/backup-vault-overview/initiate-restore-to-secondary-region.png" alt-text="Screenshot shows how to initiate restores to the secondary region." lightbox="./media/backup-vault-overview/initiate-restore-to-secondary-region.png":::
+
+ You can also trigger restores from the respective backup instance.
+
+ :::image type="content" source="./media/backup-vault-overview/trigger-restores-from-respective-backup-instance.png" alt-text="Screenshot shows how to trigger restores from the respective backup instance." lightbox="./media/backup-vault-overview/trigger-restores-from-respective-backup-instance.png":::
+
+6. Select **Restore to secondary region** to review the target region selected, and then select the appropriate recovery point and restore parameters.
+
+7. Once the restore starts, you can monitor the completion of the restore operation under **Backup Jobs** of the Backup vault by filtering **Jobs workload type** to *Azure Database for PostgreSQL servers* and **Instance Region** to *Secondary Region*.
+
+ :::image type="content" source="./media/backup-vault-overview/monitor-postgresql-restore-to-secondary-region.png" alt-text="Screenshot shows how to monitor the postgresql restore to the secondary region." lightbox="./media/backup-vault-overview/monitor-postgresql-restore-to-secondary-region.png":::
+ ## Next steps - [Configure backup on Azure PostgreSQL databases](backup-azure-database-postgresql.md#configure-backup-on-azure-postgresql-databases)
bastion Bastion Create Host Powershell https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/bastion-create-host-powershell.md
description: Learn how to deploy Azure Bastion using PowerShell.
Previously updated : 03/14/2022 Last updated : 06/05/2023 # Customer intent: As someone with a networking background, I want to deploy Bastion and connect to a VM.
This article shows you how to deploy Azure Bastion with the Standard SKU using P
Once you deploy Bastion to your virtual network, you can connect to your VMs via private IP address. This seamless RDP/SSH experience is available to all the VMs in the same virtual network. If your VM has a public IP address that you don't need for anything else, you can remove it.
-You can also deploy Bastion by using the following other methods:
+
+In this article, you create a virtual network (if you don't already have one), deploy Azure Bastion using PowerShell, and connect to a VM. You can also deploy Bastion by using the following other methods:
* [Azure portal](./tutorial-create-host-portal.md) * [Azure CLI](create-host-cli.md) * [Quickstart - deploy with default settings](quickstart-host-portal.md)
-If you donΓÇÖt have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin.
-
-> [!NOTE]
-> The use of Azure Bastion with Azure Private DNS Zones is not supported at this time. Before you begin, please make sure that the virtual network where you plan to deploy your Bastion resource is not linked to a private DNS zone.
->
- ## Prerequisites The following prerequisites are required.
+### Azure subscription
+
+Verify that you have an Azure subscription. If you don't already have an Azure subscription, you can activate your [MSDN subscriber benefits](https://azure.microsoft.com/pricing/member-offers/msdn-benefits-details) or sign up for a [free account](https://azure.microsoft.com/pricing/free-trial).
+ ### Azure PowerShell [!INCLUDE [PowerShell](../../includes/vpn-gateway-cloud-shell-powershell-about.md)]
You can use the following example values when creating this configuration, or yo
| Public IP address SKU | Standard | | Assignment | Static |
+> [!NOTE]
+> The use of Azure Bastion with Azure Private DNS Zones is not supported at this time. Before you begin, please make sure that the virtual network where you plan to deploy your Bastion resource is not linked to a private DNS zone.
+>
+ ## Deploy Bastion This section helps you create a virtual network, subnets, and deploy Azure Bastion using Azure PowerShell.
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
+ 1. Create an Azure resource group with [New-AzResourceGroup](/powershell/module/az.resources/new-azresourcegroup). A resource group is a logical container into which Azure resources are deployed and managed. If you're running PowerShell locally, open your PowerShell console with elevated privileges and connect to Azure using the `Connect-AzAccount` command. ```azurepowershell-interactive
This section helps you create a virtual network, subnets, and deploy Azure Basti
## <a name="create-vm"></a>Create a VM
-You can create a VM using the [Quickstart: Create a VM using PowerShell](../virtual-machines/windows/quick-create-powershell.md) or [Quickstart: Create a VM using the portal](../virtual-machines/windows/quick-create-portal.md) articles. Be sure you deploy the VM to the virtual network to which you deployed Bastion. The VM you create in this section isn't a part of the Bastion configuration and doesn't become a bastion host. You connect to this VM later in this tutorial via Bastion.
+You can create a VM using the [Quickstart: Create a VM using PowerShell](../virtual-machines/windows/quick-create-powershell.md) or [Quickstart: Create a VM using the portal](../virtual-machines/windows/quick-create-portal.md) articles. Be sure you deploy the VM to the virtual network to which you deployed Bastion. The VM you create in this section isn't a part of the Bastion configuration and doesn't become a bastion host. You connect to this VM later in this tutorial via Bastion.
The following required roles for your resources.
bastion Create Host Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/create-host-cli.md
description: Learn how to deploy Azure Bastion using CLI
Previously updated : 06/01/2023 Last updated : 06/05/2023 # Customer intent: As someone with a networking background, I want to deploy Bastion and connect to a VM.
Verify that you have an Azure subscription. If you don't already have an Azure s
This section helps you deploy Azure Bastion using Azure CLI.
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
+ 1. If you don't already have a virtual network, create a resource group and a virtual network using [az group create](/cli/azure/group#az-group-create) and [az network vnet create](/cli/azure/network/vnet#az-network-vnet-create). ```azurecli-interactive
This section helps you deploy Azure Bastion using Azure CLI.
1. Use [az network bastion create](/cli/azure/network/bastion#az-network-bastion-create) to create a new Azure Bastion resource for your virtual network. It takes about 10 minutes for the Bastion resource to create and deploy.
- [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
- The following example deploys Bastion using the **Basic** SKU tier. The SKU determines the features that your Bastion deployment supports. You can also deploy using the **Standard** SKU. If you don't specify a SKU in your command, the SKU defaults to Standard. For more information, see [Bastion SKUs](configuration-settings.md#skus). ```azurecli-interactive
bastion Quickstart Host Arm Template https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/quickstart-host-arm-template.md
This quickstart describes how to use Azure Bastion template to deploy to a virtu
An ARM template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. The template uses declarative syntax. In declarative syntax, you describe your intended deployment without writing the sequence of programming commands to create the deployment. + If your environment meets the prerequisites and you're familiar with using ARM templates, select the Deploy to Azure button. The template will open in the Azure portal. [![Deploy to Azure](../media/template-deployments/deploy-to-azure.svg)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3a%2f%2fraw.githubusercontent.com%2fAzure%2fazure-quickstart-templates%2fmaster%2fquickstarts%2fmicrosoft.network%2fazure-bastion-nsg%2fazuredeploy.json) ## Prerequisites
-* **An Azure account with an active subscription**. If you don't have one, [create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).
+Verify that you have an Azure subscription. If you don't already have an Azure subscription, you can activate your [MSDN subscriber benefits](https://azure.microsoft.com/pricing/member-offers/msdn-benefits-details) or sign up for a [free account](https://azure.microsoft.com/pricing/free-trial).
> [!NOTE] > The use of Azure Bastion with Azure Private DNS Zones is not supported at this time. Before you begin, please make sure that the virtual network where you plan to deploy your Bastion resource is not linked to a private DNS zone.
This template by default, creates an Azure Bastion deployment with a resource gr
## Deploy the template
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
+ In this section, you'll deploy Bastion using the **Deploy to Azure** button below or in the Azure portal. You don't connect and sign in to your virtual machine or deploy Bastion from your VM directly. 1. Sign in to the [Azure portal](https://portal.azure.com).
In this quickstart, you deployed Bastion using the Bastion ARM template, and the
> [!div class="nextstepaction"] > [Quickstart: Create a Windows virtual machine in the Azure portal](../virtual-machines/windows/quick-create-portal.md)
->[Create an RDP connection to a Windows VM using Azure Bastion](../bastion/bastion-connect-vm-rdp-windows.md)
+> [Create an RDP connection to a Windows VM using Azure Bastion](../bastion/bastion-connect-vm-rdp-windows.md)
bastion Quickstart Host Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/quickstart-host-portal.md
description: Learn how to deploy Bastion with default settings from the Azure po
Previously updated : 09/09/2022 Last updated : 06/06/2023 # Quickstart: Deploy Azure Bastion with default settings
-In this quickstart, you'll learn how to deploy Azure Bastion with default settings to your virtual network using the Azure portal. After Bastion is deployed, you can connect (SSH/RDP) to virtual machines in the virtual network via Bastion using the private IP address of the VM. When you connect to a VM, it doesn't need a public IP address, client software, agent, or a special configuration. Azure Bastion is a PaaS service that's maintained for you, not a bastion host that you install on one of your VMs and maintain yourself. For more information about Azure Bastion, see [What is Azure Bastion?](bastion-overview.md)
+In this quickstart, you'll learn how to deploy Azure Bastion with default settings to your virtual network using the Azure portal. After Bastion is deployed, you can connect (SSH/RDP) to virtual machines (VM) in the virtual network via Bastion using the private IP address of the VM. The VMs you connect to don't need a public IP address, client software, agent, or a special configuration. For more information about Azure Bastion, see [What is Azure Bastion?](bastion-overview.md)
-The following steps walk you through how to deploy Bastion from your VM resource using the Azure portal. When you deploy using default settings, the settings are based on the virtual network to which Bastion will be deployed. After deploying Bastion, you'll then connect to your VM using RDP/SSH connectivity and the VM's private IP address. If your VM has a public IP address that you don't need for anything else, you can remove it. While the steps in this quickstart help you deploy Bastion from your VM resource, you can deploy Bastion from a virtual network resource instead. The steps are similar, except you start from the virtual network resource instead of the VM resource.
+
+The steps in this article help you do the following:
-## <a name="prereq"></a>Prerequisites
+* Deploy Bastion with default settings from your VM resource using the Azure portal. When you deploy using default settings, the settings are based on the virtual network to which Bastion will be deployed.
+* After you deploy Bastion, you'll then connect to your VM via the portal using RDP/SSH connectivity and the VM's private IP address.
+* If your VM has a public IP address that you don't need for anything else, you can remove it.
+
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
-* **An Azure account with an active subscription**. If you don't have one, [create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).
+## <a name="prereq"></a>Prerequisites
+* Verify that you have an Azure subscription. If you don't already have an Azure subscription, you can activate your [MSDN subscriber benefits](https://azure.microsoft.com/pricing/member-offers/msdn-benefits-details) or sign up for a [free account](https://azure.microsoft.com/pricing/free-trial).
* **A VM in a VNet**.
- When you deploy Bastion using default values, the values are pulled from the VNet in which your VM resides. This VM doesn't become a part of the Bastion deployment itself, but you do connect to it later in the exercise.
+ When you deploy Bastion using default values, the values are pulled from the VNet in which your VM resides. This VM doesn't become a part of the Bastion deployment itself, but you do connect to it later in the exercise.
* If you don't already have a VM in a VNet, create one using [Quickstart: Create a Windows VM](../virtual-machines/windows/quick-create-portal.md), or [Quickstart: Create a Linux VM](../virtual-machines/linux/quick-create-portal.md). * If you need example values, see the [Example values](#values) section.
bastion Tutorial Create Host Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/tutorial-create-host-portal.md
description: Learn how to deploy Bastion using settings that you specify - Azure
Previously updated : 09/21/2022 Last updated : 06/05/2023
This tutorial helps you deploy Azure Bastion from the Azure portal using your own specified manual settings. When you use manual settings, you can specify configuration values such as instance counts and the SKU at the time of deployment. After Bastion is deployed, you can connect (SSH/RDP) to virtual machines in the virtual network via Bastion using the private IP address of the VM. When you connect to a VM, it doesn't need a public IP address, client software, agent, or a special configuration. + In this tutorial, you deploy Bastion using the Standard SKU tier and adjust host scaling (instance count). After the deployment is complete, you connect to your VM via private IP address. If your VM has a public IP address that you don't need for anything else, you can remove it. Azure Bastion is a PaaS service that's maintained for you, not a bastion host that you install on one of your VMs and maintain yourself. For more information about Azure Bastion, see [What is Azure Bastion?](bastion-overview.md)
In this tutorial, you'll learn how to:
> * Connect to a virtual machine. > * Remove the public IP address from a virtual machine.
-If you donΓÇÖt have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin.
- ## Prerequisites
+* If you donΓÇÖt have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin.
* A [virtual network](../virtual-network/quick-create-portal.md). This will be the VNet to which you deploy Bastion. * A virtual machine in the virtual network. This VM isn't a part of the Bastion configuration and doesn't become a bastion host. You connect to this VM later in this tutorial via Bastion. If you don't have a VM, create one using [Quickstart: Create a VM](../virtual-machines/windows/quick-create-portal.md). * **Required VM roles:**
You can use the following example values when creating this configuration, or yo
| Public IP address SKU | Standard | | Assignment | Static |
- > [!IMPORTANT]
- > For Azure Bastion resources deployed on or after November 2, 2021, the minimum AzureBastionSubnet size is /26 or larger (/25, /24, etc.). All Azure Bastion resources deployed in subnets of size /27 prior to this date are unaffected by this change and will continue to work, but we highly recommend increasing the size of any existing AzureBastionSubnet to /26 in case you choose to take advantage of [host scaling](./configure-host-scaling.md) in the future.
- >
- ## <a name="createhost"></a>Deploy Bastion This section helps you deploy Bastion to your VNet. Once Bastion is deployed, you can connect securely to any VM in the VNet using its private IP address.
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
+ 1. Sign in to the [Azure portal](https://portal.azure.com). 1. Go to your virtual network.
This section helps you deploy Bastion to your VNet. Once Bastion is deployed, yo
1. When you finish specifying the settings, select **Review + Create**. This validates the values.
-1. Once validation passes, you can deploy Bastion. Select **Create**. You'll see a message letting you know that your deployment is in process. Status will display on this page as the resources are created. It takes about 10 minutes for the Bastion resource to be created and deployed.
+1. Once validation passes, you can deploy Bastion. Select **Create**. You'll see a message letting you know that your deployment is in process. Status displays on this page as the resources are created. It takes about 10 minutes for the Bastion resource to be created and deployed.
## <a name="connect"></a>Connect to a VM
bastion Tutorial Protect Bastion Host Ddos https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/bastion/tutorial-protect-bastion-host-ddos.md
In this tutorial, you'll learn how to:
> * Connect to a virtual machine. > * Remove the public IP address from a virtual machine.
-If you donΓÇÖt have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin.
## Prerequisites
+* Verify that you have an Azure subscription. If you don't already have an Azure subscription, you can activate your [MSDN subscriber benefits](https://azure.microsoft.com/pricing/member-offers/msdn-benefits-details) or sign up for a [free account](https://azure.microsoft.com/pricing/free-trial).
* A [virtual network](../virtual-network/quick-create-portal.md). This will be the VNet to which you deploy Bastion. * A virtual machine in the virtual network. This VM isn't a part of the Bastion configuration and doesn't become a bastion host. You connect to this VM later in this tutorial via Bastion. If you don't have a VM, create one using [Quickstart: Create a VM](../virtual-machines/windows/quick-create-portal.md). * **Required VM roles:**
You can use the following example values when creating this configuration, or yo
| Public IP address SKU | Standard | | Assignment | Static |
- > [!IMPORTANT]
- > For Azure Bastion resources deployed on or after November 2, 2021, the minimum AzureBastionSubnet size is /26 or larger (/25, /24, etc.). All Azure Bastion resources deployed in subnets of size /27 prior to this date are unaffected by this change and will continue to work, but we highly recommend increasing the size of any existing AzureBastionSubnet to /26 in case you choose to take advantage of [host scaling](./configure-host-scaling.md) in the future.
- >
## <a name="createhost"></a>Deploy Bastion This section helps you deploy Bastion to your VNet. Once Bastion is deployed, you can connect securely to any VM in the VNet using its private IP address.
+> [!IMPORTANT]
+> [!INCLUDE [Pricing](../../includes/bastion-pricing.md)]
+>
+ 1. Sign in to the [Azure portal](https://portal.azure.com). 1. Go to your virtual network.
This section helps you deploy Bastion to your VNet. Once Bastion is deployed, yo
1. When you finish specifying the settings, select **Review + Create**. This validates the values.
-1. Once validation passes, you can deploy Bastion. Select **Create**. You'll see a message letting you know that your deployment is in process. Status will display on this page as the resources are created. It takes about 10 minutes for the Bastion resource to be created and deployed.
+1. Once validation passes, you can deploy Bastion. Select **Create**. You'll see a message letting you know that your deployment is in process. Status displays on this page as the resources are created. It takes about 10 minutes for the Bastion resource to be created and deployed.
## Enable Azure DDoS protection
chaos-studio Chaos Studio Limitations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/chaos-studio/chaos-studio-limitations.md
During the public preview of Azure Chaos Studio, there are a few limitations and
## Limitations * The target resources must be in [one of the regions supported by the Azure Chaos Studio Preview](https://azure.microsoft.com/global-infrastructure/services/?products=chaos-studio).
+* Azure Chaos Studio tracked resources (for example, Experiments) currently do NOT support Resource Move. Experiments can be easily copied (by copying Experiment JSON) for use in other subscriptions, resource groups, or regions. Experiments can also already target resources across regions. Extension resources (Targets and Capabilities) do support Resource Move.
* For agent-based faults, the virtual machine must have outbound network access to the Chaos Studio agent service: * Regional endpoints to allowlist are listed in [Permissions and security in Azure Chaos Studio](chaos-studio-permissions-security.md#network-security). * If you're sending telemetry data to Application Insights, the IPs in [IP addresses used by Azure Monitor](../azure-monitor/app/ip-addresses.md) are also required.
cognitive-services Concept Model Customization https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Computer-vision/concept-model-customization.md
The following table describes the limits on the scale of your custom model proje
| Min # training images per category | 2 | 2 | | Max # tags per image | multiclass: 1 | NA | | Max # regions per image | NA | 1,000 |
-| Max # categories | 2,000 | 1,000 |
+| Max # categories | 2,500 | 1,000 |
| Min # categories | 2 | 1 | | Max image size (Training) | 20 MB | 20 MB | | Max image size (Prediction) | Sync: 6 MB, Batch: 20 MB | Sync: 6 MB, Batch: 20 MB |
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
This article shows how to use Azure AD authentication with the Speech SDK. You'l
> - Get an Azure AD access token > - Create the appropriate SDK configuration object.
+To learn more about Azure AD access tokens, including token lifetime, visit [Access tokens in the Microsoft identity platform](/azure/active-directory/develop/access-tokens).
+ ## Create a Speech resource To create a Speech resource in the [Azure portal](https://portal.azure.com), see [Get the keys for your resource](~/articles/cognitive-services/cognitive-services-apis-create-account.md#get-the-keys-for-your-resource)
With an Azure AD access token, you can now create a Speech SDK configuration obj
The method of providing the token, and the method to construct the corresponding Speech SDK ```Config``` object varies by the object you'll be using.
-### SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber, and SourceLanguageRecognizer
+### SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber
-For ```SpeechRecognizer```, ```SpeechSynthesizer```, ```IntentRecognizer```, ```ConversationTranscriber```, and ```SourceLanguageRecognizer``` objects, build the authorization token from the resource ID and the Azure AD access token and then use it to create a ```SpeechConfig``` object.
+For ```SpeechRecognizer```, ```SpeechSynthesizer```, ```IntentRecognizer```, ```ConversationTranscriber``` objects, build the authorization token from the resource ID and the Azure AD access token and then use it to create a ```SpeechConfig``` object.
::: zone pivot="programming-language-csharp" ```C#
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. |
| [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
+
+The DALL-E models, currently in preview, generate images from text prompts that the user provides.
+ ## Codex models The Codex models are descendants of our base GPT-3 models that can understand and generate code. Their training data contains both natural language and billions of lines of public code from GitHub.
These models can only be used with the Chat Completion API.
<sup>1</sup> The model is [only available by request](https://aka.ms/oai/get-gpt4).<br> <sup>2</sup> Currently, only version `0314` of this model is available.
+### Dall-E Models
+
+| Model ID | Base model Regions | Fine-Tuning Regions | Max Request (characters) | Training Data (up to) |
+| | | | | |
+| dalle2 | East US | N/A | 1000 | N/A |
++ ### Codex Models These models can only be used with Completions API requests.
cognitive-services Dall E Quickstart https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/dall-e-quickstart.md
+
+ Title: 'Quickstart - Generate an image using Azure OpenAI Service'
+
+description: Walkthrough on how to get started with Azure OpenAI and make your first image generation call.
+++++++ Last updated : 04/04/2023
+zone_pivot_groups: openai-quickstart-dall-e
++
+# Quickstart: Get started generating images using Azure OpenAI Service
++++++++
cognitive-services Completions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/how-to/completions.md
keywords:
The completions endpoint can be used for a wide variety of tasks. It provides a simple but powerful text-in, text-out interface to any of our [models](../concepts/models.md). You input some text as a prompt, and the model will generate a text completion that attempts to match whatever context or pattern you gave it. For example, if you give the API the prompt, "As Descartes said, I think, therefore", it will return the completion " I am" with high probability.
-The best way to start exploring completions is through our playground in [Azure OpenAI Studio](https://oai.azure.com). It's a simple text box where you can submit a prompt to generate a completion. You can start with a simple example like the following:
+The best way to start exploring completions is through our playground in [Azure AI Studio](https://oai.azure.com). It's a simple text box where you can submit a prompt to generate a completion. You can start with a simple example like the following:
`write a tagline for an ice cream shop`
cognitive-services Work With Code https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/how-to/work-with-code.md
You can use Codex for a variety of tasks including:
## How to use the Codex models
-Here are a few examples of using Codex that can be tested in [Azure OpenAI Studio's](https://oai.azure.com) playground with a deployment of a Codex series model, such as `code-davinci-002`.
+Here are a few examples of using Codex that can be tested in [Azure AI Studio's](https://oai.azure.com) playground with a deployment of a Codex series model, such as `code-davinci-002`.
### Saying "Hello" (Python)
cognitive-services Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/overview.md
keywords:
# What is Azure OpenAI Service?
-Azure OpenAI Service provides REST API access to OpenAI's powerful language models including the GPT-3, Codex and Embeddings model series. In addition, the new GPT-4 and ChatGPT (gpt-35-turbo) model series have now reached general availability. These models can be easily adapted to your specific task including but not limited to content generation, summarization, semantic search, and natural language to code translation. Users can access the service through REST APIs, Python SDK, or our web-based interface in the Azure OpenAI Studio.
+Azure OpenAI Service provides REST API access to OpenAI's powerful language models including the GPT-3, Codex and Embeddings model series. In addition, the new GPT-4 and ChatGPT (gpt-35-turbo) model series have now reached general availability. These models can be easily adapted to your specific task including but not limited to content generation, summarization, semantic search, and natural language to code translation. Users can access the service through REST APIs, Python SDK, or our web-based interface in the Azure AI Studio.
### Features overview
Azure OpenAI Service provides REST API access to OpenAI's powerful language mode
| Price | [Available here](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/) | | Virtual network support & private link support | Yes | | 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 |
+| UI experience | **Azure portal** for account & resource management, <br> **Azure OpenAI Service Studio** for model exploration and fine tuning |
| Regional availability | East US <br> South Central US <br> West Europe <br> France Central | | Content filtering | Prompts and completions are evaluated against our content policy with automated systems. High severity content will be filtered. |
With Azure OpenAI, customers get the security capabilities of Microsoft Azure wh
## Key concepts
-### Prompts & Completions
+### Prompts & completions
The completions endpoint is the core component of the API service. This API provides access to the model's text-in, text-out interface. Users simply need to provide an input **prompt** containing the English text command, and the model will generate a text **completion**.
The GPT-3 base models are known as Davinci, Curie, Babbage, and Ada in decreasin
The Codex series of models is a descendant of GPT-3 and has been trained on both natural language and code to power natural language to code use cases. Learn more about each model on our [models concept page](./concepts/models.md).
+The DALL-E models, currently in preview, generate images from text prompts that the user provides.
+ ## Next steps Learn more about the [underlying models that power Azure OpenAI](./concepts/models.md).
cognitive-services Quotas Limits https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/quotas-limits.md
The following sections provide you with a quick guide to the quotas and limits t
| Limit Name | Limit Value | |--|--| | OpenAI resources per region per Azure subscription | 3 |
-| Requests per minute per model* | Davinci-models (002 and later): 120 <br> ChatGPT model: 300 <br> GPT-4 models: 18 <br> All other models: 300 |
-| Tokens per minute per model* | Davinci-models (002 and later): 40,000 <br> ChatGPT model: 120,000 <br> GPT-4 8k model: 10,000 <br> GPT-4 32k model: 32,000 <br> All other models: 120,000 |
+| Request limits per model* | Davinci-models (002 and later): 120 per minute <br> ChatGPT model (preview): 300 per minute <br> GPT-4 models (preview): 18 per minute <br> DALL-E models (preview): 2 concurrent requests <br> All other models: 300 per minute |
+| Token limits per model* | Davinci-models (002 and later): 40,000 per minute <br> ChatGPT model: 120,000 per minute<br> GPT-4 8k model: 10,000 per minute<br> GPT-4 32k model: 32,000 per minute<br> All other models: 120,000 per minute|
| Max fine-tuned model deployments* | 2 | | Ability to deploy same model to multiple deployments | Not allowed | | Total number of training jobs per resource | 100 |
cognitive-services Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/reference.md
Output formatting adjusted for ease of reading, actual output is a single block
| ```logit_bias``` | object | Optional | null | Modify the likelihood of specified tokens appearing in the completion. Accepts a json object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token.| | ```user``` | string | Optional | | A unique identifier representing your end-user, which can help Azure OpenAI to monitor and detect abuse.| ++
+## Image generation
+
+### Request a generated image
+
+Generate a batch of images from a text caption. Image generation is currently only available with `api-version=2023-06-01-preview`.
+
+```http
+POST https://{your-resource-name}.openai.azure.com/openai/images/generations:submit?api-version={api-version}
+```
+
+**Path parameters**
+
+| Parameter | Type | Required? | Description |
+|--|--|--|--|
+| ```your-resource-name``` | string | Required | The name of your Azure OpenAI Resource. |
+| ```api-version``` | string | Required |The API version to use for this operation. This follows the YYYY-MM-DD format. |
+
+**Supported versions**
+
+- `2023-06-01-preview`
+
+**Request body**
+
+| Parameter | Type | Required? | Default | Description |
+|--|--|--|--|--|
+| ```prompt``` | string | Required | | A text description of the desired image(s). The maximum length is 1000 characters. |
+| ```n``` | integer | Optional | 1 | The number of images to generate. Must be between 1 and 5. |
+| ```size``` | string | Optional | 1024x1024 | The size of the generated images. Must be one of `256x256`, `512x512`, or `1024x1024`. |
+
+#### Example request
+
+```console
+curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/images/generations:submit?api-version=2023-06-01-preview \
+ -H "Content-Type: application/json" \
+ -H "api-key: YOUR_API_KEY" \
+ -d '{
+"prompt": "An avocado chair",
+"size": "512x512",
+"n": 3
+}'
+```
+
+#### Example response
+
+The operation returns a `202` status code and an `GenerateImagesResponse` JSON object containing the ID and status of the operation.
+
+```json
+{
+ "id": "f508bcf2-e651-4b4b-85a7-58ad77981ffa",
+ "status": "notRunning"
+}
+```
+
+### Get a generated image result
++
+Use this API to retrieve the results of an image generation operation. Image generation is currently only available with `api-version=2023-06-01-preview`.
+
+```http
+GET https://{your-resource-name}.openai.azure.com/openai/operations/images/{operation-id}?api-version={api-version}
+```
++
+**Path parameters**
+
+| Parameter | Type | Required? | Description |
+|--|--|--|--|
+| ```your-resource-name``` | string | Required | The name of your Azure OpenAI Resource. |
+| ```operation-id``` | string | Required | The GUID that identifies the original image generation request. |
+
+**Supported versions**
+
+- `2023-06-01-preview`
+
+#### Example request
+
+```console
+curl -X GET "https://{your-resource-name}.openai.azure.com/openai/operations/images/{operation-id}?api-version=2023-06-01-preview"
+-H "Content-Type: application/json"
+-H "Api-Key: {api key}"
+```
+
+#### Example response
+
+Upon success the operation returns a `200` status code and an `OperationResponse` JSON object. The `status` field can be `"notRunning"` (task is queued but hasn't started yet), `"running"`, `"succeeded"`, `"canceled"` (task has timed out), `"failed"`, or `"deleted"`. A `succeeded` status indicates that the generated image is available for download at the given URL. If multiple images were generated, their URLs are all returned in the `result.data` field.
+
+```json
+{
+ "created": 1685064331,
+ "expires": 1685150737,
+ "id": "4b755937-3173-4b49-bf3f-da6702a3971a",
+ "result": {
+ "data": [
+ {
+ "url": "<URL_TO_IMAGE>"
+ },
+ {
+ "url": "<URL_TO_NEXT_IMAGE>"
+ },
+ ...
+ ]
+ },
+ "status": "succeeded"
+}
+```
+
+### Delete a generated image from the server
+
+You can use the operation ID returned by the request to delete the corresponding image from the Azure server. Generated images are automatically deleted after 24 hours by default, but you can trigger the deletion earlier if you want to.
+
+```http
+DELETE https://{your-resource-name}.openai.azure.com/openai/operations/images/{operation-id}?api-version={api-version}
+```
+
+**Path parameters**
+
+| Parameter | Type | Required? | Description |
+|--|--|--|--|
+| ```your-resource-name``` | string | Required | The name of your Azure OpenAI Resource. |
+| ```operation-id``` | string | Required | The GUID that identifies the original image generation request. |
+
+**Supported versions**
+
+- `2023-06-01-preview`
+
+#### Example request
+
+```console
+curl -X DELETE "https://{your-resource-name}.openai.azure.com/openai/operations/images/{operation-id}?api-version=2023-06-01-preview"
+-H "Content-Type: application/json"
+-H "Api-Key: {api key}"
+```
+
+#### Response
+
+The operation returns a `204` status code if successful. This API only succeeds if the operation is in an end state (not `running`).
+ ## Management APIs Azure OpenAI is deployed as a part of the Azure Cognitive Services. All Cognitive Services rely on the same set of management APIs for creation, update and delete operations. The management APIs are also used for deploying models within an OpenAI resource.
Azure OpenAI is deployed as a part of the Azure Cognitive Services. All Cognitiv
## Next steps Learn about [managing deployments, models, and fine-tuning with the REST API](/rest/api/cognitiveservices/azureopenaistable/deployments/create).
-Learn more about the [underlying models that power Azure OpenAI](./concepts/models.md).
+Learn more about the [underlying models that power Azure OpenAI](./concepts/models.md).
cognitive-services Embeddings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/tutorials/embeddings.md
To successfully make a call against Azure OpenAI, you'll need an **endpoint** an
|Variable name | Value | |--|-|
-| `ENDPOINT` | This value can be found in the **Keys & Endpoint** section when examining your resource from the Azure portal. Alternatively, you can find the value in **Azure OpenAI Studio** > **Playground** > **Code View**. An example endpoint is: `https://docs-test-001.openai.azure.com`.|
+| `ENDPOINT` | This value can be found in the **Keys & Endpoint** section when examining your resource from the Azure portal. Alternatively, you can find the value in **Azure AI Studio** > **Playground** > **Code View**. An example endpoint is: `https://docs-test-001.openai.azure.com`.|
| `API-KEY` | This value can be found in the **Keys & Endpoint** section when examining your resource from the Azure portal. You can use either `KEY1` or `KEY2`.| Go to your resource in the Azure portal. The **Endpoint and Keys** can be found in the **Resource Management** section. Copy your endpoint and access key as you'll need both for authenticating your API calls. You can use either `KEY1` or `KEY2`. Always having two keys allows you to securely rotate and regenerate keys without causing a service disruption.
cognitive-services Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/openai/whats-new.md
If you are currently using the `2023-03-15-preview` API, we recommend migrating
## April 2023
+- **DALL-E 2 public preview**. Azure OpenAI Service now supports image generation APIs powered by OpenAI's DALL-E 2 model. Get AI-generated images based on the descriptive text you provide. To learn more, check out the [quickstart](./dall-e-quickstart.md). To request access, existing Azure OpenAI customers can [apply by filling out this form](https://aka.ms/oai/access).
+ - **Inactive deployments of customized models will now be deleted after 15 days; models will remain available for redeployment.** If a customized (fine-tuned) model is deployed for more than fifteen (15) days during which no completions or chat completions calls are made to it, the deployment will automatically be deleted (and no further hosting charges will be incurred for that deployment). The underlying customized model will remain available and can be redeployed at any time. To learn more check out the [how-to-article](/azure/cognitive-services/openai/how-to/fine-tuning?pivots=programming-language-studio#deploy-a-customized-model).
communication-services Direct Routing Infrastructure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/communication-services/concepts/telephony/direct-routing-infrastructure.md
These three FQDNs in order are required to:
The FQDNs ΓÇö sip.pstnhub.microsoft.com, sip2.pstnhub.microsoft.com, and sip3.pstnhub.microsoft.com ΓÇö resolve to one of the following IP addresses: -- `52.112.0.0/14 (IP addresses from 52.112.0.1 to 52.115.255.254)`-- `52.120.0.0/14 (IP addresses from 52.120.0.1 to 52.123.255.254)`
+- `52.112.0.0/14 (IP addresses from 52.112.0.0 to 52.115.255.255)`
+- `52.120.0.0/14 (IP addresses from 52.120.0.0 to 52.123.255.255)`
Open firewall ports for all these IP address ranges to allow incoming and outgoing traffic to and from the addresses for signaling.
The SBC makes a DNS query to resolve sip.pstnhub.microsoft.com. Based on the SBC
The media traffic flows to and from a separate service called Media Processor. The IP address ranges for media traffic are the same as for signaling: -- `52.112.0.0/14 (IP addresses from 52.112.0.1 to 52.115.255.254)`-- `52.120.0.0/14 (IP addresses from 52.120.0.1 to 52.123.255.254)`
+- `52.112.0.0/14 (IP addresses from 52.112.0.0 to 52.115.255.255)`
+- `52.120.0.0/14 (IP addresses from 52.120.0.0 to 52.123.255.255)`
### Port ranges The port ranges of the Media Processors are shown in the following table:
container-apps Connect Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/connect-apps.md
You can call other container apps in the same environment from your application
- default fully qualified domain name (FQDN) - a custom domain name-- the container app name, for instance `https://<APP_NAME>` for internal requests
+- the container app name, for instance `http://<APP_NAME>` for internal requests
- a Dapr URL > [!NOTE]
container-apps Custom Domains Managed Certificates https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/custom-domains-managed-certificates.md
zone_pivot_groups: azure-cli-or-portal
-# Custom domain names and managed certificates in Azure Container Apps (preview)
+# Custom domain names and free managed certificates in Azure Container Apps (preview)