Creates or updates the specified Bastion Host.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/bastionHosts/{bastionHostName}?api-version=2026-01-01
URI Parameters
| Name |
In |
Required |
Type |
Description |
|
bastionHostName
|
path |
True
|
string
|
The name of the Bastion Host.
|
|
resourceGroupName
|
path |
True
|
string
minLength: 1 maxLength: 90
|
The name of the resource group. The name is case insensitive.
|
|
subscriptionId
|
path |
True
|
string
(uuid)
|
The ID of the target subscription. The value must be an UUID.
|
|
api-version
|
query |
True
|
string
minLength: 1
|
The API version to use for this operation.
|
Request Body
| Name |
Type |
Description |
|
id
|
string
|
Resource ID.
|
|
identity
|
ManagedServiceIdentity
|
The identity assigned to the Bastion Host resource
|
|
location
|
string
|
Resource location.
|
|
properties.disableCopyPaste
|
boolean
|
Enable/Disable Copy/Paste feature of the Bastion Host resource.
|
|
properties.dnsName
|
string
|
FQDN for the endpoint on which bastion host is accessible.
|
|
properties.enableFileCopy
|
boolean
|
Enable/Disable File Copy feature of the Bastion Host resource.
|
|
properties.enableIpConnect
|
boolean
|
Enable/Disable IP Connect feature of the Bastion Host resource.
|
|
properties.enableKerberos
|
boolean
|
Enable/Disable Kerberos feature of the Bastion Host resource.
|
|
properties.enablePrivateOnlyBastion
|
boolean
|
Enable/Disable Private Only feature of the Bastion Host resource.
|
|
properties.enableSessionRecording
|
boolean
|
Enable/Disable Session Recording feature of the Bastion Host resource.
|
|
properties.enableShareableLink
|
boolean
|
Enable/Disable Shareable Link of the Bastion Host resource.
|
|
properties.enableTunneling
|
boolean
|
Enable/Disable Tunneling feature of the Bastion Host resource.
|
|
properties.ipConfigurations
|
BastionHostIPConfiguration[]
|
IP configuration of the Bastion Host resource.
|
|
properties.networkAcls
|
BastionHostPropertiesFormatNetworkAcls
|
|
|
properties.scaleUnits
|
integer
(int32)
minimum: 2 maximum: 50
|
The scale units for the Bastion Host resource.
|
|
properties.sessionRecordingConfiguration
|
BastionSessionRecordingConfiguration
|
The storage account and identity to use for session recording
|
|
properties.virtualNetwork
|
SubResource
|
Reference to an existing virtual network required for Developer Bastion Host only.
|
|
sku
|
Sku
|
The sku of this Bastion Host.
|
|
tags
|
object
|
Resource tags.
|
|
zones
|
string[]
|
A list of availability zones denoting where the resource needs to come from.
|
Responses
| Name |
Type |
Description |
|
200 OK
|
BastionHost
|
Resource 'BastionHost' update operation succeeded
|
|
201 Created
|
BastionHost
|
Resource 'BastionHost' create operation succeeded
Headers
- Azure-AsyncOperation: string
- Retry-After: integer
|
|
Other Status Codes
|
CloudError
|
An unexpected error response.
|
Security
azure_auth
Azure Active Directory OAuth2 Flow.
Type:
oauth2
Flow:
implicit
Authorization URL:
https://login.microsoftonline.com/common/oauth2/authorize
Scopes
| Name |
Description |
|
user_impersonation
|
impersonate your user account
|
Examples
Create Bastion Host
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant?api-version=2026-01-01
{
"properties": {
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
]
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostIpConfiguration;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostPut.json
*/
/**
* Sample code: Create Bastion Host.
*
* @param manager Entry point to NetworkManager.
*/
public static void createBastionHost(com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg1", "bastionhosttenant",
new BastionHostInner().withIpConfigurations(Arrays.asList(new BastionHostIpConfiguration()
.withName("bastionHostIpConfiguration")
.withSubnet(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"))
.withPublicIpAddress(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName")))),
com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_put.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg1",
bastion_host_name="bastionhosttenant",
parameters={
"properties": {
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
},
}
]
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostPut.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostPut.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createBastionHost() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg1", "bastionhosttenant", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
{
Name: to.Ptr("bastionHostIpConfiguration"),
Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
PublicIPAddress: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
},
Subnet: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
},
},
},
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhost"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant'"),
// Location: to.Ptr("West US"),
// Properties: &armnetwork.BastionHostPropertiesFormat{
// DisableCopyPaste: to.Ptr(false),
// DNSName: to.Ptr("bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com"),
// EnableIPConnect: to.Ptr(false),
// EnableKerberos: to.Ptr(false),
// EnablePrivateOnlyBastion: to.Ptr(false),
// EnableSessionRecording: to.Ptr(false),
// EnableShareableLink: to.Ptr(false),
// EnableTunneling: to.Ptr(false),
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// {
// Name: to.Ptr("bastionHostIpConfiguration"),
// Type: to.Ptr("Microsoft.Network/bastionHosts/bastionHostIpConfigurations"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration"),
// Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
// PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// PublicIPAddress: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
// },
// Subnet: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
// },
// },
// },
// },
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// ScaleUnits: to.Ptr[int32](2),
// },
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNameStandard),
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostPut.json
*/
async function createBastionHost() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg1", "bastionhosttenant", {
ipConfigurations: [
{
name: "bastionHostIpConfiguration",
publicIPAddress: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName",
},
subnet: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet",
},
},
],
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhost",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant'",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": false,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Standard"
}
}
{
"name": "bastionhosttenant'",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": false,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Standard"
}
}
Create Bastion Host With Private Only
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant?api-version=2026-01-01
{
"properties": {
"enablePrivateOnlyBastion": true,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
]
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostIpConfiguration;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostPutWithPrivateOnly.json
*/
/**
* Sample code: Create Bastion Host With Private Only.
*
* @param manager Entry point to NetworkManager.
*/
public static void createBastionHostWithPrivateOnly(com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg1", "bastionhosttenant", new BastionHostInner()
.withIpConfigurations(Arrays.asList(new BastionHostIpConfiguration().withName("bastionHostIpConfiguration")
.withSubnet(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"))))
.withEnablePrivateOnlyBastion(true), com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_put_with_private_only.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg1",
bastion_host_name="bastionhosttenant",
parameters={
"properties": {
"enablePrivateOnlyBastion": True,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
},
}
],
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostPutWithPrivateOnly.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostPutWithPrivateOnly.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createBastionHostWithPrivateOnly() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg1", "bastionhosttenant", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
EnablePrivateOnlyBastion: to.Ptr(true),
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
{
Name: to.Ptr("bastionHostIpConfiguration"),
Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
Subnet: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
},
},
},
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhosttenant"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant"),
// Location: to.Ptr("West US"),
// Properties: &armnetwork.BastionHostPropertiesFormat{
// DisableCopyPaste: to.Ptr(false),
// DNSName: to.Ptr("bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com"),
// EnableIPConnect: to.Ptr(false),
// EnableKerberos: to.Ptr(false),
// EnablePrivateOnlyBastion: to.Ptr(true),
// EnableSessionRecording: to.Ptr(false),
// EnableShareableLink: to.Ptr(false),
// EnableTunneling: to.Ptr(false),
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// {
// Name: to.Ptr("bastionHostIpConfiguration"),
// Type: to.Ptr("Microsoft.Network/bastionHosts/bastionHostIpConfigurations"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration"),
// Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
// PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// Subnet: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
// },
// },
// },
// },
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// ScaleUnits: to.Ptr[int32](2),
// },
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNamePremium),
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostPutWithPrivateOnly.json
*/
async function createBastionHostWithPrivateOnly() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg1", "bastionhosttenant", {
enablePrivateOnlyBastion: true,
ipConfigurations: [
{
name: "bastionHostIpConfiguration",
subnet: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet",
},
},
],
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": true,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Premium"
}
}
{
"name": "bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": true,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Premium"
}
}
Create Bastion Host With Zones
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant?api-version=2026-01-01
{
"properties": {
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
]
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostIpConfiguration;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostPutWithZones.json
*/
/**
* Sample code: Create Bastion Host With Zones.
*
* @param manager Entry point to NetworkManager.
*/
public static void createBastionHostWithZones(com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg1", "bastionhosttenant",
new BastionHostInner().withIpConfigurations(Arrays.asList(new BastionHostIpConfiguration()
.withName("bastionHostIpConfiguration")
.withSubnet(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"))
.withPublicIpAddress(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName")))),
com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_put_with_zones.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg1",
bastion_host_name="bastionhosttenant",
parameters={
"properties": {
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
},
}
]
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostPutWithZones.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostPutWithZones.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createBastionHostWithZones() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg1", "bastionhosttenant", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
{
Name: to.Ptr("bastionHostIpConfiguration"),
Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
PublicIPAddress: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
},
Subnet: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
},
},
},
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhost"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant'"),
// Location: to.Ptr("West US"),
// Properties: &armnetwork.BastionHostPropertiesFormat{
// DisableCopyPaste: to.Ptr(false),
// DNSName: to.Ptr("bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com"),
// EnableIPConnect: to.Ptr(false),
// EnableKerberos: to.Ptr(false),
// EnablePrivateOnlyBastion: to.Ptr(false),
// EnableSessionRecording: to.Ptr(false),
// EnableShareableLink: to.Ptr(false),
// EnableTunneling: to.Ptr(false),
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// {
// Name: to.Ptr("bastionHostIpConfiguration"),
// Type: to.Ptr("Microsoft.Network/bastionHosts/bastionHostIpConfigurations"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration"),
// Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
// PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// PublicIPAddress: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
// },
// Subnet: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
// },
// },
// },
// },
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// ScaleUnits: to.Ptr[int32](2),
// },
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNameStandard),
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostPutWithZones.json
*/
async function createBastionHostWithZones() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg1", "bastionhosttenant", {
ipConfigurations: [
{
name: "bastionHostIpConfiguration",
publicIPAddress: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName",
},
subnet: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet",
},
},
],
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhost",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant'",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": false,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Standard"
}
}
{
"name": "bastionhost'",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant'",
"location": "West US",
"properties": {
"disableCopyPaste": false,
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"enableIpConnect": false,
"enableKerberos": false,
"enablePrivateOnlyBastion": false,
"enableSessionRecording": false,
"enableShareableLink": false,
"enableTunneling": false,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"publicIPAddress": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
}
}
}
],
"provisioningState": "Succeeded",
"scaleUnits": 2
},
"sku": {
"name": "Standard"
}
}
Create Developer Bastion Host
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/bastionHosts/bastionhostdeveloper?api-version=2026-01-01
{
"properties": {
"ipConfigurations": [],
"networkAcls": {
"ipRules": [
{
"addressPrefix": "1.1.1.1/16"
}
]
},
"virtualNetwork": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"
}
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostPropertiesFormatNetworkAcls;
import com.azure.resourcemanager.network.models.IpRule;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostDeveloperPut.json
*/
/**
* Sample code: Create Developer Bastion Host.
*
* @param manager Entry point to NetworkManager.
*/
public static void createDeveloperBastionHost(com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg2", "bastionhostdeveloper",
new BastionHostInner().withIpConfigurations(Arrays.asList()).withVirtualNetwork(new SubResource().withId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"))
.withNetworkAcls(new BastionHostPropertiesFormatNetworkAcls()
.withIpRules(Arrays.asList(new IpRule().withAddressPrefix("1.1.1.1/16")))),
com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_developer_put.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg2",
bastion_host_name="bastionhostdeveloper",
parameters={
"properties": {
"ipConfigurations": [],
"networkAcls": {"ipRules": [{"addressPrefix": "1.1.1.1/16"}]},
"virtualNetwork": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"
},
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostDeveloperPut.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostDeveloperPut.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createDeveloperBastionHost() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg2", "bastionhostdeveloper", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{},
NetworkACLs: &armnetwork.BastionHostPropertiesFormatNetworkACLs{
IPRules: []*armnetwork.IPRule{
{
AddressPrefix: to.Ptr("1.1.1.1/16"),
},
},
},
VirtualNetwork: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"),
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhostdeveloper"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/bastionHosts/bastionhostdeveloper'"),
// Location: to.Ptr("West US"),
// Properties: &armnetwork.BastionHostPropertiesFormat{
// DNSName: to.Ptr("omnibrain.uswest.bastionglobal.azure.com"),
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// },
// NetworkACLs: &armnetwork.BastionHostPropertiesFormatNetworkACLs{
// IPRules: []*armnetwork.IPRule{
// {
// AddressPrefix: to.Ptr("1.1.1.1/16"),
// },
// },
// },
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// VirtualNetwork: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"),
// },
// },
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNameDeveloper),
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostDeveloperPut.json
*/
async function createDeveloperBastionHost() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg2", "bastionhostdeveloper", {
ipConfigurations: [],
networkAcls: { ipRules: [{ addressPrefix: "1.1.1.1/16" }] },
virtualNetwork: {
id: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2",
},
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhostdeveloper",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/bastionHosts/bastionhostdeveloper'",
"location": "West US",
"properties": {
"dnsName": "omnibrain.uswest.bastionglobal.azure.com",
"ipConfigurations": [],
"networkAcls": {
"ipRules": [
{
"addressPrefix": "1.1.1.1/16"
}
]
},
"provisioningState": "Succeeded",
"virtualNetwork": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"
}
},
"sku": {
"name": "Developer"
}
}
{
"name": "bastionhostdeveloper'",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/bastionHosts/bastionhostdeveloper'",
"location": "West US",
"properties": {
"dnsName": "omnibrain.uswest.bastionglobal.azure.com",
"ipConfigurations": [],
"networkAcls": {
"ipRules": [
{
"addressPrefix": "1.1.1.1/16"
}
]
},
"provisioningState": "Succeeded",
"virtualNetwork": {
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/vnet2"
}
},
"sku": {
"name": "Developer"
}
}
Create or Update Bastion Host With System Assigned Identity for Session Recording Configuration
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant?api-version=2026-01-01
{
"properties": {
"enableSessionRecording": true,
"sessionRecordingConfiguration": {
"identity": {
"type": "SystemAssigned"
},
"blobContainerUri": "https://mystorageaccount.blob.core.windows.net/mycontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostIpConfiguration;
import com.azure.resourcemanager.network.models.BastionSessionRecordingConfiguration;
import com.azure.resourcemanager.network.models.SessionRecordingIdentity;
import com.azure.resourcemanager.network.models.SessionRecordingIdentityType;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostPutWithSystemAssignedIdentityForSRConfig.json
*/
/**
* Sample code: Create or Update Bastion Host With System Assigned Identity for Session Recording Configuration.
*
* @param manager Entry point to NetworkManager.
*/
public static void createOrUpdateBastionHostWithSystemAssignedIdentityForSessionRecordingConfiguration(
com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg1", "bastionhosttenant", new BastionHostInner()
.withIpConfigurations(Arrays.asList(new BastionHostIpConfiguration().withName("bastionHostIpConfiguration")
.withSubnet(new SubResource().withId(
"/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"))
.withPublicIpAddress(new SubResource().withId(
"/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"))))
.withEnableSessionRecording(true)
.withSessionRecordingConfiguration(new BastionSessionRecordingConfiguration()
.withIdentity(new SessionRecordingIdentity().withType(SessionRecordingIdentityType.SYSTEM_ASSIGNED))
.withBlobContainerUri("https://mystorageaccount.blob.core.windows.net/mycontainer")),
com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_put_with_system_assigned_identity_for_sr_config.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg1",
bastion_host_name="bastionhosttenant",
parameters={
"properties": {
"enableSessionRecording": True,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
},
}
],
"sessionRecordingConfiguration": {
"blobContainerUri": "https://mystorageaccount.blob.core.windows.net/mycontainer",
"identity": {"type": "SystemAssigned"},
},
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostPutWithSystemAssignedIdentityForSRConfig.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostPutWithSystemAssignedIdentityForSRConfig.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createOrUpdateBastionHostWithSystemAssignedIdentityForSessionRecordingConfiguration() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg1", "bastionhosttenant", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
EnableSessionRecording: to.Ptr(true),
SessionRecordingConfiguration: &armnetwork.BastionSessionRecordingConfiguration{
Identity: &armnetwork.SessionRecordingIdentity{
Type: to.Ptr(armnetwork.SessionRecordingIdentityTypeSystemAssigned),
},
BlobContainerURI: to.Ptr("https://mystorageaccount.blob.core.windows.net/mycontainer"),
},
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
{
Name: to.Ptr("bastionHostIpConfiguration"),
Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
Subnet: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
},
PublicIPAddress: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
},
},
},
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhosttenant"),
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// Location: to.Ptr("West US"),
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNamePremium),
// },
// Properties: &armnetwork.BastionHostPropertiesFormat{
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// DNSName: to.Ptr("bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com"),
// ScaleUnits: to.Ptr[int32](2),
// DisableCopyPaste: to.Ptr(false),
// EnableTunneling: to.Ptr(false),
// EnableIPConnect: to.Ptr(false),
// EnableShareableLink: to.Ptr(false),
// EnableKerberos: to.Ptr(false),
// EnableSessionRecording: to.Ptr(true),
// EnablePrivateOnlyBastion: to.Ptr(false),
// SessionRecordingConfiguration: &armnetwork.BastionSessionRecordingConfiguration{
// Identity: &armnetwork.SessionRecordingIdentity{
// Type: to.Ptr(armnetwork.SessionRecordingIdentityTypeSystemAssigned),
// },
// BlobContainerURI: to.Ptr("https://mystorageaccount.blob.core.windows.net/mycontainer"),
// },
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// {
// Name: to.Ptr("bastionHostIpConfiguration"),
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// Type: to.Ptr("Microsoft.Network/bastionHosts/bastionHostIpConfigurations"),
// Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
// Subnet: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
// },
// PublicIPAddress: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
// },
// },
// },
// },
// },
// Identity: &armnetwork.ManagedServiceIdentity{
// Type: to.Ptr(armnetwork.ResourceIdentityTypeSystemAssigned),
// PrincipalID: to.Ptr("00000000-0000-0000-0000-000000000000"),
// TenantID: to.Ptr("00000000-0000-0000-0000-000000000000"),
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostPutWithSystemAssignedIdentityForSRConfig.json
*/
async function createOrUpdateBastionHostWithSystemAssignedIdentityForSessionRecordingConfiguration() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg1", "bastionhosttenant", {
enableSessionRecording: true,
sessionRecordingConfiguration: {
identity: { type: "SystemAssigned" },
blobContainerUri: "https://mystorageaccount.blob.core.windows.net/mycontainer",
},
ipConfigurations: [
{
name: "bastionHostIpConfiguration",
subnet: {
id: "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet",
},
publicIPAddress: {
id: "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName",
},
},
],
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhosttenant",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"location": "West US",
"sku": {
"name": "Premium"
},
"properties": {
"provisioningState": "Succeeded",
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"scaleUnits": 2,
"disableCopyPaste": false,
"enableTunneling": false,
"enableIpConnect": false,
"enableShareableLink": false,
"enableKerberos": false,
"enableSessionRecording": true,
"enablePrivateOnlyBastion": false,
"sessionRecordingConfiguration": {
"identity": {
"type": "SystemAssigned"
},
"blobContainerUri": "https://mystorageaccount.blob.core.windows.net/mycontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
},
"identity": {
"type": "SystemAssigned",
"principalId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000"
}
}
{
"name": "bastionhosttenant",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"location": "West US",
"sku": {
"name": "Premium"
},
"properties": {
"provisioningState": "Succeeded",
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"scaleUnits": 2,
"disableCopyPaste": false,
"enableTunneling": false,
"enableIpConnect": false,
"enableShareableLink": false,
"enableKerberos": false,
"enableSessionRecording": true,
"enablePrivateOnlyBastion": false,
"sessionRecordingConfiguration": {
"identity": {
"type": "SystemAssigned"
},
"blobContainerUri": "https://mystorageaccount.blob.core.windows.net/mycontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
},
"identity": {
"type": "SystemAssigned",
"principalId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000"
}
}
Create or Update Bastion Host With User Assigned Identity for Session Recording Configuration
Sample request
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant?api-version=2026-01-01
{
"properties": {
"enableSessionRecording": true,
"sessionRecordingConfiguration": {
"identity": {
"type": "UserAssigned",
"userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"
},
"blobContainerUri": "https://contosostorage.blob.core.windows.net/contosocontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
}
}
import com.azure.core.management.SubResource;
import com.azure.resourcemanager.network.fluent.models.BastionHostInner;
import com.azure.resourcemanager.network.models.BastionHostIpConfiguration;
import com.azure.resourcemanager.network.models.BastionSessionRecordingConfiguration;
import com.azure.resourcemanager.network.models.SessionRecordingIdentity;
import com.azure.resourcemanager.network.models.SessionRecordingIdentityType;
import java.util.Arrays;
/**
* Samples for BastionHosts CreateOrUpdate.
*/
public final class Main {
/*
* x-ms-original-file: 2026-01-01/BastionHostPutWithUserAssignedIdentityForSRConfig.json
*/
/**
* Sample code: Create or Update Bastion Host With User Assigned Identity for Session Recording Configuration.
*
* @param manager Entry point to NetworkManager.
*/
public static void createOrUpdateBastionHostWithUserAssignedIdentityForSessionRecordingConfiguration(
com.azure.resourcemanager.network.NetworkManager manager) {
manager.serviceClient().getBastionHosts().createOrUpdate("rg1", "bastionhosttenant", new BastionHostInner()
.withIpConfigurations(Arrays.asList(new BastionHostIpConfiguration().withName("bastionHostIpConfiguration")
.withSubnet(new SubResource().withId(
"/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"))
.withPublicIpAddress(new SubResource().withId(
"/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"))))
.withEnableSessionRecording(true)
.withSessionRecordingConfiguration(new BastionSessionRecordingConfiguration()
.withIdentity(new SessionRecordingIdentity().withType(SessionRecordingIdentityType.USER_ASSIGNED)
.withUserAssignedIdentityId(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"))
.withBlobContainerUri("https://contosostorage.blob.core.windows.net/contosocontainer")),
com.azure.core.util.Context.NONE);
}
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient
"""
# PREREQUISITES
pip install azure-identity
pip install azure-mgmt-network
# USAGE
python bastion_host_put_with_user_assigned_identity_for_sr_config.py
Before run the sample, please set the values of the client ID, tenant ID and client secret
of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID,
AZURE_CLIENT_SECRET. For more info about how to get the value, please see:
https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal
"""
def main():
client = NetworkManagementClient(
credential=DefaultAzureCredential(),
subscription_id="SUBSCRIPTION_ID",
)
response = client.bastion_hosts.begin_create_or_update(
resource_group_name="rg1",
bastion_host_name="bastionhosttenant",
parameters={
"properties": {
"enableSessionRecording": True,
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
},
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
},
}
],
"sessionRecordingConfiguration": {
"blobContainerUri": "https://contosostorage.blob.core.windows.net/contosocontainer",
"identity": {
"type": "UserAssigned",
"userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi",
},
},
}
},
).result()
print(response)
# x-ms-original-file: 2026-01-01/BastionHostPutWithUserAssignedIdentityForSRConfig.json
if __name__ == "__main__":
main()
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
package armnetwork_test
import (
"context"
"log"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v12"
)
// Generated from example definition: 2026-01-01/BastionHostPutWithUserAssignedIdentityForSRConfig.json
func ExampleBastionHostsClient_BeginCreateOrUpdate_createOrUpdateBastionHostWithUserAssignedIdentityForSessionRecordingConfiguration() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
ctx := context.Background()
clientFactory, err := armnetwork.NewClientFactory("00000000-0000-0000-0000-000000000000", cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
poller, err := clientFactory.NewBastionHostsClient().BeginCreateOrUpdate(ctx, "rg1", "bastionhosttenant", armnetwork.BastionHost{
Properties: &armnetwork.BastionHostPropertiesFormat{
EnableSessionRecording: to.Ptr(true),
SessionRecordingConfiguration: &armnetwork.BastionSessionRecordingConfiguration{
Identity: &armnetwork.SessionRecordingIdentity{
Type: to.Ptr(armnetwork.SessionRecordingIdentityTypeUserAssigned),
UserAssignedIdentityID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"),
},
BlobContainerURI: to.Ptr("https://contosostorage.blob.core.windows.net/contosocontainer"),
},
IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
{
Name: to.Ptr("bastionHostIpConfiguration"),
Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
Subnet: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
},
PublicIPAddress: &armnetwork.SubResource{
ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
},
},
},
},
},
}, nil)
if err != nil {
log.Fatalf("failed to finish the request: %v", err)
}
res, err := poller.PollUntilDone(ctx, nil)
if err != nil {
log.Fatalf("failed to poll the result: %v", err)
}
// You could use response here. We use blank identifier for just demo purposes.
_ = res
// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.
// res = armnetwork.BastionHostsClientCreateOrUpdateResponse{
// BastionHost: armnetwork.BastionHost{
// Name: to.Ptr("bastionhosttenant"),
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant"),
// Type: to.Ptr("Microsoft.Network/bastionHosts"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// Location: to.Ptr("West US"),
// SKU: &armnetwork.SKU{
// Name: to.Ptr(armnetwork.BastionHostSKUNamePremium),
// },
// Properties: &armnetwork.BastionHostPropertiesFormat{
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// DNSName: to.Ptr("bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com"),
// ScaleUnits: to.Ptr[int32](2),
// DisableCopyPaste: to.Ptr(false),
// EnableTunneling: to.Ptr(false),
// EnableIPConnect: to.Ptr(false),
// EnableShareableLink: to.Ptr(false),
// EnableKerberos: to.Ptr(false),
// EnableSessionRecording: to.Ptr(true),
// EnablePrivateOnlyBastion: to.Ptr(false),
// SessionRecordingConfiguration: &armnetwork.BastionSessionRecordingConfiguration{
// Identity: &armnetwork.SessionRecordingIdentity{
// Type: to.Ptr(armnetwork.SessionRecordingIdentityTypeUserAssigned),
// UserAssignedIdentityID: to.Ptr("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"),
// },
// BlobContainerURI: to.Ptr("https://contosostorage.blob.core.windows.net/contosocontainer"),
// },
// IPConfigurations: []*armnetwork.BastionHostIPConfiguration{
// {
// Name: to.Ptr("bastionHostIpConfiguration"),
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration"),
// Etag: to.Ptr("w/\\00000000-0000-0000-0000-000000000000\\"),
// Type: to.Ptr("Microsoft.Network/bastionHosts/bastionHostIpConfigurations"),
// Properties: &armnetwork.BastionHostIPConfigurationPropertiesFormat{
// ProvisioningState: to.Ptr(armnetwork.ProvisioningStateSucceeded),
// PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
// Subnet: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"),
// },
// PublicIPAddress: &armnetwork.SubResource{
// ID: to.Ptr("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"),
// },
// },
// },
// },
// },
// Identity: &armnetwork.ManagedServiceIdentity{
// Type: to.Ptr(armnetwork.ResourceIdentityTypeUserAssigned),
// UserAssignedIdentities: map[string]*armnetwork.ManagedServiceIdentityUserAssignedIdentities{
// "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi": &armnetwork.ManagedServiceIdentityUserAssignedIdentities{
// PrincipalID: to.Ptr("00000000-0000-0000-0000-000000000000"),
// ClientID: to.Ptr("00000000-0000-0000-0000-000000000000"),
// },
// },
// },
// },
// }
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
const { NetworkManagementClient } = require("@azure/arm-network");
const { DefaultAzureCredential } = require("@azure/identity");
/**
* This sample demonstrates how to creates or updates the specified Bastion Host.
*
* @summary creates or updates the specified Bastion Host.
* x-ms-original-file: 2026-01-01/BastionHostPutWithUserAssignedIdentityForSRConfig.json
*/
async function createOrUpdateBastionHostWithUserAssignedIdentityForSessionRecordingConfiguration() {
const credential = new DefaultAzureCredential();
const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new NetworkManagementClient(credential, subscriptionId);
const result = await client.bastionHosts.createOrUpdate("rg1", "bastionhosttenant", {
enableSessionRecording: true,
sessionRecordingConfiguration: {
identity: {
type: "UserAssigned",
userAssignedIdentityId:
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi",
},
blobContainerUri: "https://contosostorage.blob.core.windows.net/contosocontainer",
},
ipConfigurations: [
{
name: "bastionHostIpConfiguration",
subnet: {
id: "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet",
},
publicIPAddress: {
id: "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName",
},
},
],
});
console.log(result);
}
To use the Azure SDK library in your project, see this documentation. To provide feedback on this code sample, open a GitHub issue
Sample response
{
"name": "bastionhosttenant",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"location": "West US",
"sku": {
"name": "Premium"
},
"properties": {
"provisioningState": "Succeeded",
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"scaleUnits": 2,
"disableCopyPaste": false,
"enableTunneling": false,
"enableIpConnect": false,
"enableShareableLink": false,
"enableKerberos": false,
"enableSessionRecording": true,
"enablePrivateOnlyBastion": false,
"sessionRecordingConfiguration": {
"identity": {
"type": "UserAssigned",
"userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"
},
"blobContainerUri": "https://contosostorage.blob.core.windows.net/contosocontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi": {
"principalId": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000"
}
}
}
}
{
"name": "bastionhosttenant",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant",
"type": "Microsoft.Network/bastionHosts",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"location": "West US",
"sku": {
"name": "Premium"
},
"properties": {
"provisioningState": "Succeeded",
"dnsName": "bst-9d89d361-100e-4c01-b92d-466548c476dc.bastion.azure.com",
"scaleUnits": 2,
"disableCopyPaste": false,
"enableTunneling": false,
"enableIpConnect": false,
"enableShareableLink": false,
"enableKerberos": false,
"enableSessionRecording": true,
"enablePrivateOnlyBastion": false,
"sessionRecordingConfiguration": {
"identity": {
"type": "UserAssigned",
"userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi"
},
"blobContainerUri": "https://contosostorage.blob.core.windows.net/contosocontainer"
},
"ipConfigurations": [
{
"name": "bastionHostIpConfiguration",
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/bastionHosts/bastionhosttenant/bastionHostIpConfigurations/bastionHostIpConfiguration",
"etag": "w/\\00000000-0000-0000-0000-000000000000\\",
"type": "Microsoft.Network/bastionHosts/bastionHostIpConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/BastionHostSubnet"
},
"publicIPAddress": {
"id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pipName"
}
}
}
]
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedmsi": {
"principalId": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000"
}
}
}
}
Definitions
BastionHost
Object
Bastion Host resource.
| Name |
Type |
Default value |
Description |
|
etag
|
string
|
|
A unique read-only string that changes whenever the resource is updated.
|
|
id
|
string
|
|
Resource ID.
|
|
identity
|
ManagedServiceIdentity
|
|
The identity assigned to the Bastion Host resource
|
|
location
|
string
|
|
Resource location.
|
|
name
|
string
|
|
Resource name.
|
|
properties.disableCopyPaste
|
boolean
|
False
|
Enable/Disable Copy/Paste feature of the Bastion Host resource.
|
|
properties.dnsName
|
string
|
|
FQDN for the endpoint on which bastion host is accessible.
|
|
properties.enableFileCopy
|
boolean
|
False
|
Enable/Disable File Copy feature of the Bastion Host resource.
|
|
properties.enableIpConnect
|
boolean
|
False
|
Enable/Disable IP Connect feature of the Bastion Host resource.
|
|
properties.enableKerberos
|
boolean
|
False
|
Enable/Disable Kerberos feature of the Bastion Host resource.
|
|
properties.enablePrivateOnlyBastion
|
boolean
|
False
|
Enable/Disable Private Only feature of the Bastion Host resource.
|
|
properties.enableSessionRecording
|
boolean
|
False
|
Enable/Disable Session Recording feature of the Bastion Host resource.
|
|
properties.enableShareableLink
|
boolean
|
False
|
Enable/Disable Shareable Link of the Bastion Host resource.
|
|
properties.enableTunneling
|
boolean
|
False
|
Enable/Disable Tunneling feature of the Bastion Host resource.
|
|
properties.ipConfigurations
|
BastionHostIPConfiguration[]
|
|
IP configuration of the Bastion Host resource.
|
|
properties.networkAcls
|
BastionHostPropertiesFormatNetworkAcls
|
|
|
|
properties.provisioningState
|
ProvisioningState
|
|
The provisioning state of the bastion host resource.
|
|
properties.scaleUnits
|
integer
(int32)
minimum: 2 maximum: 50
|
|
The scale units for the Bastion Host resource.
|
|
properties.sessionRecordingConfiguration
|
BastionSessionRecordingConfiguration
|
|
The storage account and identity to use for session recording
|
|
properties.virtualNetwork
|
SubResource
|
|
Reference to an existing virtual network required for Developer Bastion Host only.
|
|
sku
|
Sku
|
|
The sku of this Bastion Host.
|
|
tags
|
object
|
|
Resource tags.
|
|
type
|
string
|
|
Resource type.
|
|
zones
|
string[]
|
|
A list of availability zones denoting where the resource needs to come from.
|
BastionHostIPConfiguration
Object
IP configuration of an Bastion Host.
| Name |
Type |
Description |
|
etag
|
string
|
A unique read-only string that changes whenever the resource is updated.
|
|
id
|
string
|
Resource ID.
|
|
name
|
string
|
Name of the resource that is unique within a resource group. This name can be used to access the resource.
|
|
properties.privateIPAllocationMethod
|
IPAllocationMethod
|
Private IP allocation method.
|
|
properties.provisioningState
|
ProvisioningState
|
The provisioning state of the bastion host IP configuration resource.
|
|
properties.publicIPAddress
|
SubResource
|
Reference of the PublicIP resource. Null for private only bastion
|
|
properties.subnet
|
SubResource
|
Reference of the subnet resource.
|
|
type
|
string
|
Ip configuration type.
|
Object
| Name |
Type |
Description |
|
ipRules
|
IPRule[]
|
Sets the IP ACL rules for Developer Bastion Host.
|
BastionHostSkuName
Enumeration
The name of the sku of this Bastion Host.
| Value |
Description |
|
Basic
|
Basic
|
|
Standard
|
Standard
|
|
Developer
|
Developer
|
|
Premium
|
Premium
|
BastionSessionRecordingConfiguration
Object
Bastion Session Recording Configuration.
| Name |
Type |
Description |
|
blobContainerUri
|
string
(uri)
|
The blob container to store the recordings. Ex: https://contosostorage.blob.core.windows.net/contosorecordings.
|
|
identity
|
SessionRecordingIdentity
|
The identity to use for accessing the blob container where recordings will be stored
|
CloudError
Object
An error response from the service.
CloudErrorBody
Object
An error response from the service.
| Name |
Type |
Description |
|
code
|
string
|
An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
|
|
details
|
CloudErrorBody[]
|
A list of additional details about the error.
|
|
message
|
string
|
A message describing the error, intended to be suitable for display in a user interface.
|
|
target
|
string
|
The target of the particular error. For example, the name of the property in error.
|
IPAllocationMethod
Enumeration
IP address allocation method.
| Value |
Description |
|
Static
|
Static
|
|
Dynamic
|
Dynamic
|
IPRule
Object
| Name |
Type |
Description |
|
addressPrefix
|
string
|
Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed.
|
ManagedServiceIdentity
Object
Identity for the resource.
| Name |
Type |
Description |
|
principalId
|
string
|
The principal id of the system assigned identity. This property will only be provided for a system assigned identity.
|
|
tenantId
|
string
|
The tenant id of the system assigned identity. This property will only be provided for a system assigned identity.
|
|
type
|
ResourceIdentityType
|
The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine.
|
|
userAssignedIdentities
|
<string,
ManagedServiceIdentityUserAssignedIdentities>
|
The list of user identities associated with resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
|
ManagedServiceIdentityUserAssignedIdentities
Object
| Name |
Type |
Description |
|
clientId
|
string
|
The client id of user assigned identity.
|
|
principalId
|
string
|
The principal id of user assigned identity.
|
ProvisioningState
Enumeration
Provisioning states of a resource.
| Value |
Description |
|
Failed
|
Failed
|
|
Succeeded
|
Succeeded
|
|
Canceled
|
Canceled
|
|
Creating
|
Creating
|
|
Updating
|
Updating
|
|
Deleting
|
Deleting
|
ResourceIdentityType
Enumeration
The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine.
| Value |
Description |
|
SystemAssigned
|
SystemAssigned
|
|
UserAssigned
|
UserAssigned
|
|
SystemAssigned, UserAssigned
|
SystemAssigned, UserAssigned
|
|
None
|
None
|
SessionRecordingIdentity
Object
The identity to use for accessing the blob container where recordings will be stored
| Name |
Type |
Description |
|
type
|
SessionRecordingIdentityType
|
The type of identity to use
|
|
userAssignedIdentityId
|
string
(arm-id)
|
User assigned identity to use for accessing blob container Uri. Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutually exclusive with identity type systemAssigned.
|
SessionRecordingIdentityType
Enumeration
The type of identity to use
| Value |
Description |
|
SystemAssigned
|
System assigned identity
|
|
UserAssigned
|
User assigned identity
|
Sku
Object
The sku of this Bastion Host.
| Name |
Type |
Default value |
Description |
|
name
|
BastionHostSkuName
|
Standard
|
The name of the sku of this Bastion Host.
|
SubResource
Object
Reference to another subresource.
| Name |
Type |
Description |
|
id
|
string
|
Resource ID.
|