Terraform-provider-aws: Error de puerto / protocolo de regla de grupo de seguridad de AWS.

Creado en 10 jul. 2017  ·  3Comentarios  ·  Fuente: hashicorp/terraform-provider-aws

Hola,

Versión Terraform

Terraform v0.9.11

Recursos afectados

  • aws_security_group_rule

Archivos de configuración de Terraform

variable "ports_logstash" {
  description = "Ports used by logstash and graphite"
  default     = ["40000", "40001", "40002", "40003", "40004", "40005", "40006", "40007", "40008", "40009", "40010", "2003", "2005", "8125", "80", "443"]
}

resource "aws_security_group_rule" "Logstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = -1
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group" "SG-Logstash" {
  name        = "SG-Logstash"
  description = "Access to all ports required for Logstash communication"
  vpc_id      = "${aws_vpc.default.id}"

  tags {
    Name = "SG-Logstash"
  }
}

Comportamiento esperado

Terraform debería arrojar un error de que definir el protocolo como -1 y establecer from_port y to_port no es compatible O crear la regla para tcp y udp.

Comportamiento real

Lanza un error de que la regla solicitada ya está agregada, porque está agregando una regla de permitir todo para el CIDR especificado.

Pasos para reproducir

  1. Defina un nuevo recurso de regla SG, para puertos específicos con el mismo CIDR y puertos diferentes.
  2. Ejecute terraform apply.
  3. Obtenga el siguiente error:
    `` `* aws_security_group_rule.Logstash [3]: Ocurrió 1 error (s):
  • aws_security_group_rule.Logstash.3: [ADVERTENCIA] Se encontró una regla de grupo de seguridad duplicada en (sg-xxxxxxxx). Esto podría ser
    un efecto secundario de un problema de Terraform ahora solucionado que causaba dos grupos de seguridad con
    atributos idénticos pero diferentes source_security_group_ids para sobrescribir cada uno
    otro en el estado. Consulte https://github.com/hashicorp/terraform/pull/2376 para obtener más información.
    información e instrucciones para la recuperación. Mensaje de error: la regla especificada "peer: 10.0.1.0/8, ALL, ALLOW" ya existe```
bug servicec2 stale

Comentario más útil

Resulta que es el comportamiento predeterminado de la API de AWS, si proporciona el protocolo = -1 para una regla aws_security_group_rule, obtendrá una regla ALL ALLOW. Esto debería mencionarse en los documentos de terraform.

la forma correcta de hacerlo es crear dos aws_security_group_rule tanto para tcp como para udp fe

resource "aws_security_group_rule" "tcpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "tcp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group_rule" "udpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "udp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

Todos 3 comentarios

Resulta que es el comportamiento predeterminado de la API de AWS, si proporciona el protocolo = -1 para una regla aws_security_group_rule, obtendrá una regla ALL ALLOW. Esto debería mencionarse en los documentos de terraform.

la forma correcta de hacerlo es crear dos aws_security_group_rule tanto para tcp como para udp fe

resource "aws_security_group_rule" "tcpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "tcp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group_rule" "udpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "udp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

Marcar este problema como obsoleto debido a la inactividad. Esto ayuda a nuestros mantenedores a encontrar y concentrarse en los problemas activos. Si este problema no recibe comentarios en los próximos 30 días, se cerrará automáticamente. Los encargados del mantenimiento también pueden quitar la etiqueta obsoleta.

Si este problema se cerró automáticamente y cree que debe reabrirse, le recomendamos que cree un nuevo problema que se vincule a este para agregar contexto. ¡Gracias!

Voy a bloquear este problema porque ha estado cerrado durante _30 días_ ⏳. Esto ayuda a nuestros mantenedores a encontrar y concentrarse en los problemas activos.

Si cree que este problema debería reabrirse, le recomendamos que cree un nuevo problema que se vincule a este para agregar contexto. ¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones