我已经创建了服务原理,并添加了在Azure Active Directory中读写用户的所有必要权限。
我在其上运行terraform plan
和terraform apply
,它运行正常。
但是,每当我尝试销毁(terraform destroy
)资源( azuread_user )以删除AD用户时,都会出现此错误
我做错了什么?任何帮助将不胜感激。
已更新:添加了.tf
文件
provider "azuread" {
version = "~> 0.11"
subscription_id= var.ARM_SUBSCRIPTION_ID
client_id = var.ARM_CLIENT_ID
client_secret = var.ARM_CLIENT_SECRET
tenant_id = var.ARM_TENANT_ID
}
resource "azuread_user" "main-user" {
user_principal_name = var.email
display_name = var.name
password = var.password
}
答案 0 :(得分:0)
看起来与服务主体具有的权限相关的问题,我建议创建一个具有Azure AD完全权限的新权限。检查该理论的一种方法是尝试使用az CLI删除terraform创建的用户。
首先,使用现有的服务主体:
az login --service-principal --username APP_ID --password PASSWORD --tenant TENANT_ID
稍后,尝试通过运行以下命令删除用户:
az ad user delete --id %USER_ID%
如果命令失败,请创建新的服务主体并将管理权限分配给Azure Active Directory。
另外,从terraform docs-NOTE: If you're authenticating using a Service Principal then it must have permissions to Directory.ReadWrite.All within the Windows Azure Active Directory API
答案 1 :(得分:0)
我对您的脚本进行了测试,发现如果仅在Azure AD图下授予def findSubDir(file, dire=""):
tempPath = os.path.join(path, dire)
for dirs in os.listdir(tempPath):
if os.path.isdir(os.path.join(tempPath, dirs)):
return findSubDir(file,os.path.join(tempPath,dirs))
if dirs == file:
return os.path.join(tempPath, file)
委派的权限,则我们只能创建AAD用户。当我尝试使用Directory.ReadWrite.All
删除它时,遇到与您相同的错误。
因此,我尝试了另一种方法:将 Global Admin 角色分配给Azure门户中的服务主体。然后,我可以成功删除用户。
请参见此处的参考:Method 1: Directory Roles (recommended)。