O modelo Cloud Formation adiciona a regra de ingresso ao grupo de segurança existente

4

Escopo do problema

Eu tenho um aplicativo criado usando vários modelos de formação de nuvem. Eles precisam interagir uns com os outros, mas são muito grandes / complicados para construir em um modelo.

Detalhe do cenário

Imagine que havia apenas dois modelos (há significativamente mais)

  • Modelo A
  • Modelo B

O modelo A cria um grupo de segurança (grupo de segurança A) com ele próprio como a única regra de ingresso. Ele é aplicado a uma série de hosts nesse modelo que executam a mesma função.

O modelo B cria outro grupo de segurança (grupo de segurança B) e um número de hosts (em um beanstalk elástico).

Pergunta

Como posso adicionar uma regra de ingresso ao Grupo de segurança A para o tráfego do Grupo de segurança B usando formação de nuvens ?

O que eu tentei

Examinei a documentação, quero criar uma regra do Ingress do grupo de segurança e associá-la ao grupo de segurança A, mas isso não parece ser viável, tanto quanto eu posso ver - link

Outras alternativas

Eu poderia usar apenas o intervalo CIDR dos hosts que estão no Grupo de segurança B, como é conhecido antes de qualquer um deles ser construído (tudo em VPCs com sub-redes separadas), mas acho que deve haver uma maneira melhor e mais segura de aceitar tráfego de uma faixa cidr.

    
por Sam 28.06.2016 / 15:50

1 resposta

3

Sim, isso pode ser feito.

Você precisa passar o identificador do grupo de segurança (para o Grupo de segurança A) para o modelo do Modelo B como um parâmetro. A partir daí, você pode fazer referência ao Grupo de segurança A em um recurso AWS::EC2::SecurityGroupIngress .

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Parameters" : {
        "SecurityGroupA" : {
            "Description" : "Security group to add Ingress rule to",
            "Type"        : "AWS::EC2::SecurityGroup::Id"
        }
    },
    "Resources" : {
        "LocalSecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup"
        },
        "InboundRule": {
            "Type": "AWS::EC2::SecurityGroupIngress",
            "Properties":{
                "IpProtocol": "tcp",
                "FromPort": "80",
                "ToPort": "80",
                "SourceSecurityGroupId": {
                    "Fn::GetAtt": [ "LocalSecurityGroup", "GroupId" ]
                },
                "GroupId": {
                    "Fn::GetAtt": [ "SecurityGroupA", "GroupId" ]
                }
            }
        }
    }
}

Observe que este exemplo usa o ID do grupo de segurança, que é o caso quando seus grupos de segurança estão em um VPC. Se eles estiverem no EC2-Classic, você usaria o GroupName .

    
por 28.06.2016 / 16:14