Skip to content

Commit 0a6c507

Browse files
authored
Merge pull request #197664 from MicrosoftDocs/main
Merge main to live, 4 AM
2 parents 77376f2 + c0254eb commit 0a6c507

File tree

96 files changed

+1372
-285
lines changed

Some content is hidden

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

96 files changed

+1372
-285
lines changed

.openpublishing.redirection.defender-for-cloud.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,16 @@
684684
"source_path_from_root": "/articles/defender-for-cloud/defender-for-kubernetes-azure-arc.md",
685685
"redirect_url": "/azure/defender-for-cloud/defender-for-containers-enable?pivots=defender-for-container-arc#protect-arc-enabled-kubernetes-clusters",
686686
"redirect_document_id": true
687+
},
688+
{
689+
"source_path_from_root": "/articles/defender-for-cloud/defender-for-container-registries-cicd.md",
690+
"redirect_url": "/azure/defender-for-cloud/defender-for-containers-cicd",
691+
"redirect_document_id": true
692+
},
693+
{
694+
"source_path_from_root": "/articles/defender-for-cloud/defender-for-container-registries-usage.md",
695+
"redirect_url": "/azure/defender-for-cloud/defender-for-containers-usage",
696+
"redirect_document_id": true
687697
}
688698
]
689699
}

articles/active-directory/app-provisioning/provision-on-demand.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Use on-demand provisioning to provision a user into an application in seconds. A
3030
1. Search for a user by first name, last name, display name, user principal name, or email address.
3131
> [!NOTE]
3232
> For Cloud HR provisioning app (Workday/SuccessFactors to AD/Azure AD), the input value is different.
33-
> For Workday scenario, please provide "WID" of the user in Workday.
33+
> For Workday scenario, please provide "WorkerID" or "WID" of the user in Workday.
3434
> For SuccessFactors scenario, please provide "personIdExternal" of the user in SuccessFactors.
3535
3636
1. Select **Provision** at the bottom of the page.

articles/active-directory/saas-apps/workday-writeback-tutorial.md

Lines changed: 179 additions & 24 deletions
Large diffs are not rendered by default.

