Amazon EC2 のセキュリティグループの作成、設定、および削除 - AWS コマンドラインインターフェイス

Python 2.7、3.4、3.5 は AWS CLI バージョン 1 では非推奨です。詳細については、 「AWS CLI バージョンについて」 の「AWS CLI バージョン 1」セクションを参照してください。

Amazon EC2 のセキュリティグループの作成、設定、および削除

本質的にファイアウォールとして動作する Amazon Elastic Compute Cloud (Amazon EC2) インスタンス用のセキュリティグループを作成し、入退出が可能なネットワークトラフィックを決めるルールと共に作成することができます。

仮想プライベートクラウド (VPC) または EC2-Classic 共有フラットネットワークで使用するセキュリティグループを作成することができます。EC2-Classic と EC2-VPC の違いの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「サポートされるプラットフォーム」を参照してください。

AWS コマンドラインインターフェイス (AWS CLI) を使用して、セキュリティグループを作成し、既存のセキュリティグループへのルールの追加、セキュリティグループの削除を行います。

前提条件

ec2 コマンドを実行するには、次のことが必要です。

セキュリティグループの作成

VPC または EC2-Classic に関連付けられたセキュリティグループを作成することができます。

EC2-VPC

次の例は、指定された VPC のセキュリティグループを作成する方法を示しています。

$ aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-id vpc-1a2b3c4d { "GroupId": "sg-903004f8" }

セキュリティグループの初期情報を表示するには、「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

次の例は、EC2-Classic のセキュリティグループを作成する方法を示しています。

$ aws ec2 create-security-group --group-name my-sg --description "My security group" { "GroupId": "sg-903004f8" }

my-sg の初期情報を表示するには、「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 へのインバウンドトラフィックを許可するルールを追加します。

セキュリティグループにルールを追加するには、authorize-security-group-ingress コマンドを使用します。このコマンドの必須パラメータは、コンピュータのパブリック IP アドレス、またはコンピュータが接続しているネットワーク (アドレス範囲の形式で) の CIDR 表記です。

注記

当社では、以下のサービス https://checkip.amazonaws.com/ を提供し、お客様のパブリック IP アドレスを特定できます。IP アドレスの識別に役立つその他のサービスを見つけるには、ブラウザを使用して「what is my IP address」を検索します。ISP 経由、またはファイアウォールの内側から動的な IP アドレスを使用して接続している場合 (プライベートネットワークの NAT ゲートウェイ経由)、アドレスは定期的に変更される場合があります。その場合、クライアントコンピュータによって使用される IP アドレスの範囲を見つける必要があります。

EC2-VPC

次の例は、IP アドレスを使用して ID sg-903004f8 を持つ EC2-VPC セキュリティグループに RDP (TCP ポート 3389) のルールを追加する方法を示しています。

まず、あなたの IP アドレスを探してください。

$ curl https://checkip.amazonaws.com x.x.x.x

その後、authorize-security-group-ingress コマンドを実行して、セキュリティグループに IP アドレスを追加できます。

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr x.x.x.x

次のコマンドは、同じセキュリティグループのインスタンスに SSH を有効にする別のルールを追加します。

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22 --cidr x.x.x.x

セキュリティグループに加えられた変更を表示するには、「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

次のコマンドは、my-sg という名前の EC2-Classic セキュリティグループに RDP のルールを追加します。

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 3389 --cidr x.x.x.x

次のコマンドは、同じセキュリティグループに SSH の別のルールを追加します。

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 22 --cidr x.x.x.x

セキュリティグループに加えられた変更を表示するには、「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" } ] }

セキュリティグループを削除する

セキュリティグループを削除するには、「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