在 亚马逊云科技 Snowball Edge 设备上使用和管理安全组

作者: Macey Neff | 202 3

这篇博客文章由混合边缘解决方案专业架构师贾里德·诺沃特尼和塔雷克·拉贾比撰写。

亚马逊云科技 Snow 系列 产品是专门构建 的设备,允许将 PB 级数据从本地位置移动到 亚马逊云科技 区域。Snow 设备还使客户能够在边缘站点使用 亚马逊弹性 区块存储 (Amazon EBS) 和 亚马逊简单存储服务 (Amazon S3) 运行 亚马逊弹 性计算云 (Amazon EC2 ) 实例。

安全组用于通过控制入口和出口流量来保护 EC2 实例。创建安全组并将其与实例关联后,客户可以添加入口和出口规则来控制数据流。就像区域中的默认 VPC 一样,Snow 设备上也有默认安全组。当实例启动且未指定其他安全组时,将应用默认安全组。该区域中的默认安全组允许来自分配给同一安全组的网络接口和实例的所有入站流量,并允许所有出站流量。在 Snowball Edge 上,默认安全组允许所有入站和出站流量。

在这篇文章中,我们将回顾在 Snowball Edge 设备上创建、管理和使用安全组所需的工具和命令。

需要记住的一些事情:

  1. 亚马逊云科技 Snowball Edge 仅限于 50 个安全组。
  2. 一个实例只有一个安全组,但每个组总共可以有 120 条规则。它由 60 条入站和 60 条出站规则组成。
  3. 安全组只能使用允许语句来允许网络流量。
  4. 不允许拒绝陈述。
  5. Snowball Edge 客户端 (亚马逊云科技 CLI) 中的某些命令不提供输出。
  6. 亚马逊云科技 CLI 命令可以使用名称或安全组 ID。

先决条件和工具

客户必须从其 亚马逊云科技 控制台 下单 Snowball Edge, 才能运行以下 亚马逊云科技 CLI 命令并配置安全组来保护其 EC2 实例。

亚马逊云科技 Snowball Edge 客户端是一个独立的终端应用程序,客户可以在其本地服务器和工作站上运行该应用程序,以管理和操作其 Snowball Edge 设备。它支持 Windows、Mac 和 Linux 系统。

亚马逊云科技 OpsHub 是一个图形用户界面,您可以使用它来管理您的 亚马逊云科技 Snowball 设备。此外,它是解锁 Snowball Edge 设备的最简单工具。它还可用于配置设备、启动实例、管理存储和提供监控。

客户可以从 亚马逊云科技 Snowball 资源中下载和安装 Snowball Edge 客户端和 亚马逊云科技 OpsHub。

入门

首先,当 Snow 设备到达客户站点时,客户必须解锁设备并启动 EC2 实例。这可以通过 亚马逊云科技 OpsHub 或 亚马逊云科技 S nowb all Edge 客户端 来完成。 亚马逊云科技 Snow 系列设备支持虚拟网络接口 (VNI) 和直接网络接口 (DNI),客户在决定哪 种接口最适合其用例 之前,应先 查看接口类型 。请注意,安全组仅支持 VNI,因此本文中就是这样使用的。 在继续操作之前,应先查看 解释如何使用这些接口的帖子

查看安全组信息

亚马逊云科技 Snowball Edge 解锁、配置并运行 EC2 实例后,我们可以更深入地研究使用安全组充当虚拟防火墙并控制传入和传出流量。

尽管 亚马逊云科技 OpsHub 工具为计算和存储操作提供了各种功能,但它只能用于查看与 Snowball Edge 设备中的实例关联的安全组的名称:

view the name of the security group associated to an instance in a Snowball Edge device

与安全组的所有其他交互都必须通过 亚马逊云科技 CLI 进行。

以下命令显示如何轻松读取描述协议、源和目标的输出。此特定命令将显示有关默认安全组的信息,该安全组允许在 Snowball Edge 上运行的 EC2 实例上的所有入站和出站流量。

在以下部分中,我们将通过示例和输出回顾最常见的命令。

查看(全部)现有安全组:

aws ec2 describe-security-groups --endpoint Http://MySnowIPAddress:8008 --profile SnowballEdge
{
    "SecurityGroups": [
        {
            "Description": "default security group",
            "GroupName": "default",
            "IpPermissions": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ]
                }
            ],
            "GroupId": "s.sg-8ec664a23666db719",
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ]
                }
            ]
        }
    ]
}

创建新的安全组:

aws ec2 create-security-group--group-name allow-ssh--description “只允许 ssh 入站”--endpoint Htp: //mysnowipAddrectende

输出返回一个 groupID:

{  "GroupId": "s.sg-8f25ee27cee870b4a" }

向安全组添加端口 22 入口:

aws ec2 authorize-security-group-group-ingress--group-ids.sg-8f25ee27cee870b4a--protocol tcp--port 22--cidr 10.100.10.0/24--endpoint Http: //mysnowipAddredge

{    "Return": true }

请注意,如果您使用的是默认安全组,则出站规则仍然是允许所有流量。

从安全组撤消端口 22 的入口规则

aws ec2 撤消安全组入口--group-ids.sg-8f25eee27cee870b4a--ip-permissions ipprotocol=TCP,fromport=22,iPranges= [{cidrip=10.100.10.0/24}]--endpoint Http: //mysnowipAddredge

{ "Return": true }

撤消默认出口规则:

aws ec2 撤销-security-group-egress--group-ids.sg-8f25ee27cee870b4a--ip-permissions ipProtocol=” -1",iPranges= [{cidrip=0.0.0.0/0}]--endpoint Http: //mysnowip地址:8008--profile SnowballeDge

