AWS::EC2::SecurityGroupIngress - AWS CloudFormation

AWS::EC2::SecurityGroupIngress

インバウンドルールをセキュリティグループに追加します。

インバウンドルールにより、インスタンスは指定された IPv4 または IPv6 CIDR アドレス範囲から、または指定されたセキュリティグループに関連付けられたインスタンスから、トラフィックを受信できます。

各ルールのプロトコルを指定します (たとえば、TCP)。TCP および UDP の場合は、ポートまたはポート範囲も指定する必要があります。ICMP/ICMPv6 の場合は、ICMP/ICMPv6 タイプおよびコードも指定する必要があります。-1 を使用すると、すべてのタイプまたはすべてのコードを指定することができます。

ソースセキュリティグループ (SourcePrefixListIdSourceSecurityGroupId、または SourceSecurityGroupName) または CIDR 範囲 (CidrIp または CidrIpv6) を指定する必要があります。

ルールの変更は、変更が発生するとすぐにセキュリティグループ内のインスタンスに反映されます。ただし、わずかな遅延が発生する場合があります。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "Type" : "AWS::EC2::SecurityGroupIngress", "Properties" : { "CidrIp" : String, "CidrIpv6" : String, "Description" : String, "FromPort" : Integer, "GroupId" : String, "GroupName" : String, "IpProtocol" : String, "SourcePrefixListId" : String, "SourceSecurityGroupId" : String, "SourceSecurityGroupName" : String, "SourceSecurityGroupOwnerId" : String, "ToPort" : Integer } }

YAML

Type: AWS::EC2::SecurityGroupIngress Properties: CidrIp: String CidrIpv6: String Description: String FromPort: Integer GroupId: String GroupName: String IpProtocol: String SourcePrefixListId: String SourceSecurityGroupId: String SourceSecurityGroupName: String SourceSecurityGroupOwnerId: String ToPort: Integer

プロパティ

CidrIp

IPv4 範囲。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

CidrIpv6

[VPC のみ] IPv6 範囲。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

Description

入力 (受信) セキュリティグループルールの説明を更新します。既存の説明を置き換えるか、説明がなかったルールに説明を追加できます。

必須: いいえ

タイプ: 文字列

Update requires: No interruption

FromPort

TCP および UDP プロトコルのポート範囲の開始番号、または ICMP/ICMPv6 タイプの番号。-1 の値は、すべての ICMP/ICMPv6 タイプを示します。すべての ICMP/ICMPv6 タイプを指定した場合、すべてのコードを指定する必要があります。

ICMP プロトコルおよびポートを使用するプロトコルにこれを使用します。

必須: いいえ

タイプ: 整数

Update requires: Replacement

GroupId

セキュリティグループの ID.リクエストでセキュリティグループ ID またはセキュリティグループ名のいずれかを指定する必要があります。デフォルト以外の VPC のセキュリティグループの場合、セキュリティグループ ID を指定する必要があります。

GroupName プロパティまたは GroupId プロパティを指定する必要があります。VPC 内にあるセキュリティグループについては、GroupId プロパティを使用する必要があります。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

GroupName

セキュリティグループの名前。

制約: 最大 255 文字。sg- で始めることはできません。

EC2-Classic の場合の制約: ASCII 文字

EC2-VPC の場合の制約: a~z、A~Z、0~9、スペース、._-:/()#,@[]+=&;{}!$*

必須: いいえ

タイプ: 文字列

Update requires: Replacement

IpProtocol

IP プロトコルの名前tcpudpicmpicmpv6 または番号 (「プロトコル番号」を参照)。

[VPC のみ] -1 を使用してすべてのプロトコルを指定します。セキュリティグループルールを許可するときに、-1、またはtcpudpicmp、または icmpv6 以外のプロトコル番号を指定すると、指定したポート範囲に関係なく、すべてのポートでトラフィックが許可されます。tcpudp、および icmp には、ポート範囲を指定する必要があります。icmpv6 では、、ポート範囲はオプションです。ポート範囲を省略すると、すべてのタイプとコードのトラフィックが許可されます。

