Terraform destroy命令是否意外删除微软Azure AD第一方企业应用?
问题解答
是的,这确实是Terraform AzureAD提供商的已知问题,属于非预期的意外删除行为。
原因说明
尽管文档中说明设置use_existing = true后,Terraform在执行destroy时会尝试删除服务主体,但删除失败时不会抛出错误(这是针对多数微软第一方应用的情况),但部分微软第一方服务主体实际上允许在Azure AD中被删除,导致Terraform执行销毁操作时成功删除了Exchange、SharePoint这类应用的服务主体。
相关背景
该问题已在AzureAD提供商的仓库中被列为公开问题,属于提供商的功能缺陷,目前官方正在跟进处理。
临时解决方案
- 改用数据源引用:不要将微软第一方服务主体声明为Terraform管理的
azuread_service_principal资源,而是用data数据源来引用这些已存在的服务主体,示例:data "azuread_service_principal" "exchange" { application_id = data.azuread_application_published_app_ids.well_known.result.Office365ExchangeOnline } - 销毁时排除目标资源:如果必须保留现有资源定义,执行
destroy命令时通过-target参数仅销毁自定义应用资源,排除第一方服务主体:terraform destroy -target=azuread_service_principal.your_custom_application
内容的提问来源于stack exchange,提问作者Bhushan
相关产品推荐
相关产品推荐

