自分の備忘と動確のために記事にしておきます。
Cloudformationを使用してAWSのSecurityGroupを作成します。
docs.aws.amazon.com
この記事で作成したCFnは以下に格納しています。
github.com
実施作業
準備
元となるCFnを作成します。
インバウンドだけを設定した場合、アウトバウントはどう設定されるのか見てみます。
AWSTemplateFormatVersion: "2010-09-09" Description: > Create SecurityGroup Resources: TestSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: test-sg-01 GroupName: test-sg-01 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 10.0.0.0/8 VpcId: vpc-0000000000000000
デプロイ実行
以下のコマンドを実行して、Cloudformationを実行します。
$ aws cloudformation package --template test_sg.yaml --s3-bucket test-tmp-20210301 --output-template-file test-sg-packaged.yaml $ aws cloudformation deploy --template-file test-sg-packaged.yaml --stack-name test-sg-stack
SecurityGroupが作成されています。
ルール確認
- インバウンドルール
CFnで設定したインバウンドルールが想定通りに設定されています。
- アウトバウントルール
CFnには何も設定していなかったので、デフォルト値が設定されていました。
ルール変更(インバウンドルール→アウトバウントルール)
ではCFnのインバウンドルールの指定をアウトバウントルールに変更するとどうなるでしょうか。
AWSTemplateFormatVersion: "2010-09-09" Description: > Create SecurityGroup Resources: TestSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: test-sg-01 GroupName: test-sg-01 SecurityGroupEgress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 10.0.0.0/8 VpcId: vpc-0000000000000000
ルール確認(インバウンドルール未設定時)
- インバウンドルール
CFnにインバウンドルールがされていない場合、作成されたSecurityGroupにはインバウンドルールが設定されません。
- アウトバウントルール
アウトバウントルールには想定したものが設定されています。
※
以下のドキュメントにはアウトバウントのルールにはデフォルトで作成されると言及がありますが、インバウンドルールについては記載がありませんでした。
docs.aws.amazon.com
VPCセキュリティグループを指定すると、Amazon EC2は、すべてのポートとIPプロトコルで任意の場所への出力トラフィックを許可するデフォルトの出力ルールを作成します。デフォルトのルールは、1つ以上の出力ルールを指定した場合にのみ削除されます。デフォルトのルールを削除し、出力トラフィックをローカルホスト(127.0.0.1 / 32)のみに制限する場合は、次の例を使用します。
感想及び所感
設定しないときに何がデフォルトで設定されるのかを確認したかったので試してみました。
インバウンドルールは未設定だと作成されないので設定忘れしないように注意が必要です。