如何通过Terraform实现Azure AD与Databricks的Microsoft Graph方式SCIM预配?
能否通过Terraform执行Azure AD与Databricks SCIM预配的Microsoft Graph步骤?
结论
目前无法直接通过官方azuread Terraform provider实现Microsoft Graph方式的Databricks SCIM预配,但可以通过Terraform结合Graph API调用的方式间接完成配置。
原因分析
- 尽管azuread provider 2.x及以上版本基于Microsoft Graph,但当前版本并未原生支持SCIM预配相关的Graph API操作——Azure AD的SCIM预配配置对应Graph API中的
applicationProvisioningConfiguration资源,而该资源目前没有对应的Terraform资源类型。 - 现有的
azuread_application资源仅覆盖应用的基础属性,不包含SCIM预配所需的核心配置字段(比如预配目标端点、认证令牌、属性映射规则等)。
替代实现方案
可以通过Terraform的null_resource配合local-exec,直接调用Microsoft Graph API完成SCIM预配配置,步骤如下:
确保Terraform具备调用权限
- 为Terraform使用的服务主体分配
Application.ReadWrite.All权限(需要管理员同意)。
- 为Terraform使用的服务主体分配
编写Terraform代码调用Graph API
示例代码框架如下:resource "azuread_application" "databricks_scim" { display_name = "Databricks SCIM Provisioning" # 按需配置应用其他基础属性,比如重定向URI等 } resource "null_resource" "configure_scim_provisioning" { depends_on = [azuread_application.databricks_scim] provisioner "local-exec" { command = <<EOT # 获取Graph API访问令牌 TOKEN=$(az account get-access-token --resource https://graph.microsoft.com --query accessToken -o tsv) # 调用Graph API创建SCIM预配配置 curl -X POST "https://graph.microsoft.com/v1.0/applications/${azuread_application.databricks_scim.id}/provisioningConfigurations" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "templateId": "scim", "provisioningStatus": "ProvisioningEnabled", "notificationSettings": { "sendNotificationEmails": true }, "onPremisesSyncEnabled": false, "targetSystem": { "@odata.type": "#microsoft.graph.scimProvisioningTarget", "connectionUrl": "https://<你的Databricks工作区>.azuredatabricks.net/api/2.0/preview/scim/v2", "authenticationScheme": "bearer", "secretToken": "<你的Databricks SCIM令牌>" }, "attributeMappings": [ { "sourceAttributeName": "userPrincipalName", "targetAttributeName": "userName", "matchingPriority": 1, "exportMissingReferences": false } ] }' EOT } }注意:需替换代码中的占位符为实际值,并根据业务需求调整属性映射规则。
验证配置生效
执行terraform apply后,可通过Azure门户或Graph API查询应用的预配配置状态,确认是否正常启用。
其他注意事项
- 这种方式依赖Graph API的稳定性,后续若azuread provider添加了SCIM预配的原生资源,建议切换为原生实现以降低维护成本。
- 敏感信息(如SCIM令牌)需通过Terraform敏感变量存储,避免明文暴露。
内容的提问来源于stack exchange,提问作者CJA
相关产品推荐
相关产品推荐

