使用 Windows PowerShell 创建安全组 - Amazon Tools for PowerShell
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Windows PowerShell 创建安全组

您可以使用Amazon Tools for PowerShell来创建和配置安全组。创建安全组时,您可以指定将其用于 EC2-Classic 还是 EC2-VPC。该操作以安全组 ID 作为响应。

如果您需要连接到您的实例,就必须配置安全组以允许 SSH 流量 (Linux) 或 RDP 流量 (Windows)。

先决条件

您需要您的计算机的公有 IP 地址,该地址使用 CIDR 表示法。您可以通过一项服务来获取本地计算机的公有 IP 地址。例如,Amazon 提供以下服务:http://checkip.amazonaws.com/https://checkip.amazonaws.com/。要查找另一项可提供您的 IP 地址的服务,请使用搜索短语“what is my IP address”。如果您正通过 ISP 或从防火墙后面连接,没有静态 IP 地址,您需要找出客户端计算机可以使用的 IP 地址范围。

警告

如果您指定 0.0.0.0/0,则会启用来自世界上任何 IP 地址的流量。对于 SSH 和 RDP 协议,您可能考虑这在测试环境下短时间内是可以接受的,但它对于生产环境并不安全。对于生产环境,请确保仅授权从适当的单个 IP 地址或地址范围进行访问。

为 EC2-Classic 创建安全组

警告

我们将于 2022 年 8 月 15 日停用 EC2-Classic。我们建议您从 EC2-Classic 迁移到 VPC。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南适用于 Windows 实例的 Amazon EC2 用户指南中的从 EC2-Classic 迁移到 VPC。另请参阅 EC2-Classic Networking is Retiring – Here's How to Prepare 博客文章。

以下示例使用 New-EC2SecurityGroup cmdlet 为 EC2-Classic 创建安全组。

PS > New-EC2SecurityGroup -GroupName myPSSecurityGroup -GroupDescription "EC2-Classic from PowerShell" sg-0a346530123456789

要查看安全组的初始配置,请使用 Get-EC2SecurityGroup cmdlet。

PS > Get-EC2SecurityGroup -GroupNames myPSSecurityGroup Description : EC2-Classic from PowerShell GroupId : sg-0a346530123456789 GroupName : myPSSecurityGroup IpPermissions : {} IpPermissionsEgress : {Amazon.EC2.Model.IpPermission} OwnerId : 123456789012 Tags : {} VpcId : vpc-9668ddef

要配置安全组以允许 TCP 端口 22 (SSH) 和 TCP 端口 3389 上的传入流量,请使用 Grant-EC2SecurityGroupIngress cmdlet。例如,以下示例脚本显示如何可以从单个 IP 地址 203.0.113.25/32 启用 SSH 流量。

$cidrBlocks = New-Object 'collections.generic.list[string]' $cidrBlocks.add("203.0.113.25/32") $ipPermissions = New-Object Amazon.EC2.Model.IpPermission $ipPermissions.IpProtocol = "tcp" $ipPermissions.FromPort = 22 $ipPermissions.ToPort = 22 ipPermissions.IpRanges = $cidrBlocks Grant-EC2SecurityGroupIngress -GroupName myPSSecurityGroup -IpPermissions $ipPermissions

要验证已更新安全组,请再次运行 Get-EC2SecurityGroup cmdlet。请注意,您不能为 EC2-Classic 指定出站规则。

PS > Get-EC2SecurityGroup -GroupNames myPSSecurityGroup OwnerId : 123456789012 GroupName : myPSSecurityGroup GroupId : sg-0a346530123456789 Description : EC2-Classic from PowerShell IpPermissions : {Amazon.EC2.Model.IpPermission} IpPermissionsEgress : {} VpcId : Tags : {}

要查看安全组规则,请使用 IpPermissions 属性。

PS > (Get-EC2SecurityGroup -GroupNames myPSSecurityGroup).IpPermissions IpProtocol : tcp FromPort : 22 ToPort : 22 UserIdGroupPairs : {} IpRanges : {203.0.113.25/32}

为 EC2-VPC 创建安全组

以下 New-EC2SecurityGroup 示例将添加 -VpcId 参数为指定的 VPC 创建安全组。

PS > $groupid = New-EC2SecurityGroup ` -VpcId "vpc-da0013b3" ` -GroupName "myPSSecurityGroup" ` -GroupDescription "EC2-VPC from PowerShell"

要查看安全组的初始配置,请使用 Get-EC2SecurityGroup cmdlet。默认情况下,VPC 的安全组中包含允许所有出站流量的规则。请注意,您不能通过名称引用 EC2-VPC 的安全组。

PS > Get-EC2SecurityGroup -GroupId sg-5d293231 OwnerId : 123456789012 GroupName : myPSSecurityGroup GroupId : sg-5d293231 Description : EC2-VPC from PowerShell IpPermissions : {} IpPermissionsEgress : {Amazon.EC2.Model.IpPermission} VpcId : vpc-da0013b3 Tags : {}

要为 TCP 端口 22 (SSH) 和 TCP 端口 3389 上的入站流量定义权限,请使用 New-Object cmdlet。以下示例脚本为从来自单个 IP 地址 203.0.113.25/32 的 TCP 端口 22 和 3389 定义权限。

$ip1 = new-object Amazon.EC2.Model.IpPermission $ip1.IpProtocol = "tcp" $ip1.FromPort = 22 $ip1.ToPort = 22 $ip1.IpRanges.Add("203.0.113.25/32") $ip2 = new-object Amazon.EC2.Model.IpPermission $ip2.IpProtocol = "tcp" $ip2.FromPort = 3389 $ip2.ToPort = 3389 $ip2.IpRanges.Add("203.0.113.25/32") Grant-EC2SecurityGroupIngress -GroupId $groupid -IpPermissions @( $ip1, $ip2 )

要验证已更新安全组,请再次使用 Get-EC2SecurityGroup cmdlet。

PS > Get-EC2SecurityGroup -GroupIds sg-5d293231 OwnerId : 123456789012 GroupName : myPSSecurityGroup GroupId : sg-5d293231 Description : EC2-VPC from PowerShell IpPermissions : {Amazon.EC2.Model.IpPermission} IpPermissionsEgress : {Amazon.EC2.Model.IpPermission} VpcId : vpc-da0013b3 Tags : {}

要查看入站规则,您可以从上一个命令返回的集合对象中检索 IpPermissions 属性。

PS > (Get-EC2SecurityGroup -GroupIds sg-5d293231).IpPermissions IpProtocol : tcp FromPort : 22 ToPort : 22 UserIdGroupPairs : {} IpRanges : {203.0.113.25/32} IpProtocol : tcp FromPort : 3389 ToPort : 3389 UserIdGroupPairs : {} IpRanges : {203.0.113.25/32}