Skip to content

Commit f428e7b

Browse files
Merge pull request #2546 from HeidiSteen/heidist-uuf
Updated steps and screenshots for SQL managed instance
2 parents e32810b + 8b7baba commit f428e7b

File tree

7 files changed

+19
-31
lines changed

7 files changed

+19
-31
lines changed
97.1 KB
Loading
53.3 KB
Loading
Binary file not shown.

articles/search/search-how-to-index-sql-managed-instance.md

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ ms.service: azure-ai-search
1010
ms.custom:
1111
- ignite-2023
1212
ms.topic: how-to
13-
ms.date: 12/10/2024
13+
ms.date: 01/28/2025
1414
---
1515

1616
# Indexer connections to Azure SQL Managed Instance through a public endpoint
1717

1818
Indexers in Azure AI Search connect to external data sources over a public endpoint. If you're setting up an [Azure SQL indexer](search-how-to-index-sql-database.md) for a connection to a SQL managed instance, follow the steps in this article to ensure the public endpoint is set up correctly.
1919

20-
Alternatively, if the managed instance is behind a firewall, [create a shared private link](search-indexer-how-to-access-private-sql.md) instead.
20+
Alternatively, for private connections, [create a shared private link](search-indexer-how-to-access-private-sql.md) instead.
2121

2222
> [!NOTE]
2323
> [Always Encrypted](/sql/relational-databases/security/encryption/always-encrypted-database-engine) columns are not currently supported by Azure AI Search indexers.
@@ -28,33 +28,17 @@ This article highlights just the steps for an indexer connection in Azure AI Sea
2828

2929
1. For a new SQL Managed Instance, create the resource with the **Enable public endpoint** option selected.
3030

31-
![Enable public endpoint](media/search-how-to-index-sql-managed-instance/enable-public-endpoint.png "Enable public endpoint")
31+
![Enable public endpoint](media/search-how-to-index-sql-managed-instance/enable-public-endpoint.png "Screenshot showing the public endpoint option during set up.")
3232

33-
1. Alternatively, if the instance already exists, you can enable public endpoint on an existing SQL Managed Instance under **Security** > **Virtual network** > **Public endpoint** > **Enable**.
33+
1. Alternatively, if the instance already exists, you can enable public endpoint on an existing SQL Managed Instance under **Security** > **Networking** > **Public endpoint** > **Enable**.
3434