{ "Return": true }

请注意,此规则将删除所有出站临时端口。

添加默认出站规则(上面已撤销):

aws ec2 authorize-security-group-egress--group-id s.sg-8f25ee27cee870b4a--ip-permissions ipProtocol=” -1",iPranges= [{cidrip=0.0.0.0/0}]--endpoint Http: //mysnowip地址:8008--profile Snowballedge

{  "Return": true }

更改实例的现有安全组:

aws ec2 修改实例属性--instance-id s.i-852971d05144e1d63--groups s.sg-8f25eee870b4a--endpoint Http: //mysnowipAddredge

请注意,此命令不产生任何输出。我们可以验证它是否与 “aws ec2 描述实例” 命令配合使用。参见以下示例(命令输出已简化):

aws ec2 describe-instance-id s.i-852971d05144e1d63--endpoint Http: //mysnowipAdd:8008--profile SnowballeDge


    "Reservations": [{
            "Instances": [{
                    "InstanceId": "s.i-852971d05144e1d63",
                    "InstanceType": "sbe-c.2xlarge",
                    "LaunchTime": "2022-06-27T14:58:30.167000+00:00",
                    "PrivateIpAddress": "34.223.14.193",
                    "PublicIpAddress": "10.100.10.60",
                    "SecurityGroups": [
                        {
                            "GroupName": "allow-ssh",
                            "GroupId": "s.sg-8f25ee27cee870b4a"
                        }      ], }  ] }

将实例的安全组更改回默认值:

aws ec2 modify-instance-attribute --instance-ids.i-852971d05144e1d63 --groups s.sg-8ec664a23666db719 --endpoint Http://MySnowIPAddress:8008 --profile SnowballEdge

请注意,此命令不产生任何输出。你可以验证它是否与 “aws ec2 describe-instances” 命令一起使用。参见以下示例:

aws ec2 describe-instance-ids.i-852971d05144e1d63 — 终端节点 Https: //mysnowipAddrectende 8008 — profile Snowballedg

{
    "Reservations": [
        {  "Instances": [ {
                    "AmiLaunchIndex": 0,
                    "ImageId": "s.ami-8b0223704ca8f08b2",
                    "InstanceId": "s.i-852971d05144e1d63",
                    "InstanceType": "sbe-c.2xlarge",
                    "LaunchTime": "2022-06-27T14:58:30.167000+00:00",
                    "PrivateIpAddress": "34.223.14.193",
                    "PublicIpAddress": "10.100.10.60",
                             "SecurityGroups": [
                        {
                            "GroupName": "default",
                            "GroupId": "s.sg-8ec664a23666db719" ] }

删除安全组:

aws ec2 delete-security-group--group-ids.sg-8f25ee27cee870b4a--endpoint Http: //mysnowipAddredge

添加 SSH 安全组的示例演练

例如,假设一个 EC2 实例 “A” 在 Snowball Edge 设备上运行。默认情况下,允许所有流量流向 EC2 实例 “A”。如下图所示,我们希望加强安全性,只允许管理 PC 通过 SSH 连接到实例。

1。创建 SSH 安全组:

aws ec2 create-security-group--group-name myshGroup--描述 “ssh 访问”--endpoint Http: //mysnowipAddrectende 8008

2。这将返回 “groupID” 作为输出:

{   "GroupId": "s.sg-8a420242d86dbbb89" }

3。创建安全组后,我们必须允许端口 22 从管理 PC 的 IP 进入:

aws ec2 authorize-security-group-ingress--group-name myshGroup — 协议 tcp--port 22 — cidr 192.168.26.193/32--endpoint Http: //mysnowipAddredge

4。验证安全组是否已创建:

aws ec2 describe-security-group——组名 MysshGroup —端点 Http: //mysnowipAddrectende 8008--pro

{
	“SecurityGroups”:   [
		{
			“Description”: “SG for web servers”,
			“GroupName”: :MySshGroup”,
			“IpPermissinos”:  [
				{ “FromPort”: 22,
			 “IpProtocol”: “tcp”,
			 “IpRanges”: [
			{
				“CidrIp”: “192.168.26.193.32/32”
						} ],
					“ToPort”:  22 }],}

5。创建安全组后,我们必须将其与实例关联:

aws ec2 修改实例属性 —-instance-id s.i-8f7ab16867ffe23d4 —-groups s.sg-8a420242d86dbbb89--endpoint Http: //mysnowipAdd:8008--profile Snowballedge

6。或者,我们可以在不再需要安全组后将其删除:

aws ec2 delete-security-group--group-id s.sg-8a420242d86dbbb89--endpoint Http: //mysnowipAddredge

请注意,对于上述关联,实例 ID 是 “aws ec2 describe-instances” 命令的输出,而安全组 ID 是 “describe-security-groups” 命令(或控制台在上述步骤 2 中返回的 “groupID”)的输出。

结论

这篇文章介绍了使用 亚马逊云科技 Snowball Edge 设备创建和管理安全组的最常见命令。我们探讨了用于查看、创建和修改安全组的先决条件、工具和命令,以确保在 亚马逊云科技 Snowball Edge 上部署的 EC2 实例仅限授权用户使用。最后,我们简单介绍了如何限制通过单个 IP 地址通过 SSH 访问 EC2 实例。如果您想了解有关 Snowball Edge 产品的更多信息, 可以在 亚马逊云科技 Snow Famil y 网站上找到多种 资源


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。