Eu tenho uma pilha cfn que (entre outras coisas) cria uma VPC, vários grupos de segurança e várias instâncias do EC2. É trivial atribuir grupos de segurança criados na pilha a instâncias que também são criadas pela pilha. No entanto, estou interessado no VPC SG padrão.
Quando uma VPC é criada (manualmente pela GUI, por forma de nuvem ou por qualquer outro meio), a AWS cria um grupo de segurança padrão com uma regra "permitir tudo" para qualquer instância desse grupo.
O que estou tentando fazer é atribuir esse grupo de segurança padrão, juntamente com vários outros SGs, a instâncias criadas pela pilha. Isso está se mostrando muito mais difícil do que eu previa. Aqui estão alguns trechos mostrando o que estou acontecendo:
"AllowSSHSecGroup":{
"Type":"AWS::EC2::SecurityGroup",
"Properties":{
"GroupDescription":"Allow SSH from anywhere",
"VpcId":{
"Ref":"DevVPC"
},
"SecurityGroupIngress":[
{
"IpProtocol":"tcp",
"FromPort":"22",
"ToPort":"22",
"CidrIp":"0.0.0.0/0"
}
]
}
},
"Instance001" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "ami-7eab224e",
"InstanceType" : "m1.large",
"AvailabilityZone" : "us-west-2a",
"PrivateIpAddress" : "10.22.0.110",
"SecurityGroupIds" : [ {"Ref" : "AllowSSHSecGroup"} ],
"SubnetId" : { "Ref" : "PublicSubnet" },
"KeyName" : "erik-key",
"DisableApiTermination" : "false",
"Tags" : [ { "Key": "Name", "Value": "Instance001"} ]
}
}
No snippet acima, estou criando um grupo de segurança "allow ssh" e atribuindo-o a uma instância. Como mencionado, minha pilha também cria uma VPC (na qual esta instância é iniciada), que por sua vez cria um grupo de segurança padrão. Infelizmente, como esse grupo é criado automaticamente pela AWS, seu ID de grupo não está disponível na pilha, impossibilitando a referência por ID. Inicialmente, pensei que a SecurityGroups
propriedade seria uma opção, pois isso me permitiria referenciar o SG padrão pelo nome default
. Porém, isso não funciona, pois a SecurityGroups
propriedade é apenas para grupos de segurança EC2, não para grupos de segurança VPC.
Então, eu estou preso. Eu já abriu um caso com apoio AWS sobre isso, mas até agora, não ter sido útil. Alguma idéia de como posso fazer isso?
SecurityGroupIngress
, referindo-se ao seu grupo de segurança padrão sintético, poderá obter a auto-referência desejada em uma implantação de pilha únicaGroupId
eSourceSecurityGroupId
definido como{ "Ref": "<SecurityGroupResource>" }