Skip to content

Commit a856401

Browse files
Merge pull request #36976 from VanMSFT/vanmsft/uuf-batch6-mar30
UUF Batch 6 — Connectivity, security, and Azure SQL documentation fixes
2 parents 3d3cb56 + 4ce904e commit a856401

8 files changed

Lines changed: 66 additions & 37 deletions

azure-sql/database/audit-write-storage-account-behind-vnet-firewall.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Configure auditing to write database events on a storage account be
55
author: sravanisaluru
66
ms.author: srsaluru
77
ms.reviewer: wiassaf, vanto, mathoma
8-
ms.date: 06/10/2025
8+
ms.date: 03/30/2026
99
ms.service: azure-sql-database
1010
ms.subservice: security
1111
ms.topic: how-to
@@ -23,6 +23,9 @@ Auditing for [Azure SQL Database](sql-database-paas-overview.md) and [Azure Syna
2323

2424
This article explains two ways to configure Azure SQL Database and Azure storage account for this option. The first uses the Azure portal, the second uses REST.
2525

26+
> [!IMPORTANT]
27+
> When a storage account is behind a virtual network or firewall, you must use **managed identity** authentication (Storage Blob Data Contributor role), not storage access keys. The Azure portal configures this automatically when you save your auditing settings. If you configure auditing via REST API or PowerShell, don't specify a `storageAccountAccessKey` — the server's managed identity authenticates to the storage account instead.
28+
2629
## Background
2730

2831
[Azure Virtual Network (VNet)](/azure/virtual-network/virtual-networks-overview) is the fundamental building block for your private network in Azure. VNet enables many types of Azure resources, such as Azure Virtual Machines (VM), to securely communicate with each other, the internet, and on-premises networks. VNet is similar to a traditional network in your own data center, but brings with it additional benefits of Azure infrastructure such as scale, availability, and isolation.
@@ -53,16 +56,16 @@ Connect to [Azure portal](https://portal.azure.com) with your subscription. Navi
5356

5457
1. Select **Auditing** under the Security heading. Select **On**.
5558

56-
1. Select **Storage**. Select the storage account where logs will be saved. The storage account must comply with the requirements listed in [Prerequisites](#prerequisites).
59+
1. Select **Storage**. Select the storage account where logs are saved. The storage account must comply with the requirements listed in [Prerequisites](#prerequisites).
5760

5861
1. Open **Storage details**
5962

6063
> [!NOTE]
61-
> If the selected Storage account is behind VNet, you will see the following message:
64+
> If the selected Storage account is behind VNet, you see the following message:
6265
>
6366
>`You have selected a storage account that is behind a firewall or in a virtual network. Using this storage requires to enable 'Allow trusted Microsoft services to access this storage account' on the storage account and creates a server managed identity with 'storage blob data contributor' RBAC.`
6467
>
65-
>If you do not see this message, then storage account is not behind a VNet.
68+
>If you don't see this message, then the storage account isn't behind a VNet.
6669
6770
1. Select the number of days for the retention period. Then select **OK**. Logs older than the retention period are deleted.
6871

@@ -166,7 +169,7 @@ You can configure auditing to write database events on a storage account behind
166169
- [Deploy an Azure SQL Server with Auditing enabled to write audit logs to a blob storage](https://azure.microsoft.com/resources/templates/sql-auditing-server-policy-to-blob-storage/)
167170

168171
> [!NOTE]
169-
> The linked sample is on an external public repository and is provided 'as is', without warranty, and are not supported under any Microsoft support program/service.
172+
> The linked sample is on an external public repository and is provided 'as is', without warranty, and aren't supported under any Microsoft support program/service.
170173
171174
## Related content
172175

azure-sql/database/auditing-overview.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: SQL Auditing for Azure SQL Database and Azure Synapse Analytics tra
55
author: WilliamDAssafMSFT
66
ms.author: wiassaf
77
ms.reviewer: srsaluru, vanto, mathoma
8-
ms.date: 12/19/2025
8+
ms.date: 03/30/2026
99
ms.service: azure-sql-database
1010
ms.subservice: security
1111
ms.topic: concept-article
@@ -48,9 +48,9 @@ You can use SQL Database auditing to:
4848
### Changes from the re-architecture of server auditing
4949

5050
- Folder structure change for storage account:
51-
- One of the primary changes involves a folder structure change for audit logs stored in storage account containers. Previously, server audit logs were written to separate folders; one for each database, with the database name serving as the folder name. With the new update, all server audit logs will be consolidated into a single folder labeled `master`. This behavior is the same as Azure SQL Managed Instance and SQL Server.
51+
- One of the primary changes involves a folder structure change for audit logs stored in storage account containers. Previously, server audit logs were written to separate folders; one for each database, with the database name serving as the folder name. With the new update, all server audit logs are consolidated into a single folder labeled `master`. This behavior is the same as Azure SQL Managed Instance and SQL Server.
5252
- Folder structure change for read-only replicas:
53-
- Read-only database replicas previously had their logs stored in a read-only folder. Those logs will now be written into the `master` folder. You can retrieve these logs by filtering on the new column `is_secondary_replica_true`.
53+
- Read-only database replicas previously had their logs stored in a read-only folder. Those logs are now written into the `master` folder. You can retrieve these logs by filtering on the new column `is_secondary_replica_true`.
5454
- Permissions required to view Audit logs:
5555
- `VIEW DATABASE SECURITY AUDIT` permission in user database
5656

@@ -66,6 +66,9 @@ For environments with many databases running heavy OLTP workloads, using server
6666
- Enabling auditing on a paused **Azure Synapse SQL pool** isn't supported. To enable auditing, resume the **Synapse SQL pool**.
6767
- Enabling auditing by using User Assigned Managed Identity (UAMI) isn't supported on **Azure Synapse**.
6868
- Currently, managed identities aren't supported for Azure Synapse, unless the storage account is behind a virtual network or firewall.
69+
70+
> [!NOTE]
71+
> For Azure Synapse Analytics, auditing to a storage account behind a VNet requires the server's **system-assigned managed identity** with the **Storage Blob Data Contributor** role. User-assigned managed identities (UAMI) aren't supported for Synapse auditing. If you need to audit to a storage account that uses Microsoft Entra-only authentication, configure the system-assigned managed identity on the server and grant it the Storage Blob Data Contributor role on the target storage account. For more information, see [Write audit to a storage account behind VNet and firewall](audit-write-storage-account-behind-vnet-firewall.md).
6972
- Due to performance constraints, we don't audit the **tempdb** and **temporary tables**. While the batch completed action group captures statements against temporary tables, it might not correctly populate the object names. However, the source table is always audited, ensuring that all inserts from the source table to temporary tables are recorded.
7073
- Auditing for **Azure Synapse SQL pools** supports default audit action groups **only**.
7174
- When you configure auditing for a [logical server in Azure](logical-servers.md) or Azure SQL Database with the log destination as a storage account, the authentication mode must match the configuration for that storage account. If using storage access keys as the authentication type, the target storage account must be enabled with access to the storage account keys. If the storage account is configured to only use authentication with Microsoft Entra ID ([formerly Azure Active Directory](/entra/fundamentals/new-name)), auditing can be configured to use managed identities for authentication.
@@ -77,7 +80,7 @@ For environments with many databases running heavy OLTP workloads, using server
7780
## Remarks
7881

7982
- **Premium storage** with **BlockBlobStorage** is supported. Standard storage is supported. However, for audit to write to a storage account behind a virtual network or firewall, you must have a **general-purpose v2 storage account**. If you have a general-purpose v1 or Blob Storage account, [upgrade to a general-purpose v2 storage account](/azure/storage/common/storage-account-upgrade). For specific instructions see, [Write audit to a storage account behind VNet and firewall](audit-write-storage-account-behind-vnet-firewall.md). For more information, see [Types of storage accounts](/azure/storage/common/storage-account-overview#types-of-storage-accounts).
80-
- When customers enable SQL auditing and also configure **outbound networking** restrictions, they must allow list the fully qualified domain names of their auditing storage account to ensure audit events can successfully reach the destination. If the storage endpoint is not allowlisted, audit traffic is blocked, resulting in audit event loss. After adding the required storage account FQDNs to the allow list, customers must **re‑save** their auditing configuration to resume normal audit event flow.
83+
- When customers enable SQL auditing and also configure **outbound networking** restrictions, they must allow list the fully qualified domain names of their auditing storage account to ensure audit events can successfully reach the destination. If the storage endpoint isn't allowlisted, audit traffic is blocked, resulting in audit event loss. After adding the required storage account FQDNs to the allow list, customers must **re‑save** their auditing configuration to resume normal audit event flow.
8184
- **Hierarchical namespace** for all types of **standard storage account** and **premium storage account with BlockBlobStorage** is supported.
8285
- Audit logs are written to **Append Blobs** in an Azure Blob Storage on your Azure subscription
8386
- Audit logs are in .xel format and can be opened with [SQL Server Management Studio (SSMS)](/ssms/sql-server-management-studio-ssms).

azure-sql/database/private-endpoint-overview.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Overview of private endpoint feature.
55
author: VanMSFT
66
ms.author: vanto
77
ms.reviewer: wiassaf, vanto, mathoma, randolphwest
8-
ms.date: 06/24/2025
8+
ms.date: 03/30/2026
99
ms.service: azure-sql-database
1010
ms.subservice: security
1111
ms.topic: overview
@@ -27,6 +27,8 @@ ms.custom:
2727

2828
> [!IMPORTANT]
2929
> This article applies to both Azure SQL Database and [dedicated SQL pool (formerly SQL DW)](/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-overview-what-is) in Azure Synapse Analytics. These settings apply to all SQL Database and dedicated SQL pool (formerly SQL DW) databases associated with the server. For simplicity, the term 'database' refers to both databases in Azure SQL Database and Azure Synapse Analytics. Likewise, any references to 'server' is referring to the [logical server](logical-servers.md) that hosts Azure SQL Database and dedicated SQL pool (formerly SQL DW) in Azure Synapse Analytics. This article does *not* apply to Azure SQL Managed Instance or dedicated SQL pools in Azure Synapse Analytics workspaces.
30+
>
31+
> Always use the fully qualified domain name (FQDN) of the server (`<server>.database.windows.net`) in connection strings for all client drivers and tools. Login attempts made directly to the private IP address or using the private link FQDN (`<server>.privatelink.database.windows.net`) fail. This behavior is by design because the private endpoint routes traffic to the SQL Gateway, which requires the correct FQDN to route logins successfully.
3032
3133
<a id="how-to-set-up-private-link-for-azure-sql-database"></a>
3234

azure-sql/managed-instance/private-endpoint-overview.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Connect your Azure SQL Managed Instance to virtual networks and Azu
44
author: zoran-rilak-msft
55
ms.author: zoranrilak
66
ms.reviewer: mathoma, srbozovi
7-
ms.date: 10/22/2025
7+
ms.date: 03/30/2026
88
ms.service: azure-sql-managed-instance
99
ms.subservice: backup-restore
1010
ms.topic: how-to
@@ -52,20 +52,25 @@ The benefits of using private endpoints over a VNet-local or public endpoint inc
5252

5353
## Limitations
5454

55-
- Azure SQL Managed Instance requires the exact instance _hostname_ to appear in the connection string sent by the SQL client. Using the IP address of the private endpoint isn't supported and will fail. To resolve this, configure your DNS server, or use a private DNS zone as described in [Set up domain name resolution for private endpoint](#set-up-domain-name-resolution-for-private-endpoint).
55+
- Azure SQL Managed Instance requires the exact instance _hostname_ to appear in the connection string sent by the SQL client. Using the IP address of the private endpoint isn't supported and fails. To resolve this, configure your DNS server, or use a private DNS zone as described in [Set up domain name resolution for private endpoint](#set-up-domain-name-resolution-for-private-endpoint).
5656
- Automatic registration of DNS names isn't yet supported. Follow the steps in [Set up domain name resolution for private endpoint](#set-up-domain-name-resolution-for-private-endpoint) instead.
5757
- Private endpoints to SQL Managed Instance can only be used to connect to port 1433, the standard TDS port for SQL traffic. More complex connectivity scenarios requiring communication on other ports must be established via the instance's VNet-local endpoint.
5858
- Private endpoints to Azure SQL Managed Instance require a special setup to configure the required DNS resolution, as described in [Set up domain name resolution for private endpoint](#set-up-domain-name-resolution-for-private-endpoint).
5959
- Private endpoints always use the [proxy connection type](connection-types-overview.md#connection-types) regardless of the connection type setting.
6060

6161
## Create a private endpoint in a virtual network
6262

63+
To create a private endpoint for Azure SQL Managed Instance, you need the instance's resource ID and the target sub-resource type (`managedInstance`). When using the Azure portal, select **Microsoft.Sql/managedInstances** as the resource type and your managed instance as the target resource. The portal wizard handles the rest.
64+
6365
Create a private endpoint by using the Azure portal, Azure PowerShell, or the Azure CLI:
6466

6567
- [Azure portal](/azure/private-link/create-private-endpoint-portal)
6668
- [Azure PowerShell](/azure/private-link/create-private-endpoint-powershell)
6769
- [Azure CLI](/azure/private-link/create-private-endpoint-cli)
6870

71+
> [!IMPORTANT]
72+
> After you create the private endpoint, you must also [set up domain name resolution](#set-up-domain-name-resolution-for-private-endpoint). Without proper DNS configuration, connection attempts to the managed instance through the private endpoint fail.
73+
6974
After you create a private endpoint, you might also need to approve its creation within the target virtual network; see [Review and approve a request to create a private endpoint](#review-and-approve-a-request-to-create-a-private-endpoint).
7075

7176
To make the private endpoint to SQL Managed Instance fully functional, follow the instructions to [set up domain name resolution for the private endpoint](#set-up-domain-name-resolution-for-private-endpoint).
@@ -79,7 +84,7 @@ Some Azure PaaS and SaaS services can use private endpoints to access your data
7984
8085
## Create a cross-tenant private endpoint
8186

82-
Private endpoints to Azure SQL Managed Instance can also be created in different Azure tenants. To do this, the administrator of the virtual network in which the private endpoint should appear must first obtain the full resource ID of the Azure SQL Managed Instance from which they're about to request a private endpoint. With this information, a new private endpoint can be created in Private Link Center. As before, the administrator of the Azure SQL Managed Instance will receive a request that they can review and approve or reject, as per [Review and approve a request to create a private endpoint](#review-and-approve-a-request-to-create-a-private-endpoint).
87+
Private endpoints to Azure SQL Managed Instance can also be created in different Azure tenants. To do this, the administrator of the virtual network in which the private endpoint should appear must first obtain the full resource ID of the Azure SQL Managed Instance from which they're about to request a private endpoint. With this information, a new private endpoint can be created in Private Link Center. As before, the administrator of the Azure SQL Managed Instance receives a request that they can review and approve or reject, as per [Review and approve a request to create a private endpoint](#review-and-approve-a-request-to-create-a-private-endpoint).
8388

8489
## Review and approve a request to create a private endpoint
8590

@@ -106,7 +111,7 @@ To approve a private endpoint, follow these steps:
106111

107112
## Set up domain name resolution for private endpoint
108113

109-
After you create a private endpoint to Azure SQL Managed Instance, you'll need to configure domain name resolution. Otherwise, login attempts will fail. The following method works for virtual networks that use Azure DNS resolution. If your virtual network is configured to use a custom DNS server, adjust the steps accordingly.
114+
After you create a private endpoint to Azure SQL Managed Instance, you need to configure domain name resolution. Otherwise, login attempts fail. The following method works for virtual networks that use Azure DNS resolution. If your virtual network is configured to use a custom DNS server, adjust the steps accordingly.
110115

111116
To set up domain name resolution for a private endpoint to an instance whose VNet-local endpoint's domain name is `<instance-name>.<dns-zone>.database.windows.net`, follow one of the two procedures that in this section based on whether the instance and its private endpoint are in the same virtual network or in different virtual networks.
112117

@@ -117,7 +122,7 @@ To set up domain name resolution for a private endpoint to an instance whose VNe
117122

118123
Follow these steps if the private endpoint and Azure SQL Managed Instance are in different virtual networks.
119124

120-
After you complete these steps, SQL clients connecting to `<instance-name>.<dns-zone>.database.windows.net` from inside the endpoint's virtual network will be transparently routed through the private endpoint.
125+
After you complete these steps, SQL clients connecting to `<instance-name>.<dns-zone>.database.windows.net` from inside the endpoint's virtual network are transparently routed through the private endpoint.
121126

122127
1. Obtain the IP address of the private endpoint either by visiting Private Link Center or by performing the following steps:
123128

0 commit comments

Comments
 (0)