articles/api-management/how-to-self-hosted-gateway-on-kubernetes-in-production.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,28 @@ Pods can experience disruption due to [various](https://kubernetes.io/docs/conce
147147

148148
Consider using [Pod Disruption Budgets](https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#pod-disruption-budgets) to enforce a minimum number of pods to be available at any given time.
149149

150+
## Security
151+
The self-hosted gateway is able to run as non-root in Kubernetes allowing customers to run the gateway securely.
152+
153+
Here is an example of the security context for the self-hosted gateway:
154+
```yml
155+
securityContext:
156+
allowPrivilegeEscalation: false
157+
runAsNonRoot: true
158+
runAsUser: 1001 # This is a built-in user, but you can use any user ie 1000 as well
159+
runAsGroup: 2000 # This is just an example
160+
privileged: false
161+
capabilities:
162+
drop:
163+
- all
164+
```
165+
166+
> [!WARNING]
167+
> Running the self-hosted gateway with read-only filesystem (`readOnlyRootFilesystem: true`) is not supported.
168+
169+
> [!WARNING]
170+
> When using local CA certificates, the self-hosted gateway must run with user ID (UID) `1001` in order to manage the CA certificates otherwise the gateway will not start up.
171+
150172
## Next steps
151173

152174
* To learn more about the self-hosted gateway, see [Self-hosted gateway overview](self-hosted-gateway-overview.md).

articles/api-management/self-hosted-gateway-overview.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Deploying self-hosted gateways into the same environments where the backend API
3939

4040
The self-hosted gateway is a containerized, functionally equivalent version of the managed gateway deployed to Azure as part of every API Management service. The self-hosted gateway is available as a Linux-based Docker [container image](https://aka.ms/apim/sputnik/dhub) from the Microsoft Container Registry. It can be deployed to Docker, Kubernetes, or any other container orchestration solution running on a server cluster on premises, cloud infrastructure, or for evaluation and development purposes, on a personal computer. You can also deploy the self-hosted gateway as a cluster extension to an [Azure Arc-enabled Kubernetes cluster](./how-to-deploy-self-hosted-gateway-azure-arc.md).
4141

42+
### Known limitations
43+
4244
The following functionality found in the managed gateways is **not available** in the self-hosted gateways:
4345

4446
- Sending resource logs (diagnostic logs) to Azure Monitor. However, you can [send metrics](how-to-configure-cloud-metrics-logs.md) to Azure Monitor, or [configure and persist logs locally](how-to-configure-local-metrics-logs.md) where the self-hosted gateway is deployed.
23.7 KB
Loading

articles/application-gateway/overview-v2.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ The new v2 SKU includes the following enhancements:
2525
- **Key Vault Integration**: Application Gateway v2 supports integration with Key Vault for server certificates that are attached to HTTPS enabled listeners. For more information, see [TLS termination with Key Vault certificates](key-vault-certs.md).
2626
- **Mutual Authentication (mTLS)**: Application Gateway v2 supports authentication of client requests. For more information, see [Overview of mutual authentication with Application Gateway](mutual-authentication-overview.md).
2727
- **Azure Kubernetes Service Ingress Controller**: The Application Gateway v2 Ingress Controller allows the Azure Application Gateway to be used as the ingress for an Azure Kubernetes Service (AKS) known as AKS Cluster. For more information, see [What is Application Gateway Ingress Controller?](ingress-controller-overview.md).
28+
- **Private link**: The v2 SKU offers private connectivity from other virtual networks in other regions and subscriptions through the use of private endpoints.
2829
- **Performance enhancements**: The v2 SKU offers up to 5X better TLS offload performance as compared to the Standard/WAF SKU.
2930
- **Faster deployment and update time** The v2 SKU provides faster deployment and update time as compared to Standard/WAF SKU. This also includes WAF configuration changes.
3031

@@ -72,6 +73,7 @@ The following table compares the features available with each SKU.
7273
| URL-based routing | ✓ | ✓ |
7374
| Multiple-site hosting | ✓ | ✓ |
7475
| Mutual Authentication (mTLS) | | ✓ |
76+
| Private Link support | | ✓ |
7577
| Traffic redirection | ✓ | ✓ |
7678
| Web Application Firewall (WAF) | ✓ | ✓ |
7779
| WAF custom rules | | ✓ |
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
---
2+
title: Configure Azure Application Gateway Private Link
3+
description: This article shows you how to configure Application Gateway Private Link.
4+
services: application-gateway
5+
author: greglin
6+
ms.service: application-gateway
7+
ms.topic: how-to
8+
ms.date: 05/09/2022
9+
ms.author: greglin
10+
11+
---
12+
13+
# Configure Azure Application Gateway Private Link
14+
15+
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).
16+
17+
:::image type="content" source="media/private-link/private-link.png" alt-text="Diagram showing Application Gateway Private Link":::
18+
19+
20+
## Configuration options
21+
22+
Application Gateway Private Link can be configured via multiple options, such as, but not limited to, the Azure portal, Azure PowerShell, and Azure CLI.
23+
24+
# [Azure portal](#tab/portal)
25+
26+
**Define a subnet for Private Link Configuration**
27+
28+
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.
29+
30+
> [!Note]
31+
> The maximum number of IP addresses per private link configuration is eight. Only dynamic allocation is supported.
32+
33+
The following steps can be completed to create a new subnet:
34+
35+
[Add, change, or delete a virtual network subnet](../virtual-network/virtual-network-manage-subnet.md#add-a-subnet)
36+
37+
**Configure Private Link**
38+
39+
The Private link configuration defines the infrastructure used by Application Gateway to enable connections from Private Endpoints. To create the Private link configuration, complete the following steps:
40+
41+
1. Go to the [Azure portal](https://portal.azure.com)
42+
1. Search for and select **Application Gateways**.
43+
1. Select the name of the application gateway you want to enable private link.
44+
1. Select **Private link**
45+
1. Configure the following items:
46+
47+
- **Name**: The name of the private link configuration.
48+
- **Private link subnet**: The subnet IP addresses should be consumed from.
49+
- **Frontend IP Configuration**: The frontend IP address that private link should forward traffic to on Application Gateway.
50+
- **Private IP address settings**: specify at least one IP address
51+
1. Select **Add**.
52+
53+
**Configure Private Endpoint**
54+
55+
A private endpoint is a network interface that uses a private IP address from the virtual network containing clients wishing to connect to your 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:
56+
57+
1. Select the **Private endpoint connections** tab.
58+
1. Select **Create**.
59+
1. On the **Basics** tab, configure a resource group, name, and region for the Private Endpoint. Select **Next**.
60+
1. On the **Resource** tab, select **Next**.
61+
1. On the **Virtual Network** tab, configure a virtual network and subnet where the private endpoint network interface should be provisioned to. Configure whether the private endpoint should have a dynamic or static IP address. Last, configure if you want a new private link zone to be created to automatically manage IP addressing. Select **Next**.
62+
1. On the **Tags** tab, optionally configure resource tags. Select **Next**.
63+
1. Select **Create**.
64+
65+
> [!Note]
66+
> If the public or private IP configuration resource is missing when trying to select a _Target sub-resource_ on the _Resource_ tab of private endpoint creation, please ensure a listener is actively utilizing the respected frontend IP configuration. Frontend IP configurations without an associated listener will not be shown as a _Target sub-resource_.
67+
68+
# [Azure PowerShell](#tab/powershell)
69+
70+
To configure Private link on an existing Application Gateway via Azure PowerShell, the following commands can be referenced:
71+
72+
```azurepowershell
73+
# Disable Private Link Service Network Policies
74+
# https://docs.microsoft.com/azure/private-link/disable-private-endpoint-network-policy
75+
$net =@{
76+
Name = 'AppGW-PL-PSH'
77+
ResourceGroupName = 'AppGW-PL-PSH-RG'
78+
}
79+
$vnet = Get-AzVirtualNetwork @net
80+
81+
($vnet | Select -ExpandProperty subnets | Where-Object {$_.Name -eq 'AppGW-PL-Subnet'}).PrivateLinkServiceNetworkPolicies = "Disabled"
82+
83+
$vnet | Set-AzVirtualNetwork
84+
85+
# Get Application Gateway Frontend IP Name
86+
$agw = Get-AzApplicationGateway -Name AppGW-PL-PSH -ResourceGroupName AppGW-PL-PSH-RG
87+
# List the names
88+
$agw.FrontendIPConfigurations | Select Name
89+
90+
# Add a new Private Link configuration and associate it with an existing Frontend IP
91+
$PrivateLinkIpConfiguration = New-AzApplicationGatewayPrivateLinkIpConfiguration `
92+
-Name "ipConfig01" `
93+
-Subnet ($vnet | Select -ExpandProperty subnets | Where-Object {$_.Name -eq 'AppGW-PL-Subnet'}) `
94+
-Primary
95+
96+
# Add the Private Link configuration to the gateway configuration
97+
Add-AzApplicationGatewayPrivateLinkConfiguration `
98+
-ApplicationGateway $agw `
99+
-Name "privateLinkConfig01" `
100+
-IpConfiguration $PrivateLinkIpConfiguration
101+
102+
# Associate private link configuration to Frontend IP
103+
$agwPip = ($agw | Select -ExpandProperty FrontendIpConfigurations| Where-Object {$_.Name -eq 'appGwPublicFrontendIp'}).PublicIPAddress.Id
104+
$privateLinkConfiguration = ($agw | Select -ExpandProperty PrivateLinkConfigurations | Where-Object {$_.Name -eq 'privateLinkConfig01'}).Id
105+
Set-AzApplicationGatewayFrontendIPConfig -ApplicationGateway $agw -Name "appGwPublicFrontendIp" -PublicIPAddressId $agwPip -PrivateLinkConfigurationId $privateLinkConfiguration
106+
107+
# Apply the change to the gateway
108+
Set-AzApplicationGateway -ApplicationGateway $agw
109+
110+
# Disable Private Endpoint Network Policies
111+
# https://docs.microsoft.com/azure/private-link/disable-private-endpoint-network-policy
112+
$net =@{
113+
Name = 'AppGW-PL-Endpoint-PSH-VNET'
114+
ResourceGroupName = 'AppGW-PL-Endpoint-PSH-RG'
115+
}
116+
$vnet_plendpoint = Get-AzVirtualNetwork @net
117+
118+
($vnet_plendpoint | Select -ExpandProperty subnets | Where-Object {$_.Name -eq 'MySubnet'}).PrivateEndpointNetworkPolicies = "Disabled"
119+
120+
$vnet_plendpoint | Set-AzVirtualNetwork
121+
122+
# Create Private Link Endpoint - Group ID is the same as the frontend IP configuration
123+
$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "AppGW-PL-Connection" -PrivateLinkServiceId $agw.Id -GroupID "appGwPublicFrontendIp"
124+
125+
## Create private endpoint
126+
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
127+
```
128+
A list of all Azure PowerShell references for Private Link Configuration on Application Gateway can be found here:
129+
- [Get-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/get-azapplicationgatewayprivatelinkconfiguration)
130+
- [New-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/new-azapplicationgatewayprivatelinkconfiguration)
131+
- [New-AzApplicationGatewayPrivateLinkIpConfiguration](/powershell/module/az.network/new-azapplicationgatewayprivatelinkipconfiguration)
132+
- [Add-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/add-azapplicationgatewayprivatelinkconfiguration)
133+
- [Remove-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/remove-azapplicationgatewayprivatelinkconfiguration)
134+
- [Set-AzApplicationGatewayPrivateLinkConfiguration](/powershell/module/az.network/set-azapplicationgatewayprivatelinkconfiguration)
135+
136+
# [Azure CLI](#tab/cli)
137+
138+
To configure Private link on an existing Application Gateway via Azure CLI, the following commands can be referenced:
139+
140+
```azurecli
141+
# Disable Private Link Service Network Policies
142+
# https://docs.microsoft.com/en-us/azure/private-link/disable-private-endpoint-network-policy
143+
az network vnet subnet update \
144+
--name AppGW-PL-Subnet \
145+
--vnet-name AppGW-PL-CLI-VNET \
146+
--resource-group AppGW-PL-CLI-RG \
147+
--disable-private-link-service-network-policies true
148+
149+
# Get Application Gateway Frontend IP Name
150+
az network application-gateway frontend-ip list \
151+
--gateway-name AppGW-PL-CLI \
152+
--resource-group AppGW-PL-CLI-RG
153+
154+
# Add a new Private Link configuration and associate it with an existing Frontend IP
155+
az network application-gateway private-link add \
156+
--frontend-ip appGwPublicFrontendIp \
157+
--name privateLinkConfig01 \
158+
--subnet /subscriptions/XXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/AppGW-PL-CLI-RG/providers/Microsoft.Network/virtualNetworks/AppGW-PL-CLI-VNET/subnets/AppGW-PL-Subnet \
159+
--gateway-name AppGW-PL-CLI \
160+
--resource-group AppGW-PL-CLI-RG
161+
162+
# Get Private Link resource ID
163+
az network application-gateway private-link list \
164+
--gateway-name AppGW-PL-CLI \
165+
--resource-group AppGW-PL-CLI-RG
166+
167+
168+
169+
# Disable Private Endpoint Network Policies
170+
# https://docs.microsoft.com/en-us/azure/private-link/disable-private-endpoint-network-policy
171+
az network vnet subnet update \
172+
--name MySubnet \
173+
--vnet-name AppGW-PL-Endpoint-CLI-VNET \
174+
--resource-group AppGW-PL-Endpoint-CLI-RG \
175+
--disable-private-endpoint-network-policies true
176+
177+
# Create Private Link Endpoint - Group ID is the same as the frontend IP configuration
178+
az network private-endpoint create \
179+
--name AppGWPrivateEndpoint \
180+
--resource-group AppGW-PL-Endpoint-CLI-RG \
181+
--vnet-name AppGW-PL-Endpoint-CLI-VNET \
182+
--subnet MySubnet \
183+
--group-id appGwPublicFrontendIp \
184+
--private-connection-resource-id /subscriptions/XXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/AppGW-PL-CLI-RG/providers/Microsoft.Network/applicationGateways/AppGW-PL-CLI \
185+
--connection-name AppGW-PL-Connection
186+
```
187+
188+
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)
189+
190+
---
191+
192+
## Next steps
193+
194+
- Learn about Azure Private Link: [What is Azure Private Link?](../private-link/private-link-overview.md)

0 commit comments

Comments
 (0)