Terraform-provider-aws: Protokoll- / Portfehler der AWS-Sicherheitsgruppenregel.

Erstellt am 10. Juli 2017  ·  3Kommentare  ·  Quelle: hashicorp/terraform-provider-aws

Hallo,

Terraform-Version

Terraform v0.9.11

Betroffene Ressource (n)

  • aws_security_group_rule

Terraform-Konfigurationsdateien

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"
  }
}

Erwartetes Verhalten

Terraform sollte den Fehler auslösen, dass das Definieren des Protokolls als -1 und das Festlegen von from_port und to_port nicht unterstützt wird ODER dass die Regel sowohl für tcp als auch für udp erstellt wird.

Tatsächliches Verhalten

Wirft einen Fehler aus, dass die angeforderte Regel bereits hinzugefügt wurde, da eine Zulassungsregel für die angegebene CIDR hinzugefügt wird.

Schritte zum Reproduzieren

  1. Definieren Sie eine neue SG-Regelressource für bestimmte Ports mit demselben CIDR und verschiedenen Ports.
  2. Run Terraform anwenden.
  3. Erhalten Sie den folgenden Fehler:
    `` `* aws_security_group_rule.Logstash [3]: 1 Fehler sind aufgetreten:
  • aws_security_group_rule.Logstash.3: [WARN] Unter (sg-xxxxxxxx) wurde eine doppelte Sicherheitsgruppenregel gefunden. Das mag sein
    ein Nebeneffekt eines jetzt behobenen Terraform-Problems, das zwei Sicherheitsgruppen mit verursacht
    identische Attribute, aber unterschiedliche source_security_group_ids zum Überschreiben
    andere im Staat. Weitere Informationen finden Sie unter
    Informationen und Anweisungen zur Wiederherstellung. Fehlermeldung: Die angegebene Regel "Peer: 10.0.1.0/8, ALL, ALLOW" existiert bereits```
bug servicec2 stale

Hilfreichster Kommentar

Es stellt sich heraus, dass dies das Standardverhalten der AWS-API ist. Wenn Sie protocol = -1 für eine aws_security_group_rule angeben, erhalten Sie eine ALL ALLOW-Regel. Dies sollte in Terraform-Dokumenten erwähnt werden.

Der richtige Weg, dies zu tun, besteht darin, zwei aws_security_group_rule sowohl für tcp als auch für udp fe zu erstellen

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}"
}

Alle 3 Kommentare

Es stellt sich heraus, dass dies das Standardverhalten der AWS-API ist. Wenn Sie protocol = -1 für eine aws_security_group_rule angeben, erhalten Sie eine ALL ALLOW-Regel. Dies sollte in Terraform-Dokumenten erwähnt werden.

Der richtige Weg, dies zu tun, besteht darin, zwei aws_security_group_rule sowohl für tcp als auch für udp fe zu erstellen

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}"
}

Markieren Sie dieses Problem aufgrund von Inaktivität als veraltet. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren. Wenn dieses Problem in den nächsten 30 Tagen keine Kommentare erhält, wird es automatisch geschlossen. Betreuer können auch das veraltete Etikett entfernen.

Wenn dieses Problem automatisch geschlossen wurde und Sie der Meinung sind, dass dieses Problem erneut geöffnet werden sollte, empfehlen wir, ein neues Problem zu erstellen, das für zusätzlichen Kontext mit diesem Problem verknüpft wird. Danke!

Ich werde dieses Problem sperren, da es seit 30 Tagen geschlossen ist. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren.

Wenn Sie der Meinung sind, dass dieses Problem erneut geöffnet werden sollte, empfehlen wir, ein neues Problem zu erstellen, das für zusätzlichen Kontext mit diesem Problem verknüpft wird. Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen