链接安全组

问题描述

我一直在四处寻找为什么我认为应该起作用的东西不起作用。 这是一个细分

  • 我有一个带有公共分配IP的堡垒,该安全组可以启用所有出口通信。还有一个这样的问题点:
  FooSSHIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      IpProtocol: tcp
      FromPort: 22
      ToPort: 22
      GroupId:
        Fn::ImportValue: !Sub "${FooStackName}-AdminSecurityGroup"
      SourceSecurityGroupId: !Ref BastionSecurityGroup
      Description: Enables SSH to FooService

因此,我试图允许来自BastionSecurityGroup@22的连接到达另一个称为AdminSecurityGroup的安全组,称为FooStack

AdminSecurityGroup可以在下面找到。是显然是空的,但请忍受我。关键是要有一个可以链接到某个地方以启用SSH访问的安全组。

  AdminSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: >-
        For FooService admin access.
        Grants access to EC2 instances over SSH.
      VpcId:
        Fn::ImportValue: !Sub "${VpcStackName}-VPCId"

无论如何,上面的那个组以后会链接AWS::EC2::LaunchTemplate中被最终引用的SecurityGroup。定义如下:

  ServerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable Client and Admin access
      VpcId:
        Fn::ImportValue: !Sub "${VpcStackName}-VPCId"
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: !Ref ClientPort
          ToPort: !Ref ClientPort
          SourceSecurityGroupId: !Ref ClientSecurityGroup
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          SourceSecurityGroupId: !Ref AdminSecurityGroup

如您所见,还有ClientSecurityGroup遵循相同的模式。

最后,问题是:

  1. 这有意义吗?
  2. 为什么它不起作用?据我所知,拥有这样的安全组应该导致通过ENI路由通信。但不知何故。
  3. 有趣的是,如果我将AdminSecurityGroup替换为ServerSecurityGroup,则可以进行连接。显然,接下来是从AdminSecurityGroup删除ClientSecurityGroupFooStack(不再需要这些了)。
  4. 如果在Foo内引用了LaunchTemplate的所有安全组,为什么一切都会生效?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)