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
答案 0 :(得分:0)
如我所见,您将一个NSG和一个ASG与每个网络接口相关联,并且只允许流量通过ASG而不是NSG。
我建议您再次阅读文档Application security groups,并且我认为它的示例构成了良好的网络体系结构。
对于您的问题,我建议一个带有子网的NSG和一个与每个网络接口关联的ASG。然后允许带有明确来源和目的地的流量,在Terraform中表示明确source_application_security_group_ids
和destination_application_security_group_ids
。
答案 1 :(得分:0)
原来,我的代码有效。我遇到的问题是假设ASG(应用程序安全组)可以与我拥有的VM的公共IP地址一起使用。我与Azure产品经理发现ASG仅适用于私有IP地址。这是ASG文档的一大遗漏。
德里克