Skip to content

Commit 389a029

Browse files
authored
Merge pull request #313043 from MicrosoftDocs/main
[Out of Band Publish] <release-migrate-agent-public-preview> - 12/03- 10:00 AM IST
2 parents f94fb2a + b9fc0df commit 389a029

44 files changed

Lines changed: 1781 additions & 938 deletions

File tree

Some content is hidden

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

articles/app-service/monitor-app-service.md

Lines changed: 322 additions & 7 deletions
Large diffs are not rendered by default.

articles/bastion/bastion-connect-vm-rdp-windows.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Before you begin, verify that you meet the following criteria:
3131
|---|---|---|
3232
| Azure portal (browser) | Basic | None |
3333
| Azure portal with custom ports | Standard | None |
34-
| IP-based connection | Standard | [IP-based connection](connect-ip-address.md#configure-bastion) enabled |
34+
| IP-based connection | Standard | [IP-based connection](connect-ip-address.md#sku-requirements) enabled |
3535
| Native client (RDP) | Standard | [Native client support](native-client.md) enabled |
3636

3737
* Users connecting via RDP must have rights on the target virtual machine. If the user isn't a local administrator, add them to the **Remote Desktop Users** group.
Lines changed: 39 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,69 @@
11
---
2-
title: 'Connect to a VM - specified private IP address: Azure portal'
2+
title: 'About Azure Bastion IP-based connection'
33
titleSuffix: Azure Bastion
4-
description: Learn how to connect to your virtual machines using a specified private IP address via Azure Bastion.
4+
description: Learn about IP-based connection in Azure Bastion, including supported scenarios, SKU requirements, and limitations.
55
author: abell
66
ms.service: azure-bastion
7-
ms.topic: how-to
8-
ms.date: 03/03/2025
7+
ms.topic: concept-article
8+
ms.date: 03/09/2026
99
ms.author: abell
10-
ms.custom: sfi-image-nochange
1110

12-
# Customer intent: As a network administrator, I want to configure and connect to virtual machines using a specified private IP address via Bastion, so that I can securely manage resources in my network environment.
11+
# Customer intent: As a network administrator, I want to understand how IP-based connection works with Azure Bastion, so that I can determine whether it's the right approach for securely connecting to on-premises, non-Azure, or Azure virtual machines.
1312
---
1413

15-
# Connect to a VM via specified private IP address
14+
# About Azure Bastion IP-based connection
1615

17-
IP-based connection lets you connect to your on-premises, non-Azure, and Azure virtual machines via Azure Bastion over ExpressRoute or a VPN site-to-site connection using a specified private IP address. The steps in this article show you how to configure your Bastion deployment, and then connect to an on-premises resource using IP-based connection. For more information about Azure Bastion, see the [Overview](bastion-overview.md).
16+
IP-based connection lets you connect to your on-premises, non-Azure, and Azure virtual machines via Azure Bastion using a specified IP address. Unlike standard Bastion connections that use the Azure Resource Manager resource ID of a target virtual machine, IP-based connections target a virtual machine by its IP address. This makes it possible to connect to machines that aren't registered as Azure resources, such as on-premises servers or VMs running in other cloud environments.
1817

19-
:::image type="content" source="./media/connect-ip-address/architecture.png" alt-text="Diagram that shows the Azure Bastion architecture." lightbox="./media/connect-ip-address/architecture.png":::
18+
## Architecture
2019

21-
> [!NOTE]
22-
> This configuration requires the Standard SKU or higher for Azure Bastion. To upgrade, see [Upgrade a SKU](upgrade-sku.md).
23-
>
20+
The following diagram shows the IP-based connection architecture. Azure Bastion, deployed in its virtual network, connects to a target virtual machine using the virtual machine's IP address over an ExpressRoute circuit or VPN site-to-site connection. The connection doesn't require the target virtual machine to have a public IP address or to be an Azure resource.
2421

25-
**Limitations**
22+
:::image type="content" source="./media/connect-ip-address/architecture.png" alt-text="Diagram that shows how IP-based connections work over Azure ExpressRoute private peering or VPN site-to-site connections, extending Azure Bastion secure connectivity beyond Azure-hosted workloads." lightbox="./media/connect-ip-address/architecture.png":::
2623

27-
* IP-based connection won’t work with force tunneling over VPN, or when a default route is advertised over an ExpressRoute circuit. Azure Bastion requires access to the Internet and force tunneling, or the default route advertisement will result in traffic blackholing.
24+
In this scenario:
25+
* Azure Bastion routes the RDP or SSH traffic through the ExpressRoute or VPN connection to reach the target virtual machine at the specified IP address.
26+
* The connection is secured through the Bastion host, so the target virtual machine doesn't need to be exposed to the public internet.
2827

29-
* Microsoft Entra authentication isn't supported for RDP connections. Microsoft Entra authentication is supported for SSH connections via native client.
28+
## Supported scenarios
3029

31-
* Custom ports and protocols aren't currently supported when connecting to a VM via native client.
30+
IP-based connection supports the following scenarios:
3231

33-
* UDR isn't supported on Bastion subnet, including with IP-based connection.
32+
* **On-premises virtual machines:** Connect to virtual machines running in your on-premises datacenter through an [ExpressRoute private peering](../expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering.md) or [VPN site-to-site connection](../vpn-gateway/add-remove-site-to-site-connections.md).
33+
* **Non-Azure virtual machines:** Connect to virtual machines hosted in other cloud environments that are reachable from the Azure virtual network through ExpressRoute or VPN.
34+
* **Azure virtual machines:** Connect to Azure virtual machines by specifying an IP address instead of selecting the virtual machine resource in the portal. This is useful when the target virtual machine is in a peered or connected virtual network.
3435

35-
## Prerequisites
36+
## Supported connection methods
3637

37-
Before you begin these steps, verify that you have the following environment set up:
38+
The following table summarizes the connection methods available with IP-based connection:
3839

39-
* A VNet with Bastion already deployed.
40+
| Connection method | Protocol | Details |
41+
|---|---|---|
42+
| Azure portal (browser) | RDP, SSH | Provides browser-based RDP or SSH sessions from the Bastion **Connect** page by targeting an IP address. For step-by-step guidance, see [Connect to a Windows VM using RDP](bastion-connect-vm-rdp-windows.md). |
43+
| Native client (Azure CLI) | RDP | Provides RDP connectivity from a Windows client using `az network bastion rdp` with the `--target-ip-address` parameter. For connection steps, see [Connect from a Windows native client](connect-vm-native-client-windows.md). |
44+
| Native client (Azure CLI) | SSH | Provides SSH connectivity from Windows or Linux clients using `az network bastion ssh` with the `--target-ip-address` parameter. For connection steps, see [Connect from a Windows native client](connect-vm-native-client-windows.md) or [Connect from a Linux native client](connect-vm-native-client-linux.md). |
45+
| Native client (Azure CLI) | Tunnel | Creates an IP-based TCP tunnel using `az network bastion tunnel` with the `--target-ip-address` parameter. For configuration steps, see [Configure Bastion native client support](native-client.md). |
4046

41-
* Make sure that you have deployed Bastion to the virtual network. Once the Bastion service is provisioned and deployed in your virtual network, you can use it to connect to any VM deployed in any of the virtual networks that is reachable from Bastion.
42-
* To deploy Bastion, see [Quickstart: Deploy Bastion with default settings and the Standard SKU](quickstart-host-portal.md).
47+
## SKU requirements
4348

44-
* A virtual machine in any reachable virtual network. This is the virtual machine to which you'll connect.
49+
IP-based connection requires the **Standard** SKU tier or higher for Azure Bastion. The Basic and Developer SKUs don't support this feature. You must also enable the **IP-based connection** setting on the Bastion **Configuration** page.
4550

46-
## Configure Bastion
51+
For information about SKU capabilities, see [Choose the right Azure Bastion SKU](bastion-sku-comparison.md). To upgrade your Bastion deployment, see [Upgrade a SKU](upgrade-sku.md).
4752

48-
1. Sign in to the [Azure portal](https://portal.azure.com/).
53+
## Limitations
4954

50-
1. In the Azure portal, go to your Bastion deployment.
55+
* **Force tunneling:** IP-based connection doesn't work with force tunneling over VPN, or when a default route is advertised over an ExpressRoute circuit. Azure Bastion requires access to the internet. Force tunneling or default route advertisement results in traffic being dropped.
5156

52-
1. IP based connection requires the Standard SKU or higher. On the **Configuration** page, for **SKU**, verify the SKU is set to the **Standard** SKU or higher. If the SKU is set to the Basic SKU, select a higher SKU from the dropdown.
57+
* **Microsoft Entra ID authentication:** Microsoft Entra authentication isn't supported for RDP connections via IP address. Microsoft Entra authentication is supported for SSH connections via native client. For more information, see [Microsoft Entra ID authentication](bastion-entra-id-authentication.md).
5358

54-
1. To enable **IP based connection**, select **IP based connection**.
59+
* **Custom ports and protocols:** Custom ports and protocols aren't currently supported when connecting to a virtual machine via native client with IP-based connections.
5560

56-
1. Select **Apply** to apply the changes. It takes a few minutes for the Bastion configuration to complete.
57-
58-
## Connect to VM - Azure portal
59-
60-
1. To connect to a VM using a specified private IP address, you make the connection from Bastion to the VM, not directly from the VM page. On your Bastion page, select **Connect** to open the Connect page.
61-
62-
1. On the Bastion **Connect** page, for **IP address**, enter the private IP address of the target VM.
63-
64-
:::image type="content" source="./media/connect-ip-address/ip-address.png" alt-text="Screenshot of the Connect using Azure Bastion page." lightbox="./media/connect-ip-address/ip-address.png":::
65-
66-
1. Adjust your connection settings to the desired **Protocol** and **Port**.
67-
68-
1. Enter your credentials in **Username** and **Password**.
69-
70-
1. Select **Connect** to connect to your virtual machine.
71-
72-
## Connect to VM - native client
73-
74-
You can connect to VMs using a specified IP address with native client via SSH, RDP, or tunneling. To learn more about configuring native client support, see [Configure Bastion native client support](native-client.md).
75-
76-
> [!NOTE]
77-
> This feature does not currently support Microsoft Entra authentication or custom port and protocol.
78-
79-
Use the following commands as examples:
80-
81-
**RDP:**
82-
83-
```azurecli
84-
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>
85-
```
86-
87-
**SSH:**
88-
89-
```azurecli
90-
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"
91-
```
92-
93-
**Tunnel:**
94-
95-
```azurecli
96-
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
97-
```
61+
* **UDR:** User-defined routes (UDR) aren't supported on the Bastion subnet, including with IP-based connections.
9862

9963
## Next steps
10064

101-
Read the [Bastion FAQ](bastion-faq.md) for additional information.
65+
* [Create an RDP connection to a Windows VM](bastion-connect-vm-rdp-windows.md)
66+
* [Connect from a Windows native client](connect-vm-native-client-windows.md)
67+
* [Connect from a Linux native client](connect-vm-native-client-linux.md)
68+
* [Configure Bastion native client support](native-client.md)
69+
* [Azure Bastion FAQ](bastion-faq.md)

articles/batch/create-pool-ephemeral-os-disk.md

Lines changed: 90 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Use ephemeral OS disk nodes for Azure Batch pools
33
description: Learn how and why to create a Batch pool that uses ephemeral OS disk nodes.
44
ms.topic: how-to
5-
ms.date: 03/27/2025
5+
ms.date: 03/06/2026
66
ms.devlang: csharp
77
# Customer intent: "As a cloud architect, I want to configure Azure Batch pools with ephemeral OS disks, so that I can reduce costs and improve application performance for stateless workloads."
88
---
@@ -40,30 +40,102 @@ The following example shows how to create a Batch pool where the nodes use ephem
4040

4141
### Code examples
4242

43-
This code snippet shows how to create a pool with ephemeral OS disks using Azure Batch Python SDK with the Ephemeral OS disk using the temporary disk (cache).
43+
This code snippet shows how to create a pool with ephemeral OS disks using the azure-mgmt-batch Python SDK with the ephemeral OS disk using the temporary disk (cache).
4444

4545
```python
46-
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
47-
image_reference=image_ref_to_use,
48-
node_agent_sku_id=node_sku_id,
49-
os_disk=batch.models.OSDisk(
50-
ephemeral_os_disk_settings=batch.models.DiffDiskSettings(
51-
placement=batch.models.DiffDiskPlacement.cache_disk
52-
)
53-
)
46+
from azure.identity import DefaultAzureCredential
47+
from azure.mgmt.batch import BatchManagementClient
48+
from azure.mgmt.batch.models import (
49+
BatchAccountPoolData,
50+
DeploymentConfiguration,
51+
VirtualMachineConfiguration,
52+
ImageReference,
53+
OSDisk,
54+
DiffDiskSettings,
55+
DiffDiskPlacement,
5456
)
57+
58+
59+
def create_pool_with_ephemeral_os_disk():
60+
client = BatchManagementClient(
61+
credential=DefaultAzureCredential(),
62+
subscription_id="subscriptionId",
63+
)
64+
65+
pool = client.pool.create(
66+
resource_group_name="resourceGroupName",
67+
account_name="accountName",
68+
pool_name="ephemeralOSDiskPool",
69+
parameters=BatchAccountPoolData(
70+
vm_size="standard_ds1_v2",
71+
deployment_configuration=DeploymentConfiguration(
72+
virtual_machine_configuration=VirtualMachineConfiguration(
73+
image_reference=ImageReference(
74+
publisher="Canonical",
75+
offer="UbuntuServer",
76+
sku="22.04-LTS",
77+
),
78+
node_agent_sku_id="batch.node.ubuntu 22.04",
79+
os_disk=OSDisk(
80+
ephemeral_os_disk_settings=DiffDiskSettings(
81+
placement=DiffDiskPlacement.CACHE_DISK
82+
)
83+
),
84+
)
85+
),
86+
),
87+
)
5588
```
5689

57-
This is the same code snippet but for creating a pool with ephemeral OS disks using the Azure Batch .NET SDK and C#.
90+
This is the same code snippet but for creating a pool with ephemeral OS disks using the Azure.ResourceManager.Batch SDK and C#.
5891

5992
```csharp
60-
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
61-
imageReference: imageReference,
62-
nodeAgentSkuId: nodeAgentSku
63-
);
64-
virtualMachineConfiguration.OSDisk = new OSDisk();
65-
virtualMachineConfiguration.OSDisk.EphemeralOSDiskSettings = new DiffDiskSettings();
66-
virtualMachineConfiguration.OSDisk.EphemeralOSDiskSettings.Placement = DiffDiskPlacement.CacheDisk;
93+
using Azure;
94+
using Azure.Identity;
95+
using Azure.ResourceManager;
96+
using Azure.ResourceManager.Batch;
97+
using Azure.ResourceManager.Batch.Models;
98+
99+
//...
100+
101+
public async Task SetEphemeralOSDisk()
102+
{
103+
ArmClient client = new ArmClient(new DefaultAzureCredential());
104+
105+
ResourceIdentifier batchAccountResourceId =
106+
BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
107+
BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
108+
109+
BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();
110+
111+
BatchAccountPoolData poolData = new BatchAccountPoolData()
112+
{
113+
VmSize = "standard_ds1_v2",
114+
DeploymentConfiguration = new BatchDeploymentConfiguration()
115+
{
116+
VmConfiguration = new BatchVmConfiguration(
117+
imageReference: new BatchImageReference()
118+
{
119+
Publisher = "Canonical",
120+
Offer = "UbuntuServer",
121+
Sku = "22.04-LTS"
122+
},
123+
nodeAgentSkuId: "batch.node.ubuntu 22.04")
124+
{
125+
OSDisk = new BatchOSDisk()
126+
{
127+
EphemeralOSDiskSettings = new DiffDiskSettings()
128+
{
129+
Placement = BatchDiffDiskPlacement.CacheDisk
130+
}
131+
}
132+
}
133+
}
134+
};
135+
136+
ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
137+
WaitUntil.Completed, "ephemeralOSDiskPool", poolData);
138+
}
67139
```
68140

69141
## Next steps

articles/batch/disk-encryption.md

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Create a pool with disk encryption enabled
33
description: Learn how to use disk encryption configuration to encrypt nodes with a platform-managed key.
44
ms.topic: how-to
5-
ms.date: 07/01/2025
5+
ms.date: 03/06/2026
66
ms.devlang: csharp
77
ms.custom: devx-track-azurecli
88
# Customer intent: "As a cloud administrator, I want to create a Batch pool with disk encryption enabled, so that I can safeguard data on the compute nodes while reducing management overhead."
@@ -46,14 +46,54 @@ After the pool is created, you can see the disk encryption configuration targets
4646

4747
## Examples
4848

49-
The following examples show how to encrypt the OS and temporary disks on a Batch pool using the Batch .NET SDK, the Batch REST API, and the Azure CLI.
49+
The following examples show how to encrypt the OS and temporary disks on a Batch pool using the Azure.ResourceManager.Batch SDK, the Batch REST API, and the Azure CLI.
5050

51-
### Batch .NET SDK
51+
### Azure.ResourceManager.Batch SDK
5252

5353
```csharp
54-
pool.VirtualMachineConfiguration.DiskEncryptionConfiguration = new DiskEncryptionConfiguration(
55-
targets: new List<DiskEncryptionTarget> { DiskEncryptionTarget.OsDisk, DiskEncryptionTarget.TemporaryDisk }
56-
);
54+
using Azure;
55+
using Azure.Identity;
56+
using Azure.ResourceManager;
57+
using Azure.ResourceManager.Batch;
58+
using Azure.ResourceManager.Batch.Models;
59+
60+
//...
61+
62+
public async Task SetDiskEncryption()
63+
{
64+
ArmClient client = new ArmClient(new DefaultAzureCredential());
65+
66+
ResourceIdentifier batchAccountResourceId =
67+
BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
68+
BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
69+
70+
BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();
71+
72+
BatchAccountPoolData poolData = new BatchAccountPoolData()
73+
{
74+
VmSize = "standard_ds1_v2",
75+
DeploymentConfiguration = new BatchDeploymentConfiguration()
76+
{
77+
VmConfiguration = new BatchVmConfiguration(
78+
imageReference: new BatchImageReference()
79+
{
80+
Publisher = "Canonical",
81+
Offer = "UbuntuServer",
82+
Sku = "22.04-LTS"
83+
},
84+
nodeAgentSkuId: "batch.node.ubuntu 22.04")
85+
{
86+
DiskEncryptionConfiguration = new BatchDiskEncryptionConfiguration()
87+
{
88+
Targets = { BatchDiskEncryptionTarget.OSDisk, BatchDiskEncryptionTarget.TemporaryDisk }
89+
}
90+
}
91+
}
92+
};
93+
94+
ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
95+
WaitUntil.Completed, "diskencryptionPool", poolData);
96+
}
5797
```
5898

5999
### Batch REST API

0 commit comments

Comments
 (0)