AWS CloudFormation: Nhóm bảo mật mặc định của VPC


14

Tôi có một ngăn xếp cfn (trong số những thứ khác), tạo VPC, một số nhóm bảo mật và một số phiên bản EC2. Việc gán các nhóm bảo mật được tạo trong ngăn xếp cho các trường hợp cũng được tạo bởi ngăn xếp là chuyện nhỏ. Tuy nhiên, tôi quan tâm đến VPC SG mặc định.

Khi một VPC được tạo (cho dù là thủ công qua GUI, bằng thông tin đám mây hoặc bất kỳ phương tiện nào khác), AWS sẽ tạo một nhóm bảo mật mặc định với quy tắc "cho phép tất cả" cho bất kỳ trường hợp nào trong nhóm đó.

Những gì tôi đang cố gắng làm là gán nhóm bảo mật mặc định này cùng với một số SG khác cho các trường hợp được tạo bởi ngăn xếp. Điều này đang chứng tỏ là khó khăn hơn nhiều so với tôi dự đoán. Dưới đây là một số đoạn trích cho thấy những gì tôi đang diễn ra:

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

Trong đoạn trích trên, tôi đang tạo nhóm bảo mật "allow ssh" và gán nó cho một thể hiện. Như đã đề cập, ngăn xếp của tôi cũng tạo ra một VPC (phiên bản này được khởi chạy), từ đó tạo ra một nhóm bảo mật mặc định. Thật không may, vì nhóm này được AWS tạo tự động, ID nhóm của nó không có sẵn cho ngăn xếp, khiến ID không thể tham chiếu bằng ID. Ban đầu tôi nghĩ rằng SecurityGroupstài sản sẽ là một tùy chọn, vì điều đó sẽ cho phép tôi tham chiếu SG mặc định theo tên của nó , default. Tuy nhiên, điều đó không hoạt động vì thuộc SecurityGroupstính chỉ dành cho Nhóm bảo mật EC2, không phải Nhóm bảo mật VPC.

Vì vậy, tôi bị mắc kẹt. Tôi đã mở một trường hợp với sự hỗ trợ của AWS về vấn đề này, nhưng cho đến nay, chúng không hữu ích. Bất kỳ ý tưởng về làm thế nào tôi có thể thực hiện điều này?

Câu trả lời:


18

Có thể tham khảo nhóm bảo mật mặc định bằng cách sử dụng:

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

Trong đó "VPC" là tên tài nguyên VPC của bạn.

Với AWS::EC2::SecurityGroupIngressAWS::EC2::SecurityGroupEgress, bạn có thể tăng quyền của nhóm bảo mật mặc định này.

Tôi nghĩ rằng đây là những gì bạn muốn:

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

Như được đề cập bởi @artbristol và @gabriel, điều này cho phép các quy tắc Ingress / ETHER được thêm vào nhóm bảo mật mặc định cho VPC trong một triển khai ngăn xếp.

Tôi khá chắc chắn rằng vấn đề tự tham chiếu vẫn ảnh hưởng đến bất kỳ nỗ lực nào trong việc thay đổi bất kỳ thuộc tính nào khác trên nhóm bảo mật mặc định của VPC. Một ví dụ điển hình cho việc này sẽ là thêm Thẻ hoặc Mô tả. Nếu bạn muốn thay đổi những điều này, bạn sẽ phải đối phó với các nhóm bảo mật bên ngoài đang nằm xung quanh.


5

Chà, hóa ra, bộ phận hỗ trợ AWS đã trả lời và thông báo cho tôi rằng họ nhận ra rằng đây là một lỗ hổng tính năng trong CloudFormation và nó đã được gửi cho nhóm phát triển dưới dạng yêu cầu tính năng.

Vì vậy, cho đến khi tính năng này được triển khai, cách giải quyết là tạo nhóm bảo mật "mặc định" của riêng bạn, sao chép hành vi tương tự như SG mặc định "thực". Thật không may, do khía cạnh tự tham chiếu của thiết lập này, vẫn không thể thực hiện trong một lần triển khai ngăn xếp. Cách khác là triển khai ngăn xếp một lần, mà không chỉ định nhóm bảo mật mặc định của bạn. Sau đó, khi ngăn xếp được tạo (và bạn đã có cơ hội để xem ID nhóm bảo mật mặc định là gì), bạn có thể thêm ID SG đó vào các phiên bản của mình.


2
Tôi tin rằng nếu bạn theo dõi forum.aws.amazon.com/thread.jspa?messageID=466960 và tạo một SecurityGroupIngress, tham khảo nhóm bảo mật mặc định tổng hợp của bạn, bạn có thể có được tham chiếu tự mà bạn muốn, trong một triển khai ngăn xếp
artbristol

Chính xác. Ví dụ: nếu bạn chạy ngăn xếp CloudFormer trên một VPC hiện có chứa các nhóm bảo mật tự tham chiếu mặc định, nó sẽ tạo ra một mẫu trong đó SecuritygroupIngress được chia thành tài nguyên của chính nó với cả hai GroupIdSourceSecurityGroupIdđược đặt thành{ "Ref": "<SecurityGroupResource>" }
Gabriel

2
Bạn có tình cờ biết nếu điều này đã được cập nhật? Phải nhân đôi nhóm bảo mật mặc định là khó chịu.
Paul MacDougall

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.