我试图消除在使用 terraform 创建的 azure 基础设施中使用连接字符串。我计划将特定的 rbac 角色分配给 Web 应用程序、功能应用程序等资源,以使它们连接到 Keyvault、存储帐户、cosmos db 等。如何对应用程序洞察执行相同的操作?如果我将 Application Insights Component Contributor 授予应用程序服务的托管标识,我如何将其指向应连接到的应用程序见解?这里必须使用
APPINSIGHTS_INSTRUMENTATIONKEY
或连接字符串吗?或者我可以把这个传到某个地方吗azurerm_application_insights.example.app_id
?
提前致谢。
您可以通过几种不同的方式获取系统管理身份。对于您的用例,部署 Web 应用程序时,主体 ID 将作为输出返回。
如果这不合适,您可以使用 PowerShell 或 Azure CLI 获取它。
命令行:
az webapp identity show \
--resource-group MyResourceGroup \
--name MyAppService \
--query principalId \
--output tsv
但是。要将日志和遥测数据发送到 App Insights,必须在连接字符串中提供检测密钥。最好的解决方法是使用 Azure KeyVault。
请记住,这会增加解决方案的一些复杂性和更多的安全考虑,并且事实上,检测密钥并不像数据库连接字符串那样敏感,您可能需要重新评估这是否真的是必要的。如果您确实想走这条路,请继续阅读。
GET
秘密权限[email protected](SecretUri=https://MyKeyVault.vault.azure.net/secrets/InstrumentationKey/...
当应用服务运行时在配置中看到此内容时,它会使用应用程序的身份自动从 KeyVault 获取密钥。