Other Articles
- SQL Database – Enable Database Encryption
- SQL Server – Enable SQL Defender
- SQL Database – Monitor CPU Utilization
- SQL Database – Monitor IO Utilization
- SQL Database – Monitor Memory Utilization
- SQL Database – Protect From Direct Internet Traffic
- Storage Account – Enable Storage Encryption
- Storage Account – Disable Blob Public Access
- Storage Account – Disable Cross-Tenant Replication
- Storage Account – Disable Public Network Access
- Storage Account – Enable Microsoft Defender
- Storage Account – Enable Secure Transfer
- Storage Account – Enforce Minimum TLS Version
- Storage Account – Enforce Network Access Rule
- Storage Account – Enforce Private Endpoint Access
- User – Enable Azure MFA
- App Service – Disable Remote Debugging
- App Service – Enable Defender
- App Service – Enable Entra ID Registration
- App Service – Enable HTTP2
- App Service – Enforce Latest TLS Version
- App Service – Enforce Secure FTPS State
- App Service – Monitor Server Errors
- App Service – Redirect HTTP to HTTPS
- Cosmos DB – Enable Backup
- Cosmos DB – Enable Microsoft Defender
- Cosmos DB – Monitor Latency
- Cosmos DB – Ensure Private Connectivity
- Cosmos DB for PostgreSQL – Monitor CPU Utilization
- Cosmos DB for PostgreSQL – Monitor IO Utilization
- Cosmos DB for PostgreSQL – Monitor Memory Utilization
- Cosmos DB for PostgreSQL – Protect From Direct Internet Traffic
- Cosmos DB – Protect From Direct Internet Traffic
- Cosmos DB – Restrict Firewall Network Access
- Virtual Machine – Enable Defender
- Virtual Machine – Protect From Direct Internet Traffic
- Key Vault – Enable Defender
- Key Vault – Ensure Vault Recoverable
- MySQL Flexible Server – Enable Audit Log Events Connection
- MySQL Flexible Server – Enable Audit Logs
- MySQL Flexible Server – Enforce Minimum TLS Version
- PostgreSQL Flexible Server – Configure Log File Retention
- PostgreSQL Flexible Server – Enable Connection Logging
- PostgreSQL Flexible Server – Enable Connection Throttling
- PostgreSQL Flexible Server – Enable Disconnection Logging
- PostgreSQL Flexible Server – Enable Log Checkpoints
- Network Security Group – Ensure Flow Logs Captured
- General – Enable Auto Provisioning Log Analytics
- General – Enable Security Notifications
- General – Set Additional Email Address
Key Vault – Require Private Endpoint Access
This check ensures that Private Endpoint access is enabled for Azure Key Vault to restrict network exposure and allow secure connectivity through a private IP address within a virtual network.
Check Details
- Resource: Azure Key Vault
- Check: Ensure Private Endpoint Access Is Enabled
- Risk: Without private endpoint access, Azure Key Vault may be exposed over the public internet. This increases the risk of unauthorized access, brute-force attacks, and data exfiltration of sensitive secrets, keys, and certificates.
Remediation via Azure Portal
-
Log in to the Azure Portal.
-
Navigate to Key Vaults and select the affected Key Vault.
-
In the left-hand menu, select Networking under Settings.
-
Under the Private endpoint connections tab, click + Create.
-
Configure the required virtual network and subnet, then complete the wizard to create the private endpoint.
-
Ensure that Public network access is set to Disabled (if business requirements
allow).
- Click Save to apply the configuration.
Remediation via Azure CLI
-
Open Azure Cloud Shell or a local terminal with Azure CLI installed.
-
Create a Private Endpoint for the Key Vault:
az network private-endpoint create \ --name <private-endpoint-name> \ --resource-group <resource-group> \ --vnet-name <vnet-name> \ --subnet <subnet-name> \ --private-connection-resource-id $(az keyvault show \ --name <keyvault-name> \ --resource-group <resource-group> \ --query id -o tsv) \ --group-id vault \ --connection-name <connection-name>
-
Disable public network access for the Key Vault:
az keyvault update \ --name <keyvault-name> \ --resource-group <resource-group> \ --public-network-access Disabled
-
Verify network configuration:
az keyvault show \ --name <keyvault-name> \ --resource-group <resource-group> \ --query properties.publicNetworkAccess
Replace <resource-group>, <keyvault-name>,
<vnet-name>, and <subnet-name> with your actual values.