Skip to content

Commit 8924354

Browse files
authored
Merge pull request #215819 from cebundy/signalr-private-endp-cust-domain-review
[SignalR]: Review How-to articles for private endpoints and custom domains
2 parents 7b68647 + 4395996 commit 8924354

11 files changed

+228
-138
lines changed

articles/azure-signalr/howto-custom-domain.md

Lines changed: 93 additions & 50 deletions
Large diffs are not rendered by default.

articles/azure-signalr/howto-shared-private-endpoints-key-vault.md

Lines changed: 62 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,70 @@ description: Learn how Azure SignalR Service can use shared private endpoints to
55
services: signalr
66
author: ArchangelSDY
77
ms.service: signalr
8-
ms.topic: article
8+
ms.topic: how-to
99
ms.date: 09/23/2022
1010
ms.author: dayshen
1111
---
1212

1313
# Access Key Vault in a private network through shared private endpoints
1414

15-
Azure SignalR Service can access your Azure Key Vault instance in a private network through shared private endpoints. In this way, you don't have to expose your key vault on a public network.
15+
Azure SignalR Service can access your Key Vault in a private network through Shared Private Endpoints. This way, your Key Vault isn't exposed on a public network.
1616

1717
:::image type="content" alt-text="Diagram that shows the architecture of a shared private endpoint." source="media\howto-shared-private-endpoints-key-vault\shared-private-endpoint-overview.png" :::
1818

