AWSセキュリティグループにコマンドでIPアドレスを追加する方法
AWSのEC2インスタンスに関連するセキュリティグループにIPアドレスを追加する作業は、ネットワークセキュリティを管理する上で非常に重要です。この作業を手動で行うのは大変な場合があるため、AWS CLI(コマンドラインインターフェイス)を使って効率よく実行する方法をご紹介します。また、EC2インスタンスにセキュリティグループ編集用のIAMロールを付与する方法も合わせて解説します。
目次
セキュリティグループにIPアドレスを追加する
AWS EC2インスタンスのセキュリティグループに、特定のIPアドレスを追加するためには、AWS CLIを使ってコマンドを実行することができます。ここでは、シェルスクリプト(Shell Script)を使用して、複数のIPアドレスを一度に追加する方法を説明します。
ステップ1: AWS CLIのインストールと設定
AWS CLIがインストールされていない場合、まずインストールしましょう。インストール方法はこちらを参照してください。
AWS CLIがインストールされたら、以下のコマンドで設定を行います。
aws configure
ここで、アクセスキー、シークレットキー、リージョン、出力形式を設定します。
ステップ2: IPアドレスのリストを用意
次に、セキュリティグループに追加するIPアドレス(CIDR形式)のリストを準備します。例えば、次のようなIPアドレスのリストです。
IP_LIST=("10.0.0.0/8" "192.168.0.0/24")
ステップ3: シェルスクリプトを作成
次に、このIPリストを使用して、各IPアドレスをセキュリティグループに追加するシェルスクリプトを作成します。
#!/bin/bash
# セキュリティグループID、リージョン、ポート番号を設定
SECURITY_GROUP_ID="<セキュリティグループID>"
PORT="<ポート番号>"
REGION="<リージョン>"
# IPアドレスリスト(CIDR形式)
IP_LIST=("10.0.0.0/8" "192.168.0.0/24")
# IPリストをセキュリティグループに追加
for IP in "${IP_LIST[@]}"; do
aws ec2 authorize-security-group-ingress --region "$REGION" --group-id "$SECURITY_GROUP_ID" --protocol tcp --port "$PORT" --cidr "$IP"
echo "Added $IP to Security Group $SECURITY_GROUP_ID on port $PORT"
done
このスクリプトは、SECURITY_GROUP_ID
に指定したセキュリティグループに、リストに含まれるIPアドレスを順番に追加します。ポート番号やリージョンも必要に応じて設定します。
PowerShellの場合は
# セキュリティグループID、リージョン、ポート番号を設定
$securityGroupId = "<セキュリティグループID>"
$port = "<ポート番号>"
$region = "<リージョン>"
# IPアドレスリスト(CIDR形式)
$ipList = @("10.0.0.0/8" "192.168.0.0/24")
# IPリストをセキュリティグループに追加
foreach ($ip in $ipList) {
aws ec2 authorize-security-group-ingress --region $region --group-id $securityGroupId --protocol tcp --port $port --cidr $ip
Write-Host "Added $ip to Security Group $securityGroupId on port $port"
}
ステップ4: スクリプトを実行
スクリプトを実行するために、まずファイルに保存し、実行権限を与えます。
chmod +x add_ips_to_security_group.sh
./add_ips_to_security_group.sh
もしくはPowerShellだと
PowerShellを管理者として開き
.\add_ips_to_security_group.ps1
これで、指定したIPアドレスがセキュリティグループに追加されます。
aws configureを実行せずにEC2インスタンスにIAMロールをアタッチしてaws ec2コマンドを実行させる方法
EC2インスタンスがセキュリティグループの変更を行えるようにするためには、適切なIAMロールをインスタンスにアタッチする必要があります。以下の手順で、EC2インスタンスにセキュリティグループを編集できるIAMロールを付与する方法を解説します。
ステップ1: IAMポリシーを作成
まず、EC2インスタンスがセキュリティグループを変更するための権限を持つポリシーを作成します。ポリシーを作成する際に、セキュリティグループの追加、削除などを行うためのアクションを許可します。
以下は、セキュリティグループに関連するポリシーの例です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeSecurityGroups",
"ec2:ModifySecurityGroups",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress"
],
"Resource": "*"
}
]
}
このポリシーでは、セキュリティグループの情報を取得したり、ルールを変更したりすることができます。
ステップ2: IAMロールを作成
次に、このポリシーを使用してIAMロールを作成します。
- IAMコンソールにログインし、「ロール」を選択します。
- 「ロールの作成」を選択し、「EC2」を選びます。
- 作成したポリシーを選択し、ロールに名前を付けて作成します。
ステップ3: ロールをEC2インスタンスにアタッチ
作成したIAMロールをEC2インスタンスにアタッチすることで、そのインスタンスがセキュリティグループを変更できるようになります。
- EC2ダッシュボードに移動し、対象のインスタンスを選択します。
- 「Actions」 → 「Security」 → 「Modify IAM Role」を選択します。
- 作成したIAMロールを選択して、インスタンスにアタッチします。
これで、インスタンスにセキュリティグループを変更する権限が付与されました。
まとめ
AWSのEC2インスタンスに関連するセキュリティグループにIPアドレスを追加する作業は、AWS CLIとシェルスクリプトを使うことで効率よく行えます。また、EC2インスタンスがセキュリティグループを変更するためには、適切なIAMロールをアタッチする必要があります。これらの手順を実行することで、より効率的で安全なネットワーク管理が実現できます。