【AWS】CLIでセキュリティグループを操作する方法を徹底解説!ルール追加・削除の手順を初心者向けに解説
生徒
「AWSのセキュリティグループって、CLIから操作できるんですか?マネジメントコンソール以外でも設定できますか?」
先生
「はい、AWS CLIを使えば、セキュリティグループのインバウンドルールやアウトバウンドルールをコマンドで追加や削除できます。」
生徒
「サーバー構築を自動化したいので、コマンド操作を覚えたいです。具体的な手順を知りたいです。」
先生
「では、AWS CLIでセキュリティグループを操作する方法を、基礎から順番に解説していきましょう。」
1. AWS CLIでセキュリティグループを操作するとは
AWSのセキュリティグループは、EC2インスタンスなどのリソースに対する通信制御を行う重要なセキュリティ機能です。インバウンドルールとアウトバウンドルールを設定することで、どのIPアドレスからどのポートへのアクセスを許可するかを細かく制御できます。
AWS CLIを利用すると、コマンドラインからセキュリティグループの設定変更が可能になります。インフラ自動化、Infrastructure as Code、CI/CDパイプラインとの連携など、実務でも頻繁に使われる操作です。特にLinux環境でのサーバー構築やクラウド運用では、AWS CLIによる操作は必須スキルといえます。
2. 事前準備 AWS CLIのインストールと設定
まずはAWS CLIがインストールされていることを確認します。Linux環境やMac、Windowsでも利用できます。インストール後はaws configureコマンドでアクセスキーやリージョンを設定します。
aws --version
aws-cli/2.15.0 Python/3.11 Linux/5.15 botocore/2.4.0
設定を行う場合は以下のコマンドを実行します。
aws configure
AWS Access Key ID [None]: AKIAxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
リージョンは東京リージョンの場合ap-northeast-1を指定します。これでAWS CLIからEC2やセキュリティグループの操作が可能になります。
3. セキュリティグループ一覧を確認する方法
現在存在しているセキュリティグループを確認するにはdescribe-security-groupsコマンドを使用します。セキュリティグループIDを確認することが、ルール追加や削除の第一歩です。
aws ec2 describe-security-groups --query "SecurityGroups[*].{ID:GroupId,Name:GroupName}"
[
{
"ID": "sg-0123456789abcdef0",
"Name": "web-sg"
}
]
この出力結果から、操作対象となるセキュリティグループIDをメモしておきます。AWS CLIでのセキュリティグループ操作では、GroupIdが必須パラメータになります。
4. インバウンドルールを追加する方法
インバウンドルールとは、外部からEC2インスタンスへの通信を許可する設定です。例えばHTTPの80番ポートを全世界から許可する場合、authorize-security-group-ingressコマンドを使用します。
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
このコマンドでは、TCPプロトコルの80番ポートを0.0.0.0/0、つまり全てのIPアドレスから許可しています。Webサーバー公開時によく使われる設定です。ただし、本番環境では必要最小限のアクセス制限を心がけることが重要です。
5. インバウンドルールを削除する方法
誤って追加したルールや不要になったポートは、revoke-security-group-ingressコマンドで削除できます。追加時と同じパラメータを指定する点に注意してください。
aws ec2 revoke-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
これにより、80番ポートのインバウンド通信がブロックされます。セキュリティ事故を防ぐためにも、不要なポートは定期的に見直すことが大切です。
6. アウトバウンドルールの追加と削除
アウトバウンドルールは、EC2インスタンスから外部への通信を制御します。追加にはauthorize-security-group-egress、削除にはrevoke-security-group-egressを使用します。
aws ec2 authorize-security-group-egress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
上記はHTTPS通信を許可する設定です。API通信や外部サービス接続で利用されます。削除する場合は以下のように実行します。
aws ec2 revoke-security-group-egress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
7. JSON形式で複数ルールを一括設定する方法
AWS CLIではJSON形式で複数のセキュリティグループルールをまとめて設定することも可能です。運用現場ではスクリプト化して再利用するケースが多くあります。
[
{
"IpProtocol": "tcp",
"FromPort": 22,
"ToPort": 22,
"IpRanges": [{"CidrIp": "203.0.113.0/24"}]
},
{
"IpProtocol": "tcp",
"FromPort": 443,
"ToPort": 443,
"IpRanges": [{"CidrIp": "0.0.0.0/0"}]
}
]
このJSONファイルを指定して実行します。
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--ip-permissions file://rules.json
これにより、SSHとHTTPSのルールを同時に追加できます。構成管理や自動化を行う際に非常に便利な方法です。
8. AWS CLIでセキュリティグループを安全に運用するポイント
AWS CLIでセキュリティグループを操作する際は、変更前にdescribe-security-groupsで現在の設定を確認することが重要です。また、変更履歴を残すためにスクリプトをGit管理する方法も推奨されます。
クラウドセキュリティ対策として、不要なポート開放を避け、最小権限の原則を守ることが基本です。AWS CLIを活用することで、再現性の高いインフラ構築が可能になり、DevOpsや自動化環境にも対応できます。
セキュリティグループ操作はAWS運用の基礎であり、EC2構築やVPC設計の理解にもつながります。CLI操作を習得することで、より実践的なクラウドエンジニアへの第一歩となります。
まとめ
本記事では、AWS CLIを使ってセキュリティグループを操作する方法について、基礎から応用まで体系的に解説しました。セキュリティグループはEC2インスタンスをはじめとするAWSリソースの通信制御を担う重要な機能であり、インバウンドルールとアウトバウンドルールを正しく理解することが、クラウドセキュリティ対策の第一歩となります。
まず、aws configureによる初期設定を行い、aws ec2 describe-security-groupsコマンドでセキュリティグループ一覧を確認しました。GroupIdを把握することが、ルール追加や削除を正確に行うための基本です。AWS CLIでは、authorize-security-group-ingressやrevoke-security-group-ingressを使ってインバウンドルールを操作し、authorize-security-group-egressやrevoke-security-group-egressでアウトバウンドルールを管理できます。
また、JSON形式を利用した複数ルールの一括設定も紹介しました。運用現場では、Infrastructure as Codeや自動化スクリプトと組み合わせて、再現性の高いインフラ構築を行うことが求められます。AWS CLIによるセキュリティグループ管理は、Linux環境でのサーバー構築、自動化、CI CDパイプラインとの連携においても欠かせないスキルです。
セキュリティグループの設定では、必要最小限のポートのみを開放する最小権限の原則が重要です。例えば、HTTPやHTTPS、SSHなど用途に応じたポートのみを許可し、不要な通信経路を閉じることで、クラウド環境の安全性を高めることができます。変更前後には必ず設定内容を確認し、誤設定によるセキュリティ事故を防ぐ習慣を身につけましょう。
ここで、代表的な操作をあらためて整理します。まずは現在の設定確認です。
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0
{
"SecurityGroups": [
{
"GroupId": "sg-0123456789abcdef0",
"GroupName": "web-sg"
}
]
}
次に、特定のIPアドレスからのSSH接続のみを許可する例です。管理用サーバーからの接続に限定することで、安全性を高めます。
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.10/32
不要になった場合は、同じ条件を指定して削除します。
aws ec2 revoke-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.10/32
このように、AWS CLIを活用することで、セキュリティグループの追加、削除、確認をすべてコマンドラインで完結できます。マネジメントコンソール操作だけでなく、CLIによる操作を習得することで、クラウド運用の効率と正確性は大きく向上します。EC2構築、VPC設計、ネットワーク設計、クラウドセキュリティ運用の基礎として、繰り返しコマンドを実行しながら理解を深めていきましょう。
生徒
セキュリティグループはEC2の通信を制御する仕組みで、インバウンドルールとアウトバウンドルールをAWS CLIから追加や削除できることが分かりました。GroupIdを確認することが最初のステップなのですね。
先生
その通りです。aws ec2 describe-security-groupsで現在の設定を確認し、authorizeやrevokeコマンドで必要な変更を行います。クラウド環境では、設定の確認と変更を正確に行うことがとても大切です。
生徒
JSON形式で複数ルールを一括設定できる点も便利だと感じました。自動化やスクリプト管理に向いていますね。
先生
はい。Infrastructure as Codeの考え方に沿って、設定をファイルで管理すれば、再現性の高いインフラ構築が可能になります。Linux環境でのAWS CLI操作は、クラウドエンジニアにとって重要な基礎スキルです。
生徒
最小権限の原則を意識して、不要なポートは開放しないことが大切なのですね。定期的にセキュリティグループを見直す習慣をつけたいです。
先生
その姿勢が大切です。AWS CLIでのセキュリティグループ管理を繰り返し練習し、EC2構築やVPC設計とあわせて理解を深めていけば、実務でも通用するクラウド運用スキルが身につきます。