在 bicep 中,我正在配置一个 Azure API 管理策略,该策略为特定后端应用服务启用托管服务标识。
这通常是通过设置如下 XML 片段来完成的:
<policies>
<inbound>
<authentication-managed-identity resource="4d192d04-XXXX-461f-a6ab-XXXXXXXXXXXX" />
<base />
</inbound>
</policies>
我现在正在寻找的是如何在我的二头肌模板中从现有应用程序服务中检索特定的
resource
id。
下面是我现有的二头肌模板的一些片段:
// The App Service declaration
@description('API Website')
resource backendapi 'Microsoft.Web/sites@2021-03-01' = {
name: 'backend-${environment}'
kind: 'app,linux,container'
location: location
// left out properties, etc for brevity
// This is where I want to retrieve the client ID from that web app, but this fails:
var managed_identity_id = backendapi.identity.principalId
部署上述模板时,出现以下异常(尽管 Visual Studio Code 智能感知表明
identity.principalId
是有效的。
语言表达式属性“identity”不存在,可用属性为“apiVersion、location、tags、kind、properties、condition、deploymentResourceLineInfo、existing、isConditionTrue、subscriptionId、resourceGroupName、scope、resourceId、referenceApiVersion、isTemplateResource、isAction、provisioningOperation” '
所以我的问题是,如何从二头肌文件中的应用服务访问该属性。其值如下图所示的属性:
如评论部分所述,您正在寻找 Web 应用程序身份验证设置:Microsoft.Websites/config 'authsettingsV2' 2020-12-01
您可以检索 AzureAD Auth 的 clientId,如下所示:
param webAppName string
resource webApp 'Microsoft.Web/sites@2022-09-01' existing = {
name: webAppName
}
resource authsettings 'Microsoft.Web/sites/config@2022-09-01' existing = {
name: 'authsettingsV2'
parent: webApp
}
var clientId = authsettings.properties.identityProviders.azureActiveDirectory.registration.clientId