繁体   English   中英

如何添加引用另一个安全组的 cloudformation 安全组入口规则?

[英]How do I add a cloudformation security group ingress rule that refers to another security group?

我在 yaml 模板中有以下安全组。 我想让“SecurityGroupApplication”安全组允许来自“SecurityGroupBastion”的传入连接。 但是,aws 客户端的验证模板 function 告诉我无用的信息,如“不受支持的结构”。 好的,但是结构有什么问题? 想法?

Resources:
  SecurityGroupBastion:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Bastion security group
      SecurityGroupIngress:
        - CidrIp: 0.0.0.0/0
          IpProtocol: tcp
          FromPort: 22
          ToPort: 22
      VpcId: !Ref vpcId
  SecurityGroupApplication:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Application security group
      SecurityGroupIngress:
        - SourceSecurityGroupId: !Ref SecurityGroupBastion
          IpProtocol: tcp

除了我必须为App安全组指定端口之外,您的模板才能完美地找到我:

Resources:
  SecurityGroupBastion:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Bastion security group
      SecurityGroupIngress:
        - CidrIp: 0.0.0.0/0
          IpProtocol: tcp
          FromPort: 22
          ToPort: 22
      VpcId: vpc-abcd1234
  SecurityGroupApplication:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Application security group
      SecurityGroupIngress:
        - SourceSecurityGroupId: !Ref SecurityGroupBastion
          IpProtocol: tcp
          FromPort: 22
          ToPort: 22

如果您希望SecurityGroupApplication成为安全组,则应使用Type: AWS::EC2::SecurityGroup而不是Type: AWS::EC2::SecurityGroupIngress 这可能是您看到的“不支持的结构”错误的原因。

只是如果有人陷入这个老问题,现在,有一种方法可以在 cloudformation 中引用跨帐户 SG,因此如果您想添加指向另一个 AWS 帐户的 SG 入口规则,只需添加密钥SourceSecurityGroupOwnerIdaccount ID即可。

IE

AWSTemplateFormatVersion: 2010-09-09
Resources:
  TargetSG:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      VpcId: vpc-1a2b3c4d
      GroupDescription: Security group allowing ingress for security scanners
  InboundRule:
    Type: 'AWS::EC2::SecurityGroupIngress'
    Properties:
      GroupId: !GetAtt TargetSG.GroupId
      IpProtocol: tcp
      FromPort: 80
      ToPort: 80
      SourceSecurityGroupId: sg-12345678 # SG in the other AWS account
      SourceSecurityGroupOwnerId: '123456789012' # Account ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM