Terraform - разрешить все исходящие порты, кроме определенных портов? - PullRequest
0 голосов
/ 14 октября 2018

У меня есть эта группа безопасности AWS, определенная в terraform:

resource "aws_security_group" "sg" {
  name = "${var.name}"
  description = "${var.description}"
  vpc_id = "${data.terraform_remote_state.vpc.vpc_id}"

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["${var.ext_blocks}"]
  }

  egress {
    from_port       = 0
    to_port         = 0
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
  }
}

При этой конфигурации любой порт может использоваться как исходящий / исходящий.Но если я хочу исключить некоторые порты, каков будет рекомендуемый способ?

Допустим, я хочу исключить порты 25 и 465, чтобы я мог сделать что-то вроде (вместо того, чтобы использовать это одно правило выхода, которое позволяет любомупорт):

  egress {
    from_port       = 0
    to_port         = 24
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
  }
  egress {
    from_port       = 26
    to_port         = 464
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
  }
  egress {
    from_port       = 466
    to_port         = 65535
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
  }

Но для этого необходимо определить конкретные диапазоны, которые требуют определения некоторых дополнительных правил выхода.Может быть, есть лучший способ?Например, где я могу определить правило, разрешающее все порты, а затем исключить некоторые?

1 Ответ

0 голосов
/ 18 октября 2018

Например, где я могу определить правило, разрешающее все порты, а затем исключить некоторые

Это начинает ограничивать ограничения групп безопасности AWS, поскольку они могут указывать только разрешающие правила ине запрещайте правила , и вы можете иметь только 60 входящих и 60 исходящих правил на группу (всего 120 правил каждая).

В идеале вы могли бы определитьпеременная, подобная этой

variable "excluded_ports" { default=[25,465] }

, которая затем может быть использована для создания aws_security_group_rule ресурсов , аналогичных тем, которые вы разместили в своем вопросе (т. е. от / до блоков 0-24, 26-464и 466-65535).К сожалению, это было бы довольно сложно и, если возможно, привело бы к уродливому / хакерскому способу генерирования портов от / до на основе этой предоставленной переменной.Это связано с тем, что отображение элементов списка в настоящее время не поддерживается в последней (v0.11) версии Terraform (ref эта проблема terraform и эта ), но Terraform v0.12 будетсделать эти типы операций намного проще.

...