NSG规则通过Terraform跨天蓝色订阅

时间:2020-09-08 03:53:52

标签: azure terraform alias terraform-provider-azure azure-nsg

#provider azurem.mgmt is Subscription A.
#prodiver azurem.corpapps is Subscription B.

我正在尝试通过提供者Subscription Aazurerm.mgmt中创建nsg规则。这里的destination application security group与该订阅中的提供者Subscription Bazurerm.corpapps中。

provider "azurerm" {
    client_id       = "${var.client_id}"
    client_secret   = "${var.client_secret}"
    tenant_id       = "${var.tenant_id}"
    subscription_id = "${var.subscription}"
    alias           = "mgmt"
}

provider "azurerm" {
    client_id       = "${var.client_id}"
    client_secret   = "${var.client_secret}"
    tenant_id       = "${var.tenant_id}"
    subscription_id = "${var.subscription_B}"
    alias           = "corpapps"
}

然后,我使用提供程序从订阅B获取我的asg,如下所示: enter image description here

然后我在nsg规则中使用该引用 enter image description here

但是,我收到错误消息-说未找到ASG: enter image description here

但是,在azure门户中,资源已经存在,如图所示: enter image description here

1 个答案:

答案 0 :(得分:1)

我试图分配在两个订阅上都具有所有者角色的SP,或者使用带有CLI的Azure帐户,但是运气不好。另外,正如评论所指出的那样,有limitation表示NSG在不同位置未引用ASG。经过我的验证后,您不能从另一个订阅中添加ASG,即使它与NSG位于同一区域或以VNet为目标。

此外,当您将此ASG添加为NSG规则中的目标源或目标时,您会看到

选择一个应用程序安全组(ASG)作为安全规则 资源。 ASG启用基于以下功能的细粒度网络安全策略 工作负载或应用程序,而不是IP地址或CIDR块。 指定应用程序安全组的规则仅适用于 属于应用程序安全组成员的网络接口 在同一虚拟网络上。

enter image description here