こんにちは、インフラエンジニアの綿引です。

今回は AWS CloudFormation について記載したいと思います。

CloudFormation は今まで敬遠してきたのですが、実際に触ってみたら非常に有能でした。。
そこで手始めにセキュリティグループを作ってみたので共有したいと思います。

対象の方は以下のような方でしょうか。

 

  • CloudFormation 初心者の方
  • セキュリティグループを手動で作りたくない

 

テンプレートファイル作成

では早速テンプレートファイルを作成していきます。

今回は json ではなく、yaml で以下の2つのテンプレートを作成します。

 

  • SG-http-https-public.yaml : http と https を許可するセキュリティグループを作成
  • SG-base.yaml : 拠点 IP のみ許可するセキュリティグループを作成

 

http と https を許可セキュリティグループを作成

まずソースとしては以下になります。

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  WebSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "http,https public"
      GroupName: http-https-public  # セキュリティグループの名前 を記載
      SecurityGroupIngress:
            -
              IpProtocol: tcp
              FromPort : 80
              ToPort : 80
              CidrIp: 0.0.0.0/0
            -
              IpProtocol: tcp
              FromPort : 443
              ToPort : 443
              CidrIp: 0.0.0.0/0
      VpcId: vpc-XXXXXXXXXXX  # VPC ID を記載

Properties の各項目の説明は以下です。

項目 内容
GroupDescription セキュリティグループの説明
GroupName セキュリティグループの名前
SecurityGroupIngress インバウンドルールを宣言
IpProtocol IP プロトコル
FromPort ポート範囲の開始番号
FromPort ポート範囲の終了番号
CidrIp IPv4 範囲
VpcId VPC の ID

VpcId だけはお使いの環境によりますので、vpc-XXXXXXXXXXX を変更いただければと思います。

拠点 IP のみ許可するセキュリティグループを作成

次のソースはこれです。

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  WebSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "base ip list"
      GroupName: base  # セキュリティグループの名前 を記載
      SecurityGroupIngress:
            -
              IpProtocol: -1  # 全てのプロトコルを許可
              CidrIp: XXX.XXX.XXX.XXX/32  # 許可したい IP を記載
              Description: base1
            -
              IpProtocol: -1  # 全てのプロトコルを許可
              CidrIp: XXX.XXX.XXX.XXX/32  # 許可したい IP を記載
              Description: base2
      VpcId: vpc-XXXXXXXXXXX  # VPC ID を記載

基本的に1つ目のものと変わりませんが「IpProtocol」を「-1」にすることで全てのプロトコルを許可しています。

また「CidrIp」には許可したい IP に変更してください。サブネットも /24 や /29 など自由に変えられます。

他にも「Description」は「説明」になりますので、許可IP が何に該当するかを記載しておくとわかりやすいと思います。

あとは CloudFormation で実行するだけです。実行方法については他にもわかりやすい記事がたくさんあるので割愛したいと思います。

実際のソース

ソースは以下 GitHub に上げておきましたので宜しければお使いください。

GitHub : CloudFormation-Templates SecurityGroup

※ 随時更新しているため上記記載の内容とは若干異なる場合があります

最後に

今回は CloudFormation を使ってセキュリティグループを作成しました。

IP をいちいち登録する手間がなく非常に楽だったので、今後使っていきたいと思いました。

次は WAF のルールも作ってみます。

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る