diff --git a/builder/azure/arm/config.go b/builder/azure/arm/config.go index 242163988..5d711270f 100644 --- a/builder/azure/arm/config.go +++ b/builder/azure/arm/config.go @@ -781,6 +781,23 @@ func assertTagProperties(c *Config, errs *packer.MultiError) { func assertRequiredParametersSet(c *Config, errs *packer.MultiError) { c.ClientConfig.Validate(errs) + ///////////////////////////////////////////// + // Identity + if len(c.UserAssignedManagedIdentities) != 0 { + for _, rid := range c.UserAssignedManagedIdentities { + r, err := client.ParseResourceID(rid) + if err != nil { + errs = packer.MultiErrorAppend(errs, err) + } + if r.Provider != "" && !strings.EqualFold(r.Provider, "Microsoft.ManagedIdentity") { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A valid user assigned managed identity resource id must have a correct resource provider")) + } + if r.ResourceType.String() != "" && !strings.EqualFold(r.ResourceType.String(), "userAssignedIdentities") { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A valid user assigned managed identity resource id must have a correct resource type")) + } + } + } + ///////////////////////////////////////////// // Capture if c.CaptureContainerName == "" && c.ManagedImageName == "" {