必須: はい

タイプ: 文字列

Update requires: Replacement

SourcePrefixListId

[EC2-VPC のみ] AWS サービスのプレフィックスリスト ID。これは、セキュリティグループに関連付けられたインスタンスから VPC エンドポイントを介してアクセスする AWS サービスです。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

SourceSecurityGroupId

セキュリティグループの ID.セキュリティグループ ID またはセキュリティグループ名のいずれかを指定する必要があります。デフォルト以外の VPC のセキュリティグループの場合、セキュリティグループ ID を指定する必要があります。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

SourceSecurityGroupName

[EC2-Classic、デフォルト VPC] ソースセキュリティグループの名前。

GroupName プロパティまたは GroupId プロパティを指定する必要があります。VPC 内にあるセキュリティグループについては、GroupId プロパティを使用する必要があります。

必須: いいえ

タイプ: 文字列

Update requires: Replacement

SourceSecurityGroupOwnerId

[デフォルト以外の VPC] ソースセキュリティグループが別のアカウントにある場合は、ソースセキュリティグループの AWS アカウント ID。このパラメータを、CIDR IP アドレス範囲、IP プロトコル、ポート範囲の開始、ポート範囲の終了のパラメータと組み合わせて指定することはできません。完全な ICMP、UDP、および TCP アクセスを許可するルールを作成します。

SourceSecurityGroupName または SourceSecurityGroupId を指定していて、そのセキュリティグループがスタックを作成しているアカウントとは異なるアカウントに所有されている場合は、SourceSecurityGroupOwnerId を指定する必要があります。それ以外の場合は、このプロパティはオプションです。

必須: 条件付き

タイプ: 文字列

Update requires: Replacement

ToPort

TCP および UDP プロトコルのポート範囲の終了番号、または ICMP/ICMPv6 コード。値 -1 は、指定された ICMP タイプのすべての ICMP/ICMPv6 コードを示します。すべての ICMP/ICMPv6 タイプを指定した場合、すべてのコードを指定する必要があります。

ICMP プロトコルおよびポートを使用するプロトコルにこれを使用します。

必須: いいえ

タイプ: 整数

Update requires: Replacement

EC2 セキュリティグループと Ingress ルール

Amazon EC2 (非 VPC) のセキュリティグループと Ingress ルールを宣言するには、SourceSecurityGroupName プロパティを Ingress ルールで使用します。

次のテンプレート例では、EC2 セキュリティグループを定義し、その Ingress ルールで、同じセキュリティグループ内の他のホストからの着信トラフィックをポート 80 で許可しています。

JSON

"SGBase": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Base Security Group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "CidrIp": "0.0.0.0/0", "FromPort": 22, "ToPort": 22 } ] } }, "SGBaseIngress": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties": { "GroupId": { "Ref": "SGBase" }, "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupId": { "Fn::GetAtt": [ "SGBase", "GroupId" ] } } }

YAML

SGBase: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: Base Security Group SecurityGroupIngress: - IpProtocol: tcp CidrIp: 0.0.0.0/0 FromPort: 22 ToPort: 22 SGBaseIngress: Type: 'AWS::EC2::SecurityGroupIngress' Properties: GroupId: !Ref SGBase IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupId: !GetAtt SGBase.GroupId

ピア接続 VPC 内のセキュリティグループからのトラフィックを許可する

前の例と同様に、次の例では、発信元 (ソース) セキュリティグループから送信先 (ターゲット) セキュリティグループへの一方向のトラフィックが許可されます。ただし、この例では、AWS アカウント間でピア接続された VPC のセキュリティグループを選択します。たとえば、ある AWS アカウントでセキュリティスキャンリソースを作成し、それを別のアカウントで診断を実行するために使用する場合は、クロスアカウントトラフィックを許可することをお勧めします。この例では、異なる AWS アカウントのソースセキュリティグループからの着信トラフィックを許可する、ターゲット VPC セキュリティグループに Ingress ルールを追加します。ソースセキュリティグループには、ターゲットセキュリティグループへの送信トラフィックを許可する Egress ルールも必要です。ソースセキュリティグループは別のアカウントにあるため、次の例では Ref 関数を使用してソースセキュリティグループ ID sg-12345678 を参照するのではなく、直接セキュリティグループ ID を指定しています。

