通过共享专用终结点访问专用网络中的 Key Vault
本文内容
Azure SignalR 服务可以通过共享专用终结点访问专用网络中的 Key Vault。 这样,Key Vault 就不会在公用网络上公开。
可以通过 Azure SignalR 服务 API 创建专用终结点,以便对与 Azure 专用链接服务 集成的资源进行共享访问。 这些终结点称为“共享专用链接资源”,是在 SignalR 执行环境中创建的,不能在此环境外部访问。
本文介绍如何创建 Key Vault 的共享专用终结点。
先决条件
完成本文需要以下资源:
Azure 资源组。
一个 Azure SignalR 服务实例。
一个 Azure 密钥保管库实例。
本文中的示例使用以下命名约定,但你可以改用自己的名称。
此 Azure SignalR 服务的资源 ID 为 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr。
Azure Key Vault 的资源 ID 为 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.KeyVault/vaults/contoso-kv。
其余示例演示了如何配置 contoso-signalr 服务,使其对 Key Vault 的出站调用通过专用终结点而不是公用网络。
创建 Key Vault 的共享专用链接资源
在 Azure 门户中,转到 Azure SignalR 服务资源。
选择“网络”。
选择“专用访问”选项卡。
在“共享专用终结点”部分选择“添加共享专用终结点”。
输入以下信息:
字段
说明
名称
共享专用终结点的名称。
类型
选择 Microsoft.KeyVault/vaults
订阅
包含 Key Vault 的订阅。
资源
输入 Key Vault 资源的名称。
请求消息
输入“请批准”
选择添加 。
成功添加专用终结点后,预配状态将为“成功”。 在 Key Vault 端批准终结点之前,连接状态将为“挂起”。
请使用 Azure CLI 进行下列 API 调用,以创建共享专用链接资源:
az rest --method put --uri https://management.chinacloudapi.cn/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
代表 API 的请求正文的 create-pe.json 文件的内容如下:
{
"name": "contoso-kv",
"properties": {
"privateLinkResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.KeyVault/vaults/contoso-kv",
"groupId": "vault",
"requestMessage": "please approve"
}
}
创建出站专用终结点的过程是一个长期(异步)操作。 与所有异步 Azure 操作一样,PUT
调用会返回 Azure-AsyncOperation
标头值,如以下文本所示:
"Azure-AsyncOperation": "https://management.chinacloudapi.cn/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"
可以定期轮询此 URI 以获取操作状态。
你可手动查询 Azure-AsyncOperationHeader
值来轮询状态:
az rest --method get --uri https://management.chinacloudapi.cn/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
等待状态更改为“成功”,再继续执行后续步骤。
批准 Key Vault 的专用终结点连接
转到 Key Vault 资源
选择“网络”。
选择“专用终结点连接”选项卡。异步操作成功后,应该会有一个请求,请求使用来自先前 API 调用的请求消息建立专用终结点连接。
选择 SignalR 服务创建的专用终结点,然后选择“批准”。
选择“是”以批准连接。
列出专用终结点连接。
az network private-endpoint-connection list -n <key-vault-resource-name> -g <key-vault-resource-group-name> --type 'Microsoft.KeyVault/vaults'
应有一个挂起的专用终结点连接。 记下其 ID。
[
{
"id": "<id>",
"location": "",
"name": "",
"properties": {
"privateLinkServiceConnectionState": {
"actionRequired": "None",
"description": "Please approve",
"status": "Pending"
}
}
}
]
批准专用终结点连接:
az network private-endpoint-connection approve --id <private-endpoint-connection-id>
验证共享专用终结点是否正常运行
几分钟后,审批会传播到 SignalR 服务,连接状态会设置为“已批准”。 你可以使用 Azure 门户或 Azure CLI 来检查状态。
az rest --method get --uri https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.SignalRService/signalr/contoso-signalr/sharedPrivateLinkResources/func-pe?api-version=2021-06-01-preview
该命令将返回一个 JSON 对象,其中的连接状态在“properties”节中显示为“status”。
{
"name": "contoso-kv",
"properties": {
"privateLinkResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.KeyVault/vaults/contoso-kv",
"groupId": "vaults",
"requestMessage": "please approve",
"status": "Approved",
"provisioningState": "Succeeded"
}
}
当资源的“预配状态”(properties.provisioningState
) 为“Succeeded
”且“连接状态”(properties.status
) 为“Approved
”时,表示共享专用链接资源正常工作,SignalR 服务可以通过专用终结点进行通信。
当 SignalR 服务与 Azure Key Vault 之间的专用终结点正常运行时,预配状态的值为“成功”,连接状态为“已批准”。
清理
如果不打算使用在本文中的创建资源,则可以删除资源组。
注意
删除资源组会删除其中包含的所有资源。 如果指定的资源组中存在本文范围外的资源,这些资源也会被删除。
后续步骤