Terraform-provider-aws: Protocolo de regra de grupo de segurança da AWS / erro de porta.

Criado em 10 jul. 2017  ·  3Comentários  ·  Fonte: hashicorp/terraform-provider-aws

Oi,

Versão Terraform

Terraform v0.9.11

Recurso (s) afetado (s)

  • aws_security_group_rule

Arquivos de configuração do 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"
  }
}

Comportamento esperado

O Terraform deve gerar um erro de que definir o protocolo como -1 e definir from_port e to_port não é compatível OU criar a regra para tcp e udp.

Comportamento Real

Lança um erro de que a regra solicitada já foi adicionada, porque está adicionando uma regra permitir todos para o CIDR especificado.

Passos para reproduzir

  1. Defina um novo recurso de regra SG, para portas específicas com o mesmo CIDR e portas diferentes.
  2. Executar o terrenoform aplicar.
  3. Obtenha o erro abaixo:
    `` `* aws_security_group_rule.Logstash [3]: 1 erro (s) ocorrido (s):
  • aws_security_group_rule.Logstash.3: [WARN] Uma regra de grupo de segurança duplicada foi encontrada em (sg-xxxxxxxx). Isso pode ser
    um efeito colateral de um problema do Terraform agora corrigido causando dois grupos de segurança com
    atributos idênticos, mas diferentes source_security_group_ids para substituir cada um
    outro no estado. Veja https://github.com/hashicorp/terraform/pull/2376 para mais
    informações e instruções para recuperação. Mensagem de erro: a regra especificada "peer: 10.0.1.0/8, ALL, ALLOW" já existe```
bug servicec2 stale

Comentários muito úteis

Acontece que é o comportamento padrão da API AWS, se você fornecer protocol = -1 para um aws_security_group_rule, você obterá uma regra ALLOW. Isso deve ser mencionado na documentação do terraform.

a maneira correta de fazer isso é criar duas aws_security_group_rule para tcp e 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 comentários

Acontece que é o comportamento padrão da API AWS, se você fornecer protocol = -1 para um aws_security_group_rule, você obterá uma regra ALLOW. Isso deve ser mencionado na documentação do terraform.

a maneira correta de fazer isso é criar duas aws_security_group_rule para tcp e 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}"
}

Marcando este problema como obsoleto devido à inatividade. Isso ajuda nossos mantenedores a encontrar e focar nos problemas ativos. Se este problema não receber comentários nos próximos 30 dias, ele será automaticamente encerrado. Os mantenedores também podem remover a etiqueta velha.

Se este problema foi encerrado automaticamente e você acha que deve ser reaberto, incentivamos a criação de um novo problema com um link de volta para este para contexto adicional. Obrigado!

Vou bloquear este problema porque ele está fechado há _30 dias_ ⏳. Isso ajuda nossos mantenedores a encontrar e focar nos problemas ativos.

Se você acha que este problema deve ser reaberto, incentivamos a criação de um novo número com um link de volta para este para contexto adicional. Obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações