![](/img/trans.png)
[英]AWS Cloudformation - Add condition to security group egress rule
[英]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 入口规则,只需添加密钥SourceSecurityGroupOwnerId
和account 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.