AWS CloudFormation: VPC varsayılan güvenlik grubu


16

(Diğer şeylerin yanı sıra), bir VPC, birkaç güvenlik grubu ve bir avuç EC2 örnekleri oluşturan bir cfn yığını var. Yığın içinde oluşturulan güvenlik gruplarını da yığın tarafından oluşturulan örneklere atamak önemsizdir. Ancak, varsayılan VPC SG ile ilgileniyorum.

Bir VPC oluşturulduğunda (ister GUI, ister bulut bilgisi yoluyla isterse başka bir yolla olsun), AWS o gruptaki herhangi bir örnek için "hepsine izin ver" kuralına sahip varsayılan bir güvenlik grubu oluşturur.

Ne yapmaya çalışıyorum yığını tarafından oluşturulan örneklere birkaç diğer SGs ile birlikte bu varsayılan güvenlik grubu atamaktır. Bu tahmin ettiğimden çok daha zor. İşte ne olduğunu gösteren bazı parçacıklar:

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

Yukarıdaki snippet'te, bir "allow ssh" güvenlik grubu oluşturuyorum ve bunu bir örneğe ataıyorum. Belirtildiği gibi, yığım ayrıca bir VPC (bu örnek başlatılır) oluşturur ve bu da varsayılan bir güvenlik grubu oluşturur. Ne yazık ki, bu grup AWS tarafından otomatik olarak oluşturulduğundan, grup kimliği yığın tarafından kullanılamaz, bu da kimlikle referans vermeyi imkansız hale getirir. Başlangıçta SecurityGroupsözelliği bir seçenek olacağını düşündüm , çünkü bana varsayılan SG adına referans vereceğim default. Ancak, SecurityGroupsözellik VPC Güvenlik Grupları için değil, yalnızca EC2 Güvenlik Grupları için olduğu için bu işe yaramaz .

Böylece sıkıştım. Ben var bu konuda AWS desteğinde bir vaka açtı, ancak şu ana kadar, onlar yararlı oldum değil. Bunu nasıl başarabileceğim hakkında bir fikrin var mı?

Yanıtlar:


19

Varsayılan güvenlik grubuna başvurmak aşağıdakileri kullanarak mümkündür:

{ "Fn::GetAtt" : ["VPC", "DefaultSecurityGroup"] }

Burada "VPC", VPC kaynak adınızdır.

İle AWS::EC2::SecurityGroupIngressve AWS::EC2::SecurityGroupEgress, bu varsayılan güvenlik grubunun izinlerini büyütebilir.

Bence istediğin bu:

"VPCDefaultSecurityGroupIngress": {
  "Type" : "AWS::EC2::SecurityGroupIngress",
  "Properties" : {
    "GroupId": { "Fn::GetAtt" : ["VPC", "DefaultSecurityGroup"] },
    "IpProtocol":"tcp",
    "FromPort":"22",
    "ToPort":"22",
    "CidrIp":"0.0.0.0/0"
  }
},

@Artbristol ve @gabriel tarafından belirtildiği gibi, Ingress / Egress kurallarının tek bir yığın dağıtımında VPC için varsayılan güvenlik grubuna eklenmesine izin verir.

Kendine başvurma sorununun VPC'nin varsayılan güvenlik grubundaki diğer özelliklerden herhangi birini değiştirme girişimlerini etkilediğinden eminim. Bunun iyi bir örneği Etiket veya Açıklama eklemek olabilir. Bunları değiştirmek isterseniz, etrafta dolaşan yabancı güvenlik gruplarıyla uğraşmak zorunda kalacaksınız.


6

Anlaşıldığı üzere, AWS desteği, bunun CloudFormation'daki bir özellik boşluğu olduğunu kabul ettiklerini ve özellik ekibinin bir özellik isteği olarak geliştirme ekibine gönderildiğini söyledi.

Bu özellik uygulanana kadar, geçici çözüm, "gerçek" varsayılan SG ile aynı davranışı çoğaltan kendi "varsayılan" güvenlik grubunuzu oluşturmaktır. Ne yazık ki, bu kurulumun kendi kendine başvuru özelliğinden dolayı, tek bir yığın dağıtımında hala yapmak mümkün değildir. Alternatif olarak, yığınlarınızı örneklerinize varsayılan güvenlik grubunu atamadan bir kez dağıtmaktır. Ardından, yığın oluşturulduktan sonra (ve varsayılan olarak Güvenlik Grubu Kimliğinin ne olduğunu görme şansınız olduğunda), bu SG Kimliğini örneklerinize ekleyebilirsiniz.


2
Bu forums.aws.amazon.com/thread.jspa?messageID=466960'ı takip ederseniz ve SecurityGroupIngresssentetik varsayılan güvenlik grubunuza başvurarak bir tek yığın dağıtımında istediğiniz öz referansı elde edebileceğinize inanıyorum
artbristol

Doğru. Varolan VPC içeren varsayılan CloudFormer yığını çalıştırırsanız Örneğin, özüne güvenlik grupları, bu SecurityGroupIngress hem kendi kaynak olarak patlak bir şablon oluşturur GroupIdve SourceSecurityGroupIdayarlı{ "Ref": "<SecurityGroupResource>" }
Gabriel

2
Bunun güncellenip güncellenmediğini biliyor musunuz? Varsayılan güvenlik grubunu çoğaltmak sinir bozucu.
Paul MacDougall

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.