19-
## Management of shared private link resources
19+
You can create private endpoints through Azure SignalR Service APIs for shared access to a resource integrated with [Azure Private Link service](https://azure.microsoft.com/services/private-link/). These endpoints, called *shared private link resources*, are created inside the SignalR execution environment and aren't accessible outside this environment.
2020

21-
Private endpoints of secured resources that are created through Azure SignalR Service APIs are called *shared private link resources*. This is because you're "sharing" access to a resource, such a key vault, that has been integrated with the [Azure Private Link service](https://azure.microsoft.com/services/private-link/). These private endpoints are created inside an Azure SignalR Service execution environment and aren't directly visible to you.
21+
In this article, you'll learn how to create a shared private endpoint to Key Vault.
2222

23-
> [!NOTE]
24-
> The examples in this article are based on the following assumptions:
25-
> * The resource ID of the Azure SignalR Service instance is _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr_.
26-
> * The resource ID of the key vault is _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.KeyVault/vaults/contoso-kv_.
23+
## Prerequisites
2724

28-
The examples show how the *contoso-signalr* service can be configured so that its outbound calls to the key vault go through a private endpoint rather than a public network.
25+
You'll need the following resources to complete this article:
2926

30-
## Create a shared private link resource to the key vault
27+
- An Azure resource group.
28+
- An Azure SignalR Service instance.
29+
- An Azure Key Vault instance.
30+
31+
32+
The examples in this article use the following naming convention, although you can use your own names instead.
33+
34+
- The resource ID of this Azure SignalR Service is _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr_.
35+
- The resource ID of Azure Key Vault is _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.KeyVault/vaults/contoso-kv_.
36+
- The rest of the examples show how the *contoso-signalr* service can be configured so that its outbound calls to Key Vault go through a private endpoint rather than public network.
37+
38+
39+
## Create a shared private link resource to the Key Vault
3140

3241
### [Azure portal](#tab/azure-portal)
3342

3443
1. In the Azure portal, go to your Azure SignalR Service resource.
35-
1. On the menu pane, select **Networking**. Switch to the **Private access** tab.
36-
1. Select **Add shared private endpoint**.
44+
1. Select **Networking**.
45+
1. Select the **Private access** tab.
46+
1. Select **Add shared private endpoint** in the **Shared private endpoints** section.
3747

3848
:::image type="content" alt-text="Screenshot of the button for adding a shared private endpoint." source="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-management.png" lightbox="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-management.png" :::
3949

40-
1. Fill in a name for the shared private endpoint.
41-
1. Select the target linked resource either by selecting from your owned resources or by filling in a resource ID.
50+
Enter the following information:
51+
| Field | Description |
52+
| ----- | ----------- |
53+
| **Name** | The name of the shared private endpoint. |
54+
| **Type** | Select *Microsoft.KeyVault/vaults* |
55+
| **Subscription** | The subscription containing your Key Vault. |
56+
| **Resource** | Enter the name of your Key Vault resource. |
57+
| **Request Message** | Enter "please approve" |
58+
4259
1. Select **Add**.
4360

4461
:::image type="content" alt-text="Screenshot of adding a shared private endpoint." source="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-add.png" :::
4562

46-
1. Confirm that the shared private endpoint resource is now in a **Succeeded** provisioning state. The connection state is **Pending** at the target resource side.
63+
When you've successfully added the private endpoint, the provisioning state will be **Succeeded**. The connection state will be **Pending** until you approve the endpoint on the Key Vault side.
4764

4865
:::image type="content" alt-text="Screenshot of an added shared private endpoint." source="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-added.png" lightbox="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-added.png" :::
4966

5067
### [Azure CLI](#tab/azure-cli)
5168

52-
You can make the following API call with the [Azure CLI](/cli/azure/) to create a shared private link resource:
69+
Make the following API call with the [Azure CLI](/cli/azure/) to create a shared private link resource:
5370

54-
```dotnetcli
71+
```azurecli
5572
az rest --method put --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr/sharedPrivateLinkResources/kv-pe?api-version=2021-06-01-preview --body @create-pe.json
5673
```
5774

@@ -68,47 +85,48 @@ The contents of the *create-pe.json* file, which represent the request body to t
6885
}
6986
```
7087

71-
The process of creating an outbound private endpoint is a long-running (asynchronous) operation. As in all asynchronous Azure operations, the `PUT` call returns an `Azure-AsyncOperation` header value that looks like the following:
88+
The process of creating an outbound private endpoint is a long-running (asynchronous) operation. As in all asynchronous Azure operations, the `PUT` call returns an `Azure-AsyncOperation` header value that looks like the following text:
7289

7390
```plaintext
7491
"Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr/operationStatuses/c0786383-8d5f-4554-8d17-f16fcf482fb2?api-version=2021-06-01-preview"
7592
```
7693

7794
You can poll this URI periodically to obtain the status of the operation.
7895

79-
If you're using the CLI, you can poll for the status by manually querying the `Azure-AsyncOperationHeader` value:
96+
You can poll for the status by manually querying the `Azure-AsyncOperationHeader` value:
8097

81-
```dotnetcli
98+
```azurecli
8299
az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr/operationStatuses/c0786383-8d5f-4554-8d17-f16fcf482fb2?api-version=2021-06-01-preview
83100
```
84101

85102
Wait until the status changes to **Succeeded** before you proceed to the next steps.
86103

87104
-----
88105

89-
## Approve the private endpoint connection for the key vault
106+
## Approve the private endpoint connection for the Key Vault
90107

91108
### [Azure portal](#tab/azure-portal)
92109

93-
1. In the Azure portal, select the **Networking** tab for your key vault and go to **Private endpoint connections**. After the asynchronous operation has succeeded, there should be a request for a private endpoint connection with the request message from the previous API call.
110+
1. Go to your Key Vault resource
111+
1. Select the **Networking**.
112+
1. Select the **Private endpoint connections** tab.
113+
After the asynchronous operation has succeeded, there should be a request for a private endpoint connection with the request message from the previous API call.
94114

95-
1. Select the private endpoint that Azure SignalR Service created. Then select **Approve**.
96-
97-
:::image type="content" alt-text="Screenshot of the Azure portal that shows the pane for private endpoint connections." source="media\howto-shared-private-endpoints-key-vault\portal-key-vault-approve-private-endpoint.png" :::
98-
99-
1. Make sure that the private endpoint connection appears, as shown in the following screenshot. It could take one to two minutes for the status to be updated in the portal.
115+
1. Select the private endpoint that SignalR Service created, then select **Approve**.
116+
:::image type="content" source="media/howto-shared-private-endpoints-key-vault/portal-keyvault-private-endpoint-approve-connection.png" alt-text="Screenshot of Approve connection dialog for private endpoint in Azure Key Vault.":::
117+
1. Select **Yes** to approve the connection.
100118

101119
:::image type="content" alt-text="Screenshot of the Azure portal that shows an Approved status on the pane for private endpoint connections." source="media\howto-shared-private-endpoints-key-vault\portal-key-vault-approved-private-endpoint.png" :::
102120

103121
### [Azure CLI](#tab/azure-cli)
104122

105-
1. List private endpoint connections:
123+
1. List private endpoint connections.
106124

107-
```dotnetcli
125+
```azurecli
108126
az network private-endpoint-connection list -n <key-vault-resource-name> -g <key-vault-resource-group-name> --type 'Microsoft.KeyVault/vaults'
109127
```
110128
111-
There should be a pending private endpoint connection. Note down its ID.
129+
There should be a pending private endpoint connection. Note its ID.
112130
113131
```json
114132
[
@@ -129,27 +147,28 @@ Wait until the status changes to **Succeeded** before you proceed to the next st
129147
130148
1. Approve the private endpoint connection:
131149
132-
```dotnetcli
150+
```azurecli
133151
az network private-endpoint-connection approve --id <private-endpoint-connection-id>
134152
```
135153
136154
-----
137155
138-
## Query the status of the shared private link resource
156+
## Verify the shared private endpoint is functional
139157
140-
It takes minutes for the approval to be propagated to Azure SignalR Service. You can check the state by using either the Azure portal or the Azure CLI.
158+
After a few minutes, the approval propagates to the SignalR Service, and the connection state is set to *Approved*. You can check the state using either Azure portal or Azure CLI.
141159
142160
### [Azure portal](#tab/azure-portal)
143161
144162
:::image type="content" alt-text="Screenshot of an approved shared private endpoint." source="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-approved.png" lightbox="media\howto-shared-private-endpoints-key-vault\portal-shared-private-endpoints-approved.png" :::
145163
146164
### [Azure CLI](#tab/azure-cli)
147165
148-
```dotnetcli
166+
```azurecli
149167
az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr/sharedPrivateLinkResources/func-pe?api-version=2021-06-01-preview
150168
```
151169

152-
This command returns JSON that shows the connection state as the `status` value in the `properties` section.
170+
The command will return a JSON object, where the connection state is shown as "status" in the "properties" section.
171+
153172

154173
```json
155174
{
@@ -165,17 +184,20 @@ This command returns JSON that shows the connection state as the `status` value
165184

166185
```
167186

168-
If the provisioning state (`properties.provisioningState`) of the resource is `Succeeded` and the connection state (`properties.status`) is `Approved`, the shared private link resource is functional and Azure SignalR Service can communicate over the private endpoint.
187+
When the "Provisioning State" (`properties.provisioningState`) of the resource is `Succeeded` and "Connection State" (`properties.status`) is `Approved`, the shared private link resource is functional, and the SignalR Service can communicate over the private endpoint.
169188

170189
-----
171190

172-
At this point, the private endpoint between Azure SignalR Service and Azure Key Vault is established.
191+
When the private endpoint between the SignalR Service and Azure Key Vault is functional, the value of the provisioning state is **Succeeded**, and the connection state is **Approved**.
173192

174-
Now you can configure features like custom domain as usual. *You don't have to use a special domain for Key Vault*. Azure SignalR Service automatically handles DNS resolution.
193+
## Cleanup
175194

176-
## Next steps
195+
If you don't plan to use the resources you've created in this article, you can delete the Resource Group.
177196

178-
Learn more:
197+
>[!CAUTION]
198+
> Deleting the resource group deletes all resources contained within it. If resources outside the scope of this article exist in the specified resource group, they will also be deleted.
199+
200+
## Next steps
179201

180202
+ [What are private endpoints?](../private-link/private-endpoint-overview.md)
181203
+ [Configure a custom domain](howto-custom-domain.md)

0 commit comments

Comments
 (0)