35-
![Enable public endpoint using managed instance VNET](media/search-how-to-index-sql-managed-instance/mi-vnet.png "Enable public endpoint")
36-
37-
## Verify NSG rules
38-
39-
Check the Network Security Group has the correct **Inbound security rules** that allow connections from Azure services.
40-
41-
![NSG Inbound security rule](media/search-how-to-index-sql-managed-instance/nsg-rule.png "NSG Inbound security rule")
42-
43-
## Restrict inbound access to the endpoint
44-
45-
You can restrict inbound access to the public endpoint by replacing the current rule (`public_endpoint_inbound`) with the following two rules:
46-
47-
* Allowing inbound access from the `AzureCognitiveSearch` [service tag](/azure/virtual-network/service-tags-overview#available-service-tags) ("SOURCE" = `AzureCognitiveSearch`, "NAME" = `cognitive_search_inbound`)
48-
49-
* Allowing inbound access from the IP address of the search service, which can be obtained by pinging its fully qualified domain name (for example, `<your-search-service-name>.search.windows.net`). ("SOURCE" = `IP address`, "NAME" = `search_service_inbound`)
50-
51-
For each rule, set "PORT" = `3342`, "PROTOCOL" = `TCP`, "DESTINATION" = `Any`, "ACTION" = `Allow`.
35+
![Enable public endpoint using managed instance VNET](media/search-how-to-index-sql-managed-instance/mi-vnet.png "Screenshot showing the public endpoint configuration setting in the Azure portal.")
5236

5337
## Get public endpoint connection string
5438

55-
Copy the connection string to use in the search indexer's data source connection. Be sure to copy the connection string for the **public endpoint** (port 3342, not port 1433).
39+
1. To get a connection string, go to **Settings** > **Connection strings**.
5640

57-
![Public endpoint connection string](media/search-how-to-index-sql-managed-instance/mi-connection-string.png "Public endpoint connection string")
41+
1. Copy the connection string to use in the search indexer's data source connection. Be sure to copy the connection string for the **public endpoint** (port 3342, not port 1433).
5842

5943
## Next steps
6044

articles/search/search-indexer-how-to-access-private-sql.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Although you can call the Management REST API directly, it's easier to use the A
3131

3232
+ You should have a minimum of Contributor permissions on both Azure AI Search and SQL Managed Instance.
3333

34-
+ Azure SQL Managed Instance connection string. Managed identity is not currently supported with shared private link. Your connection string must include a user name and password.
34+
+ Azure SQL Managed Instance connection string. Managed identity isn't currently supported with shared private link. Your connection string must include a user name and password.
3535

3636
> [!NOTE]
3737
> Shared private links are billable through [Azure Private Link pricing](https://azure.microsoft.com/pricing/details/private-link/) and charges are invoiced based on usage.
@@ -59,7 +59,7 @@ For more information about connection properties, see [Create an Azure SQL Manag
5959
"privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}",
6060
"dnsZonePrefix": "a1b22c333d44",
6161
"groupId": "managedInstance",
62-
"requestMessage": "please approve",
62+
"requestMessage": "please approve"
6363
}
6464
}
6565
```
@@ -96,15 +96,17 @@ For more information about connection properties, see [Create an Azure SQL Manag
9696

9797
Provide a path to the *create-pe.json* file if you've navigated away from the file location. You can type `dir` at the command line to confirm the file is in the current directory.
9898

99-
1. Press Enter to run the command.
99+
1. Run the command.
100100

101101
When you complete these steps, you should have a shared private link that's provisioned in a pending state. **It takes several minutes to create the link**. Once it's created, the resource owner needs to approve the request before it's operational.
102102

103+
You can check the status of the shared private link in the Azure portal. On your search service page, under **Settings** > **Properties**, scroll down to find the shared private link resources and view the JSON value. When the provisioning state changes from *pending* to *succeeded*, you can continue on to the next step.
104+
103105
## 4 - Approve the private endpoint connection
104106

105107
On the SQL Managed Instance side, the resource owner must approve the private connection request you created.
106108

107-
1. In the Azure portal, open the **Private endpoint connections** tab of the managed instance.
109+
1. In the Azure portal, open the **Security** > **Private endpoint connections** of the managed instance.
108110

109111
1. Find the section that lists the private endpoint connections.
110112

@@ -124,9 +126,11 @@ You can now configure an indexer and its data source to use an outbound private
124126

125127
This article assumes a [REST client](search-get-started-rest.md) and uses the REST APIs.
126128

127-
1. [Create the data source definition](search-how-to-index-sql-database.md) as you would normally for Azure SQL. By default, a managed instance listens on port 3342, but on a virtual network it listens on 1433.
129+
1. Get an ADO connection string for your SQL managed instance in the **VNet-local endpoint** syntax. By default, a managed instance listens on port 3342, but on a virtual network it listens on 1433.
130+
131+
1. [Create the data source definition](search-how-to-index-sql-database.md) as you would normally for Azure SQL.
128132

129-
Provide the connection string that you copied earlier with an Initial Catalog specified.
133+
Provide the connection string that you copied earlier with an Initial Catalog set to your database name.
130134

131135
```http
132136
POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
@@ -151,7 +155,7 @@ This article assumes a [REST client](search-get-started-rest.md) and uses the RE
151155
152156
1. [Create the indexer definition](search-howto-create-indexers.md), setting the indexer `executionEnvironment` to "private".
153157
154-
[Indexer execution](search-howto-run-reset-indexers.md#indexer-execution-environment) occurs in either a private execution environment that's specific to your search service, or a multi-tenant environment hosted by Microsoft and used to offload expensive skillset processing for multiple customers. **When connecting over a private endpoint, indexer execution must be private.**
158+
[Indexer execution](search-howto-run-reset-indexers.md#indexer-execution-environment) occurs in either a private execution environment that's specific to your search service, or a multitenant environment hosted by Microsoft and used to offload expensive skillset processing for multiple customers. **When connecting over a private endpoint, indexer execution must be private.**
155159
156160
```http
157161
POST https://myservice.search.windows.net/indexers?api-version=2024-07-01

articles/search/search-indexer-securing-resources.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ You can specify the service tag if your data source is either:
101101

102102
- [SQL Server on Azure virtual machines](./search-how-to-index-sql-server.md#restrict-network-access-to-azure-ai-search)
103103

104-
- [SQL Managed Instances](./search-how-to-index-sql-managed-instance.md#verify-nsg-rules)
104+
- [SQL Managed Instances](./search-how-to-index-sql-managed-instance.md)
105105

106106
Notice that if you specified the service tag for the multitenant environment IP rule, you'll still need an explicit inbound rule for the private execution environment (meaning the search service itself), as obtained through `nslookup`.
107107

0 commit comments

Comments
 (0)