JSON

{ "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": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] }, "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "SourceSecurityGroupId": "sg-12345678", "SourceSecurityGroupOwnerId": "123456789012" } } } }

YAML

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 SourceSecurityGroupOwnerId: '123456789012'

Egress ルールと Ingress ルールを持つ VPC セキュリティグループ

送信元 (ソース) セキュリティグループにアウトバウンドルールを追加し、送信先 (ターゲット) セキュリティグループへのトラフィックを許可したい場合があります。この場合、ターゲットセキュリティグループにも、そのソースセキュリティグループからのトラフィックを許可するインバウンドルールが必要です。各セキュリティグループのアウトバウンドおよびインバウンドルールを指定するために Ref 関数を使用できないことに注意してください。そのようにすると、依存関係に循環が生じます。2 つのリソースが相互に依存し合うことはできません。代わりに、Egress リソースと Ingress リソースを使用してそれらのアウトバウンドルールとインバウンドルールを宣言してください。次のテンプレートの例に示します。

JSON

"Resources": { "SourceSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId" : "vpc-1a2b3c4d", "GroupDescription": "Sample source security group" } }, "TargetSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId" : "vpc-1a2b3c4d", "GroupDescription": "Sample target security group" } }, "OutboundRule": { "Type": "AWS::EC2::SecurityGroupEgress", "Properties":{ "IpProtocol": "tcp", "FromPort": 0, "ToPort": 65535, "DestinationSecurityGroupId": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] }, "GroupId": { "Fn::GetAtt": [ "SourceSG", "GroupId" ] } } }, "InboundRule": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties":{ "IpProtocol": "tcp", "FromPort": 0, "ToPort": 65535, "SourceSecurityGroupId": { "Fn::GetAtt": [ "SourceSG", "GroupId" ] }, "GroupId": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] } } } }

YAML

SourceSG: Type: AWS::EC2::SecurityGroup Properties: VpcId: vpc-1a2b3c4d GroupDescription: Sample source security group TargetSG: Type: AWS::EC2::SecurityGroup Properties: VpcId: vpc-1a2b3c4d GroupDescription: Sample target security group OutboundRule: Type: AWS::EC2::SecurityGroupEgress Properties: IpProtocol: tcp FromPort: 0 ToPort: 65535 DestinationSecurityGroupId: Fn::GetAtt: - TargetSG - GroupId GroupId: Fn::GetAtt: - SourceSG - GroupId InboundRule: Type: AWS::EC2::SecurityGroupIngress Properties: IpProtocol: tcp FromPort: 0 ToPort: 65535 SourceSecurityGroupId: Fn::GetAtt: - SourceSG - GroupId GroupId: Fn::GetAtt: - TargetSG - GroupId

Ping リクエストの許可

ping リクエストを許可するには、ICMP プロトコルタイプを追加し、ICMP タイプに 8 (エコー要求) を、ICMP コードに 0 または -1 (すべて) を指定します。

JSON

"SGPing" : { "Type" : "AWS::EC2::SecurityGroup", "DependsOn": "VPC", "Properties" : { "GroupDescription" : "SG to test ping", "VpcId" : {"Ref" : "VPC"}, "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : 22, "ToPort" : 22, "CidrIp" : "10.0.0.0/24" }, { "IpProtocol" : "icmp", "FromPort" : 8, "ToPort" : -1, "CidrIp" : "10.0.0.0/24" } ] } }

YAML

SGPing: Type: AWS::EC2::SecurityGroup DependsOn: VPC Properties: GroupDescription: SG to test ping VpcId: Ref: VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 10.0.0.0/24 - IpProtocol: icmp FromPort: 8 ToPort: -1 CidrIp: 10.0.0.0/24