You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform实现Azure AD应用服务主体密码的自动轮换

关于Terraform AzureAD服务主体密码轮换的问题解答

问题1:添加rotate_when_changed属性后,是否会按照设置的时间周期自动创建新的密码资源?

  • 不会自动触发,必须手动或通过CI/CD流水线执行terraform apply操作才会触发轮换逻辑
  • 原理说明:time_rotating资源会在每次执行Terraform命令时校验当前时间是否超过你设置的5年轮换周期,只有当时间到期且执行了apply操作时,time_rotating的id才会更新,进而触发密码资源重建
  • 你配置的create_before_destroy生命周期规则可以保证轮换时先创建新密码、再销毁旧密码,不会出现服务无可用密码的空档期

问题2:该轮换特性是Terraform独有的能力还是Azure AD原生提供的?

  • 这是Terraform AzureAD Provider独有的实现能力,Azure AD本身没有提供服务主体密码的原生定时轮换功能

问题3:Terraform的轮换逻辑实现原理

整个流程完全基于Terraform的声明式资源管理逻辑和AzureAD Provider的自定义规则实现,没有依赖Azure AD的原生轮换能力,步骤如下:

  1. rotate_when_changed是AzureAD Provider为密码类资源专门设计的触发参数,只要该参数传入的任意值和Terraform状态文件中存储的历史值不一致,Provider就会标记当前密码资源需要重建
  2. 你搭配使用的time_rotating是Terraform官方时间Provider的资源,它会记录自身创建时间,每次执行terraform plan或apply时都会校验当前时间是否超过设置的轮换周期,到期后会自动触发time_rotating资源自身的重建,生成新的id
  3. 当time_rotating.test.id发生变化时,azuread_service_principal_password的rotate_when_changed值同步变更,Provider就会按生命周期规则执行轮换:先调用Azure AD Graph API创建新的服务主体密码,将新密码写入Terraform状态,再调用API删除旧的密码资源,完成整个轮换流程

注意:轮换生成的新密码不会自动同步到你的业务系统或密钥管理工具,你需要额外配置逻辑将新密码同步到对应使用方,避免业务用旧密码访问失败


内容的提问来源于stack exchange,提问作者uvindu sri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:45:06