0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[AWS] Security Group に IP アドレスを登録するためのスクリプト

Posted at

はじめに

サーバー(EC2 インスタンス)へのアクセス制御は Security Group(以下 SG)の IP アドレスで制御しています。

CICD で IP アドレスを登録しに行くスクリプトが必要になり用意しました。

仕様

指定された IP アドレスのリストを AWS の SG に登録するためのスクリプトです。IP アドレスにCIDR 表記("/" が含まれているかどうか)によって条件分岐し、それに応じて適切に SG に登録します。(デフォルトで /32 を追加します)

コマンド

上記仕様に加えて以下のオプションがあります。

  • SG を二つ用意
    • SG_ID1 にはポート 3389 で登録、SG_ID2 にはポート 443 で登録
  • DESCRIPTION も含め登録する
#!/bin/bash
set -euo pipefail

# SGにIP登録。/があろうとなかろうと場合分けで登録できる

# 変数格納
IP=("5.5.5.5/32" "6.6.6.6/32" "7.7.7.7" "8.8.8.8/32" "9.9.9.9")
DESCRIPTION=("go" "roku" "nana" "hati" "kyu")
SG_ID1="sg-XXXXXXXXXXXXXXXXX"
SG_ID2="sg-YYYYYYYYYYYYYYYYY"

for (( i=0; i < ${#IP[*]}; i++ )); do
    if [ `echo ${IP[$i]} | grep '/'` ]; then
        aws ec2 authorize-security-group-ingress \
        --group-id $SG_ID1 \
        --ip-permissions IpProtocol=tcp,FromPort=3389,ToPort=3389,IpRanges="[{CidrIp=${IP[$i]},Description="${DESCRIPTION[$i]}"}]"

        aws ec2 authorize-security-group-ingress \
        --group-id $SG_ID2 \
        --ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges="[{CidrIp=${IP[$i]},Description="${DESCRIPTION[$i]}"}]"

    else
        aws ec2 authorize-security-group-ingress \
        --group-id $SG_ID1 \
        --ip-permissions IpProtocol=tcp,FromPort=3389,ToPort=3389,IpRanges="[{CidrIp=${IP[$i]}/32,Description="${DESCRIPTION[$i]}"}]"

        aws ec2 authorize-security-group-ingress \
        --group-id $SG_ID2 \
        --ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges="[{CidrIp=${IP[$i]}/32,Description="${DESCRIPTION[$i]}"}]"
    fi
done
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0