Amazon EC2 のセキュリティグループの作成、設定、および削除
このトピックでは、EC2-Classic の使用方法の例をいくつか紹介します。AWS は、2022 年 8 月 15 日に、EC2-Classic の提供を終了します。EC2-Classic をまだお使いの方は、VPC への移行をお勧めします。詳細については、「Amazon EC2 ユーザーガイド」の「EC2-Classic から VPC へ移行」およびブログ記事「EC2-Classic ネットワーキングがリタイア — 準備方法」
本質的にファイアウォールとして動作する Amazon Elastic Compute Cloud (Amazon EC2) インスタンス用のセキュリティグループを作成し、入退出が可能なネットワークトラフィックを決めるルールと共に作成することができます。
仮想プライベートクラウド (VPC) または EC2-Classic 共有フラットネットワークで使用するセキュリティグループを作成することができます。EC2-Classic と EC2-VPC の違いの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「サポートされるプラットフォーム」を参照してください。
AWS Command Line Interface (AWS CLI) を使用して新しいセキュリティグループを作成し、既存のセキュリティグループにルールを追加して、セキュリティグループを削除します。
その他のコマンドの例については、AWS CLI リファレンスガイド
前提条件
ec2
コマンドを実行するには、次のことが必要です。
-
AWS CLI をインストールして設定します。詳細については、AWS CLI の最新バージョンをインストールまたは更新します。 および 設定の基本 を参照してください。
-
Amazon EC2 アクセスできるように IAM アクセス許可を設定します。Amazon EC2 に対する IAM アクセス許可の詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドの 「Amazon EC2 の IAM ポリシー」を参照してください。
セキュリティグループの作成
VPC または EC2-Classic に関連付けられたセキュリティグループを作成することができます。
EC2-VPC
次の aws ec2 create-security-group
の例は、指定された VPC のセキュリティグループを作成する方法を示しています。
$
aws ec2 create-security-group --group-name
my-sg
--description "My security group
" --vpc-idvpc-1a2b3c4d
{ "GroupId": "sg-903004f8" }
セキュリティグループの初期情報を表示するには、aws ec2 describe-security-groups
コマンドを実行します。EC2-VPC セキュリティグループは、名前ではなく vpc-id
によってのみ参照することができます。
$
aws ec2 describe-security-groups --group-ids
sg-903004f8
{ "SecurityGroups": [ { "IpPermissionsEgress": [ { "IpProtocol": "-1", "IpRanges": [ { "CidrIp": "0.0.0.0/0" } ], "UserIdGroupPairs": [] } ], "Description": "My security group" "IpPermissions": [], "GroupName": "my-sg", "VpcId": "vpc-1a2b3c4d", "OwnerId": "123456789012", "GroupId": "sg-903004f8" } ] }
EC2-Classic
次の aws ec2 create-security-group
の例は、EC2-Classic のセキュリティグループを作成する方法を示しています。
$
aws ec2 create-security-group --group-name
my-sg
--description "My security group
"{ "GroupId": "sg-903004f8" }
my-sg
の初期情報を表示するには、aws ec2 describe-security-groups
コマンドを実行します。EC2-Classic セキュリティグループは名前で参照することができます。
$
aws ec2 describe-security-groups --group-names
my-sg
{ "SecurityGroups": [ { "IpPermissionsEgress": [], "Description": "My security group" "IpPermissions": [], "GroupName": "my-sg", "OwnerId": "123456789012", "GroupId": "sg-903004f8" } ] }
ルールをセキュリティグループに追加する
Amazon EC2 インスタンスを実行するときには、セキュリティグループのルールを有効にして、イメージに接続する手段としての着信ネットワークトラフィックを有効にする必要があります。
例えば、Windows インスタンスを起動する場合、Remote Desktop Protocol (RDP) をサポートするには、一般に TCP ポート 3389 へのインバウンドトラフィックを許可するルールを追加します。Linux インスタンスを起動する場合、SSH 接続をサポートするには、一般に TCP ポート 22 へのインバウンドトラフィックを許可するルールを追加します。
セキュリティグループにルールを追加するには、aws ec2 authorize-security-group-ingress
コマンドを使用します。このコマンドの必須パラメータは、コンピュータのパブリック IP アドレス、またはコンピュータが接続しているネットワーク (アドレス範囲の形式で) の CIDR
当社では、以下のサービス https://checkip.amazonaws.com/
EC2-VPC
次の例は、IP アドレスを使用して ID sg-903004f8
を持つ EC2-VPC セキュリティグループに RDP (TCP ポート 3389) のルールを追加する方法を示しています。
まず、あなたの IP アドレスを探してください。
$
curl https://checkip.amazonaws.com
x.x.x.x
その後、aws ec2
authorize-security-group-ingress
コマンドを実行して、セキュリティグループに IP アドレスを追加できます。
$
aws ec2 authorize-security-group-ingress --group-id
sg-903004f8
--protocol tcp --port 3389 --cidrx.x.x.x
次のコマンドは、同じセキュリティグループのインスタンスに SSH を有効にする別のルールを追加します。
$
aws ec2 authorize-security-group-ingress --group-id
sg-903004f8
--protocol tcp --port 22 --cidrx.x.x.x
セキュリティグループに加えられた変更を表示するには、aws ec2 describe-security-groups
コマンドを実行します。
$
aws ec2 describe-security-groups --group-ids
sg-903004f8
{ "SecurityGroups": [ { "IpPermissionsEgress": [ { "IpProtocol": "-1", "IpRanges": [ { "CidrIp": "0.0.0.0/0" } ], "UserIdGroupPairs": [] } ], "Description": "My security group" "IpPermissions": [ { "ToPort": 22, "IpProtocol": "tcp", "IpRanges": [ { "CidrIp": "
x.x.x.x
" } ] "UserIdGroupPairs": [], "FromPort": 22 } ], "GroupName": "my-sg", "OwnerId": "123456789012", "GroupId": "sg-903004f8" } ] }
EC2-Classic
次の aws ec2
authorize-security-group-ingress
コマンドは、
という名前の EC2-Classic セキュリティグループに RDP のルールを追加します。my-sg
$
aws ec2 authorize-security-group-ingress --group-name
my-sg
--protocol tcp --port 3389 --cidrx.x.x.x
次のコマンドは、同じセキュリティグループに SSH の別のルールを追加します。
$
aws ec2 authorize-security-group-ingress --group-name
my-sg
--protocol tcp --port 22 --cidrx.x.x.x
セキュリティグループに加えられた変更を表示するには、aws ec2 describe-security-groups
コマンドを実行します。
$
aws ec2 describe-security-groups --group-names
my-sg
{ "SecurityGroups": [ { "IpPermissionsEgress": [], "Description": "My security group" "IpPermissions": [ { "ToPort": 22, "IpProtocol": "tcp", "IpRanges": [ { "CidrIp": "
x.x.x.x
" } ] "UserIdGroupPairs": [], "FromPort": 22 } ], "GroupName": "my-sg", "OwnerId": "123456789012", "GroupId": "sg-903004f8" } ] }
セキュリティグループを削除する
セキュリティグループを削除するには、aws
ec2 delete-security-group
コマンドを実行します。
環境に現在アタッチされているセキュリティグループは削除できません。
EC2-VPC
次のコマンド例は、EC2-VPC セキュリティグループを削除します。
$
aws ec2 delete-security-group --group-id
sg-903004f8
EC2-Classic
次のコマンド例は、my-sg
という名前の EC2-Classic セキュリティグループを削除します。
$
aws ec2 delete-security-group --group-name
my-sg
参照
AWS CLI リファレンス:
その他のリファレンス:
-
AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、GitHub の AWS コード例のリポジトリ
を参照してください。