提问人:Don Chambers 提问时间:10/11/2023 最后编辑:Don Chambers 更新时间:10/14/2023 访问量:97
如何自动批准来自前门的专用终结点请求?
How do I automatically approve a private endpoint request from front door?
问:
我正在使用基础结构即代码创建应用服务,并使用专用终结点创建前门终结点。我使用二头肌模板执行此操作。
创建后,我必须批准 UI 中的专用终结点链接。
如何自动批准此专用终结点请求? 有没有办法通过 bicep 部署执行此操作?
我使用此二头肌创建带有终结点的源。
resource appService 'Microsoft.Web/sites@2022-09-01' existing = {
name: applicationName
scope: resourceGroup(resourceGroup)
}
resource fdOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2021-06-01' = {
name: 'fd-origin'
parent: fdOriginGroup
properties: {
hostName: '${applicationName}.azurewebsites.net'
httpPort: 80
httpsPort: 443
originHostHeader: '${applicationName}.azurewebsites.net'
priority: 1
weight: 1000
sharedPrivateLinkResource: {
groupId: 'sites'
privateLinkLocation: 'EastUS2'
requestMessage: 'Created by Deployment Pipeline'
status: 'Approved'
privateLink: {
id: appService.id
}
}
}
}
我尝试在sharedPrivateLinkResource部分中将状态设置为已批准,但它没有批准它。它不会引发错误,但链接仍处于“待处理”状态。
我可以用下面的二头肌批准它,但我必须对专用链接名称进行硬编码。我找不到从上面的二头肌获取专用链接名称的方法。
resource privateEndpointConnection 'Microsoft.Web/sites/privateEndpointConnections@2022-09-01' = {
name: 'MyAppService/ecc50509-75b1-xxxx-92c9-62bebcececf3-13f6a331-6472-4497-bf94-67adda467e22'
properties: {
privateLinkServiceConnectionState: {
status: 'Approved'
description: 'Approved by pipeline'
}
}
}
答:
2赞
Thomas
10/14/2023
#1
完成前门部署后,专用终结点连接信息将在 Web 应用属性本身上提供。您可以通过运行以下命令来验证这一点:
az rest --method get --uri <webapp-resource-id>?api-version=2022-09-01
您将看到以下部分:
"privateEndpointConnections": [
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/front-door-test/providers/Microsoft.Web/sites/myapp-bckwiz6zgci7k/privateEndpointConnections/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
...
}
]
您可以创建一个模块来获取端点名称:
// fetch-private-endpoint.bicep
param appName string
resource app 'Microsoft.Web/sites@2020-06-01' existing = {
name: appName
}
output name string = last(split(first(app.properties.privateEndpointConnections).id,'/'))
然后使用第二个模块来批准连接:
// approve-private-endpoint.bicep
param appName string
param endPointName string
resource app 'Microsoft.Web/sites@2022-09-01' existing = {
name: appName
}
resource privateEndpointConnection 'Microsoft.Web/sites/privateEndpointConnections@2022-09-01' = {
parent: app
name: endPointName
properties: {
privateLinkServiceConnectionState: {
status: 'Approved'
description: 'Approved by pipeline'
}
}
}
然后,在主模板中,您可以添加以下内容:
// Need to wait for front door deployment to be completed
module fetchPrivateEdnpointName 'modules/fetch-private-endpoint.bicep' = {
name: 'fetch-private-endpoint'
dependsOn: [
fdOrigin
]
params: {
appName: appName
}
}
module approvePrivateEndpoint 'modules/approve-private-endpoint.bicep' = {
name: 'approve-private-endpoint'
params: {
appName: appName
endPointName: fetchPrivateEdnpointName.outputs.name
}
}
评论
Approve-AzPrivateEndpointConnection
批准它。@Don钱伯斯privateLinkServices