通过 Terraform 中的 RBAC 对 Application Insights 进行应用服务身份验证

问题描述 投票:0回答:1

我试图消除在使用 terraform 创建的 azure 基础设施中使用连接字符串。我计划将特定的 rbac 角色分配给 Web 应用程序、功能应用程序等资源,以使它们连接到 Keyvault、存储帐户、cosmos db 等。如何对应用程序洞察执行相同的操作?如果我将 Application Insights Component Contributor 授予应用程序服务的托管标识,我如何将其指向应连接到的应用程序见解?这里必须使用

APPINSIGHTS_INSTRUMENTATIONKEY
或连接字符串吗?或者我可以把这个传到某个地方吗
azurerm_application_insights.example.app_id

提前致谢。

azure terraform azure-application-insights terraform-provider-azure
1个回答
0
投票

您可以通过几种不同的方式获取系统管理身份。对于您的用例,部署 Web 应用程序时,主体 ID 将作为输出返回。

如果这不合适,您可以使用 PowerShell 或 Azure CLI 获取它。

命令行:

az webapp identity show \
    --resource-group MyResourceGroup \
    --name MyAppService \
    --query principalId \
    --output tsv

但是。要将日志和遥测数据发送到 App Insights,必须在连接字符串中提供检测密钥。最好的解决方法是使用 Azure KeyVault。

请记住,这会增加解决方案的一些复杂性和更多的安全考虑,并且事实上,检测密钥并不像数据库连接字符串那样敏感,您可能需要重新评估这是否真的是必要的。如果您确实想走这条路,请继续阅读。

  1. 创建您的 KeyVault
  2. 使用检测密钥值将机密添加到 KeyVault
  3. 创建访问策略
  4. 向您的应用程序的系统管理主体授予
    GET
    秘密权限
  5. 在应用程序配置的 App Insights 连接字符串中,像这样引用 KeyvaultSecret:

[email protected](SecretUri=https://MyKeyVault.vault.azure.net/secrets/InstrumentationKey/...

当应用服务运行时在配置中看到此内容时,它会使用应用程序的身份自动从 KeyVault 获取密钥。

© www.soinside.com 2019 - 2024. All rights reserved.