1

应用程序安全组功能刚刚在 4 月发布。我们正在尝试实现这一点,因为我们拥有大量服务器,因此网络安全组很快就会变得难以管理。

我找不到任何示例 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 访问。但是,一旦它运行并创建了服务器,我就无法通过 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

4

2 回答 2

1

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

德里克

于 2018-08-27T23:36:53.343 回答
0

As I see, you associate an NSG and an ASG with each network interface, and just allow the traffic through the ASG, not NSG.

I suggest you should read the document Application security groups again, and I think the example of it makes a good Network Architecture.

For your issue, I suggest one NSG with the Subnet and one ASG associated to each network interface. Then allow the traffic with clearly source and destination, in Terraform it means clearly source_application_security_group_ids and destination_application_security_group_ids.

于 2018-08-16T02:13:43.630 回答