Infrastructure as CodeUsing Terraform Data Sources Effectively
Learn how to use Terraform data sources to query existing resources, look up AMIs, reference remote state, and build dynamic configurations. Complete.
Infrastructure as Code
AzureAD provider v3.10.0 adds authentication strength policy resources, group/user license resources, and fixes a delete-target bug.
HashiCorp shipped terraform-provider-azuread v3.10.0 on September 24, 2026. This release focuses on expanding Microsoft Entra ID authentication strength policy management and introduces dedicated resources for assigning licenses to users and groups, alongside a round of dependency bumps and two bug fixes. No breaking changes or deprecations are listed in the release notes.
azuread_authentication_strength_policyLook up an existing authentication strength policy by display name or ID (#1887). The resource also gained an object_id output attribute (#1954).
data "azuread_authentication_strength_policy" "phishing_resistant" {
display_name = "Phishing-resistant MFA"
}
output "policy_object_id" {
value = data.azuread_authentication_strength_policy.phishing_resistant.object_id
}Two new resources let you manage FIDO2 and X.509 certificate combination configurations on an authentication strength policy directly in HCL rather than through portal-only settings (#1881):
resource "azuread_authentication_strength_policy" "custom" {
display_name = "Custom auth strength"
allowed_combinations = ["fido2", "x509CertificateMultiFactor"]
}
resource "azuread_authentication_strength_policy_fido2_combination_configuration" "example" {
policy_id = azuread_authentication_strength_policy.custom.id
allowed_aaguids = ["de1e552d-db1d-4423-a619-566b625cdc84"]
}
resource "azuread_authentication_strength_policy_x509_combination_configuration" "example" {
policy_id = azuread_authentication_strength_policy.custom.id
certificate_authentication_type = "multiFactor"
}azuread_user_license (#1879) and azuread_group_license (#1890) let you manage SKU license assignments as standalone resources instead of inline blocks on azuread_user or azuread_group.
resource "azuread_user_license" "example" {
user_object_id = azuread_user.example.object_id
sku_id = "6fd2c87f-b296-42f0-b197-1e91e994b900" # Office 365 E3
}
resource "azuread_group_license" "example" {
group_object_id = azuread_group.example.object_id
sku_id = "6fd2c87f-b296-42f0-b197-1e91e994b900"
}azuread_groups now exposes a groups output attribute, returning richer group objects instead of only IDs/names (#1770):
data "azuread_groups" "all" {
display_name_prefix = "engineering-"
}
output "engineering_groups" {
value = data.azuread_groups.all.groups
}azuread_user data source now reports the actual mail value in lookup error messages instead of an empty string, making failed lookups easier to debug (#1926).azuread_service_principal_token_signing_certificate no longer deletes the wrong resource on destroy (#1905). This was a correctness bug worth noting if you manage multiple signing certificates per service principal.The release bumps Go to 1.26.6 and refreshes HashiCorp's internal plugin and testing libraries (go-azure-helpers, hc-install, terraform-exec, terraform-plugin-sdk/v2, terraform-plugin-testing) along with several golang.org/x/* packages. These are maintenance updates with no user-facing behavior change called out in the notes.
Pin the provider version and re-initialize:
terraform {
required_providers {
azuread = {
source = "hashicorp/azuread"
version = "~> 3.10.0"
}
}
}terraform init -upgrade
terraform planSince this is the first tracked version on this site (no prior known version), review your existing azuread_user and azuread_group license blocks if you plan to migrate to the new azuread_user_license / azuread_group_license resources — moving license management out of inline attributes requires state import or a controlled terraform state mv to avoid drift.
Confirm the provider version and that the new resources are recognized:
terraform version
terraform providers schema -json | jq '.provider_schemas["registry.terraform.io/hashicorp/azuread"].resource_schemas | keys[] | select(test("license|combination_configuration"))'Run terraform plan against a configuration using one of the new resources or data sources to confirm no errors before applying.
v3.10.0 is a feature-additive release: it strengthens Microsoft Entra ID authentication strength policy management with new FIDO2/X.509 combination resources and separates license assignment into its own resources for users and groups. Two targeted bug fixes improve error messaging and delete correctness. Update the version constraint, run terraform init -upgrade, and validate with terraform plan before rolling out the new resources.
Infrastructure as CodeLearn how to use Terraform data sources to query existing resources, look up AMIs, reference remote state, and build dynamic configurations. Complete.
Cloud ComputingMaster Terraform version constraints for Terraform core and providers. Covers operators, lock files, required_version, required_providers, and upgrade...
Cloud ComputingLearn how to use Terraform count and for_each to create multiple resources. Side-by-side comparison, practical examples, conditional creation
Cloud ComputingComplete guide to Terraform lifecycle rules. Learn prevent_destroy, create_before_destroy, ignore_changes