【问题标题】:How do I add a cloudformation security group ingress rule that refers to another security group?如何添加引用另一个安全组的 cloudformation 安全组入口规则?
【发布时间】:2022-02-22 05:25:20
【问题描述】:

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

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

【问题讨论】:

  • 如何将模板指定给 awscli?你的命令行是什么样的?
  • 如果你使用--template-body /users/bob/xyz 那么你应该使用--template-body file://users/bob/xyz。

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

您的模板非常适合我,除了我必须为应用安全组指定端口:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的建议。我确实来回改变了这个,最后按照你的建议回来了。它仍然提供相同的错误。
    【解决方案3】:

    ,如果某人陷入了这个旧问题,现在,有一种方法可以在云形式中引用交叉帐户SG,因此,如果要添加指向另一个AWS帐户的SG Ingress规则,只需添加键 SourceSecurityGroupOwnerId和The account ID.

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2022-08-09
      • 2019-02-05
      • 1970-01-01
      相关资源
      最近更新 更多