本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Windows PowerShell 创建安全组
您可以使用Amazon Tools for PowerShell来创建和配置安全组。创建安全组时,您可以指定将其用于 EC2-Classic 还是 EC2-VPC。该操作以安全组 ID 作为响应。
如果您需要连接到您的实例,就必须配置安全组以允许 SSH 流量 (Linux) 或 RDP 流量 (Windows)。
先决条件
您需要您的计算机的公有 IP 地址,该地址使用 CIDR 表示法。您可以通过一项服务来获取本地计算机的公有 IP 地址。例如,Amazon 提供以下服务:http://checkip.amazonaws.com/
警告
如果您指定 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}