使用Terraform实施Azure应用程序安全组

时间:2018-08-15 18:11:46

标签: azure terraform terraform-provider-azure

Application Security Group功能刚刚在4月发布。由于我们拥有大量服务器,因此我们正在尝试实现此目的,因此Network Security Group可能很快变得难以管理。

我找不到与此相关的任何示例Terraform代码。我已经从https://docs.microsoft.com/en-us/azure/virtual-machines/linux/terraform-create-complete-vm修改了示例Terraform代码以进行快速POC。场景是我们有一组堡垒服务器(目前只有1个),我们对其进行保护,所有进入重要服务器的SSH都将来自这些堡垒服务器。因此,我创建了一个bastion_asg应用程序安全组,并将DL2staging_rtb_nsg设置为仅允许来自bastion_asg的服务器进行SSH访问。但是,一旦它运行并创建了服务器,我就无法将其转换为DL2staging_rtb_vm。我已经附上了我的代码。

真的很感谢我的POC有什么问题的所有指示。

谢谢

德里克

**这是来自https://docs.microsoft.com/en-us/azure/virtual-machines/linux/terraform-create-complete-vm的示例Terraform代码的主要代码补充:

resource "azurerm_network_security_group" "DL2staging_rtb_nsg" {
...

security_rule {
  name                        = "AllowSSHInbound"
  ...
  source_application_security_group_ids = ["${azurerm_application_security_group.bastion_asg.id}"]
  destination_address_prefix  = "*"
}

# Create network interface
resource "azurerm_network_interface" "DL2staging_rtb_nic" {
...

ip_configuration {
    name                          = "DL2NicConfiguration"
    ...
    application_security_group_ids = ["${azurerm_application_security_group.staging_sellsidertb_asg.id}"]
}

完整的代码位于https://github.com/dl888888/azure-terraform-application-security-group/blob/master/vm3.tf

2 个答案:

答案 0 :(得分:0)

如我所见,您将一个NSG和一个ASG与每个网络接口相关联,并且只允许流量通过ASG而不是NSG。

我建议您再次阅读文档Application security groups,并且我认为它的示例构成了良好的网络体系结构。

对于您的问题,我建议一个带有子网的NSG和一个与每个网络接口关联的ASG。然后允许带有明确来源和目的地的流量,在Terraform中表示明确source_application_security_group_idsdestination_application_security_group_ids

答案 1 :(得分:0)

原来,我的代码有效。我遇到的问题是假设ASG(应用程序安全组)可以与我拥有的VM的公共IP地址一起使用。我与Azure产品经理发现ASG仅适用于私有IP地址。这是ASG文档的一大遗漏。

德里克