Terraform AWS Самостоятельная ссылка на группу безопасности - PullRequest
1 голос
/ 13 апреля 2020

Я использую terraform для AWS предоставления ресурсов. Мне нужно для самостоятельной ссылки "mySG". из документации Terraform я могу использовать

 ingress {
          from_port = 0
          to_port = 0
          protocol = -1
          self = true
      }

, но как насчет различных протоколов? Использование консоли Ниже приведены доступные исторические правила c для входящих сообщений:

      Type      Protocol         PortRange      Source
1. All TCP      TCP             0-65535         mySG 
2. All UDP       UDP              0-65535         mySG 
3. Custom TCP    TCP             1856            mySG

(требуется ли третья запись? (С учетом первой записи для всех портов)): обрабатывает ли правило входа, описанное выше, все 3 записи? Если нет, то каким должен быть синтаксис terraform.

1 Ответ

3 голосов
/ 13 апреля 2020

Вы можете реализовать самоссылочную группу, разделив группу se c из правил, используя ресурсы aws_security_group и aws_security_group_rule соответственно. Выполнение этого в сочетании с вашими 3 существующими правилами будет выглядеть примерно так:

resource "aws_security_group" "sec_group" {
  name   = "sec_group"
  vpc_id = "${local.vpc_id}"
}

resource "aws_security_group_rule" "sec_group_allow_tcp" {
  type              = "ingress"
  from_port         = 0 // first part of port range 
  to_port           = 65535 // second part of port range
  protocol          = "tcp" // Protocol, could be "tcp" "udp" etc. 
  security_group_id = "${aws_security_group.sec_group.id}" // Which group to attach it to
  source_security_group_id = "${aws_security_group.sec_group.id}" // Which group to specify as source
}

resource "aws_security_group_rule" "sec_group_allow_udp" {
  type              = "ingress"
  from_port         = 0 // first part of port range 
  to_port           = 65535 // second part of port range
  protocol          = "udp" // Protocol, could be "tcp" "udp" etc. 
  security_group_id = "${aws_security_group.sec_group.id}" // Which group to attach it to
  source_security_group_id = "${aws_security_group.sec_group.id}" // Which group to specify as source
}

resource "aws_security_group_rule" "sec_group_allow_1865" {
  type              = "ingress"
  from_port         = 1865 // first part of port range 
  to_port           = 1865 // second part of port range
  protocol          = "tcp" // Protocol, could be "tcp" "udp" etc. 
  security_group_id = "${aws_security_group.sec_group.id}" // Which group to attach it to
  source_security_group_id = "${aws_security_group.sec_group.id}" // Which group to specify as source
}

Обратите внимание, что правило принимает тип протокола от порта / к порту (для диапазона) и необязательный source_security_group_id указать

...