Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[azuread_named_location] Lack of validation on CIDR masks in ip_ranges parameter #855

Closed
ShaheenK27 opened this issue Aug 2, 2022 · 1 comment · Fixed by #1254
Closed

Comments

@ShaheenK27
Copy link

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritise this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritise the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform (and AzureAD Provider) Version

Terraform v1.0.0
+ provider registry.terraform.io/hashicorp/azuread v2.20.0

Affected Resource(s)

  • azuread_named_location

Terraform Configuration Files

resource "azuread_named_location" "named-location-test01" {
  display_name = "named-location-test01"
  ip {
    ip_ranges = [
      "20.0.0.0/4",
      "2001:DB8::/64"            
    ]
    trusted = false
  }
}

Expected Behavior

  • Terraform should throw an error when an IP range with an invalid CIDR mask is specified in this parameter.

Actual Behavior

  • Terraform does not validate the CIDR masks and therefore, does not display any error/changes if CIDR range less than /8 is specified. Note: Terraform only performs a check on whether an IP range is in a valid format

  • The apply is successful and the the IP range is visible on the Portal but, when viewed in the edit section, the named location cannot be saved [the 'Save' button appears disabled/greyed out on the Portal] as long as the invalid IP range is a part of the named location.

1. First apply is successful

  azuread_named_location.named-location-test01: Creating...
  azuread_named_location.named-location-test01: Creation complete after 4s [id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

  Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

2. Second apply shows no changes

  azuread_named_location.named-location-test01: Refreshing state... [id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

  No changes. Your infrastructure matches the configuration.

  Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

  Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Important Factoids

  • As per the official Microsoft documentation, the CIDR mask in ip_ranges parameter should be greater than /8 (Therefore, ranges such as /4 or /6 aren't acceptable)

  • Azure Portal has proper validation for this and displays an error when an invalid CIDR is specified.

Steps to Reproduce

  • terraform apply with invalid CIDR mask in ip_ranges parameter

References

@manicminer
Copy link
Contributor

manicminer commented Sep 1, 2022

Hi @ShaheenK27, thanks for reporting this. This would seem to be an API bug since a seemingly invalid prefix length is accepted by the API without error. Unfortunately the Conditional Access API has quite a lot of validation bugs.

However in the interest of usability we'll look at adding this validation if it is feasible. Note that we cannot guarantee provider-level validation in all cases because we often don't have access to interpolated values until apply-time. Accordingly, I will also raise this as an API bug.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants