Azure Terraform使用现有托管身份为Web App实现访问认证的方法
配置方法
- 第一步:读取已有的托管身份信息
若托管身份不是在当前Terraform项目中创建,可通过data源获取资源属性:
若托管身份在当前项目中创建,直接引用对应资源的data "azurerm_user_assigned_identity" "existing_umi" { name = "提前创建的托管身份名称" resource_group_name = "托管身份所在资源组名称" }id属性即可,无需额外配置data源。 - 第二步:修改Web App的身份配置
在azurerm_app_service的identity块中补充identity_ids参数绑定托管身份,修改后代码如下:resource "azurerm_app_service" "app-hri-stg-eur-configurations-api" { name = "app-hri-${var.env}-${var.reg-name}-webapp-testing" app_service_plan_id = azurerm_app_service_plan.ASP-hri-stg-eur-webapp.id location = var.location resource_group_name = azurerm_resource_group.rg-hri-stg-eur-webapp.name app_settings = { "secret" = "@Microsoft.KeyVault(SecretUri=https://mykeyvault.vault.azure.net/secrets/test)" # 其余原有配置保持不变 } identity { type = "UserAssigned" identity_ids = [data.azurerm_user_assigned_identity.existing_umi.id] # 若托管身份在当前项目创建,替换为[azurerm_user_assigned_identity.你的资源名.id] } } - 第三步:提前配置Key Vault访问策略
提前为该托管身份配置Key Vault的机密读取权限,无需每次重建Web App重复操作:- 权限项选择机密分类下的
Get权限即可满足读取需求 - 访问策略的主体选择你提前创建的托管身份
- 权限项选择机密分类下的
- 可选配置:若你需要同时使用系统分配托管身份和该用户分配托管身份,将
identity.type修改为SystemAssigned, UserAssigned即可,不影响现有功能。
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

