AWS Command Line Interface
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建、配置和删除 Amazon EC2 的安全组

您可以为您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例创建安全组,安全组本质上用作一个防火墙,具有可确定哪些网络流量可以进入和离开的规则。您可以创建要在 virtual private cloud (VPC) 或 EC2-Classic 共享扁平化网络中使用的安全组。有关 EC2-Classic 和 EC2-VPC 之间差异的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的支持的平台

您可以使用 AWS Command Line Interface (AWS CLI) 创建一个安全组,向现有安全组添加规则,以及删除安全组。

注意

下面所示的示例假定您已配置了默认凭证

正在创建安全组

您可以创建与 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 命令。您不能仅通过其 vpc-id 而非其名称引用 EC2-VPC 安全组。

$ 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 实例,您通常会添加规则以允许 TCP 端口 3389 (RDP) 上的入站流量,从而支持远程桌面协议 (RDP)。如果您要启动 Linux 实例,则通常会添加规则以允许 TCP 端口 22 上的入站流量,从而支持 SSH 连接。

使用 authorize-security-group-ingress 命令向安全组添加规则。此命令的必需参数是您计算机的公有 IP 地址,或您的计算机连接到的网络(以地址范围形式)(采用 CIDR 表示法)。

EC2-VPC

以下示例说明如何将适用于 RDP 的规则(TCP 端口 3389)添加到 ID 为 sg-903004f8 的 EC2-VPC 安全组。此示例假定客户端计算机在 CIDR 范围 203.0.113.0/24 中的某个位置有一个地址。

您可以首先确认您的公有地址显示为包含在 CIDR 范围 203.0.113.0/24 中。

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

确认该信息后, 您可以通过运行 authorize-security-group-ingress 命令将此范围添加到您的安全组。

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr 203.0.113.0/24

以下命令添加另一个规则以对同一安全组中的实例启用 SSH。

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22 --cidr 203.0.113.0/24

要查看对安全组所做的更改,请运行 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": "203.0.113.0/24" } ] "UserIdGroupPairs": [], "FromPort": 22 } ], "GroupName": "my-sg", "OwnerId": "123456789012", "GroupId": "sg-903004f8" } ] }

EC2-Classic

以下命令将适用于 RDP 的规则添加到名为 my-sg 的 EC2-Classic 安全组。

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 3389 --cidr 203.0.113.0/24

以下命令将适用于 SSH 的另一条规则添加到同一个安全组。

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 22 --cidr 203.0.113.0/24

要查看对安全组所做的更改,请运行 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": "203.0.113.0/24" } ] "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