Secure Data Access with Private Link
In this lab, you will configure Azure Bastion for secure VM access (no public IPs) and a Private Endpoint for an Azure Storage Account. You will validate secure management and data paths, ensuring all traffic remains on Azure’s backbone network.
Pre-Provisioned Resources
The following resources are already deployed for you:
- Virtual Network:
LabVNet(10.10.0.0/16) with:VMSubnet(10.10.1.0/24) – for VMs
- Virtual Machines:
WinVM(Windows Server 2022, no public IP, inVMSubnet)LinVM(Ubuntu 22.04, no public IP, inVMSubnet)
- NSGs: Default rules attached to subnets
- Storage Account:
labstorage<unique>(no Private Endpoint, no public network access)
Please sign in to launch lab.
Your Tasks
Task 1: Create the Azure Bastion Subnet
- In the Azure Portal, navigate to
LabVNet. - Add a new subnet:
- Name: AzureBastionSubnet (must be exactly this name)
- Address range:
10.10.2.0/24
Task 2: Deploy Azure Bastion
- In the Azure Portal, create an Azure Bastion Host:
- Resource Group:
LabRG - Name:
LabBastion - Region: Same as
LabVNet - Virtual Network:
LabVNet - Subnet:
AzureBastionSubnet
- Resource Group:
- Wait for deployment to complete.
Task 3: Validate Bastion Access to VMs
- In the portal, go to
WinVM> Connect > Bastion. - Enter the provided credentials and connect via RDP.
- Repeat for
LinVM(SSH). - Confirm you can access both VMs only via Bastion (no public IPs).
Task 4: Create a Private Endpoint for the Storage Account
- In the portal, go to the
labstorage<unique>Storage Account. - Under Networking, confirm Public network access is disabled.
- Go to Private endpoint connections > + Private endpoint.
- Name:
LabStorage-PE - Region: Same as Storage Account
- Resource: This storage account
- Target sub-resource:
blob - Virtual Network:
LabVNet - Subnet:
VMSubnet
- Name:
- Complete the wizard to create the Private Endpoint.
Task 5: Create and Link a Private DNS Zone
- In the portal, search for Private DNS zones > + Create.
- Name:
privatelink.blob.core.windows.net - Resource Group:
LabRG
- Name:
- Open the DNS zone and go to Virtual network links > + Add.
- Link to
LabVNet - Enable auto-registration: No
- Link to
- In the DNS zone, verify an A record for the Storage Account was created (if not, add it manually):
- Name:
<storageaccount> - IP: Private IP of the Private Endpoint (see Private Endpoint overview)
- Name:
Task 6: Validate Private Connectivity from VMs
- Connect to
LinVMusing Bastion (SSH). - Run:
nslookup <storageaccount>.blob.core.windows.net- Confirm it resolves to the Private Endpoint IP.
- Use Azure CLI or Storage Explorer to upload/download a blob:
az storage blob list --account-name <storageaccount> --container-name <container> --auth-mode login- Confirm access is successful.
- Repeat DNS and blob access test from
WinVM(using PowerShell or Storage Explorer).
Success Criteria
- Both VMs are accessible only via Azure Bastion (no public IPs).
- Storage Account is accessible only via Private Endpoint from within the VNet.
- DNS for the Storage Account resolves to the Private Endpoint IP from both VMs.
- Blob operations succeed from both VMs.
Optional Challenge
- Add a second Private Endpoint for the
fileservice. - Test Storage Account access from a VM in a different subnet (should fail).