本文描述了如何对Workspaces的外部网络访问行为进行限制,例如用户希望关闭单个桌面的互联网访问,而不影响其他桌面访问互联网的场景。
一、背景
Workspaces的网络管控能力分两种场景:
1、使用默认的VPC运行Workspaces。
此时可以在AWS Managed AD托管的域控制器的设置中找到名为Allow Internet
的选项。开启这个选项,Workspaces将可以访问互联网的资源。关闭这个选项,则Workspaces没有访问互联网的资源。
注意:
- 本选项只针对使用默认VPC时候,Workspaces都为于Public Subnet有效;
- 此选项对本域控制器下所有Workspaces有效,不能独立控制。
2、使用自定义的Private Subnet运行Workspaces。
此时需要注意:
- 在AWS Managed AD托管的域控制器的设置中名为
Allow Internet
的选项无效; - 无论是否打开这个选项,Workspaces都是通过本VPC的NAT Gateway对互联网访问。
因此,为了限制外网,可以修改NAT Gateway所在子网的NACL实现限制Workspaces的外网访问。
3、扩展更细致化的管控
如果需要更多管控场景,例如按照域名进行策略管控、按照源地址、目标地址进行更细致管控,则建议使用Network Firewall或者Gateway Load Balancer搭配第三方NGFW AMI进行管控。
本文仅描述上述三个场景的场景二。
二、创建含有Private Subnet和NAT Gateway的VPC
在创建Workspaces之前,需要先规划好网络,创建VPC并确保VPC是包含Public Subnet、Private Subnet和NAT Gateway。这个步骤在新版的创建VPC界面已经被高度简化,跟随向导提示即可完成创建。如下截图。
按照以上步骤,即可自动创建出一个新的VPC,并满足以下特点:
- 包含Public Subnet和Private Subnet
- Public Subnet内有NAT Gateway,且绑定EIP
- Public Subnet的路由表默认下一跳
0.0.0.0/0
被指向Internet Gateway - Private Subnet内有Workspaces
- Private Subnet的路由表默认下一跳
0.0.0.0/0
被指向NAT Gateway
在以上网络环境下,创建Workspaces时候选择所处位置在Private Subnet,即可满足本文后续管控条件。
三、修改Network ACL
1、查看要限制的Workspaces的内网IP
登录到Workspaces,查询本机的VPC内网IP。Windows系统可运行ipconfig
,Linux系统可运行ifconfig
查看VPC内网IP。如下截图。
由此可看到,IP地址172.31.101.217
就是本机的VPC内网IP。
2、修改NACL
进入VPC服务,找到左侧的Network ACL
菜单,找到NAT Gateway所在的Public Subnet对应的Network ACL,点击编辑按钮。如下截图。
新插入一行,在Rule number
的位置输入数字90,数字要小于默认的规则100
,例如填写为90
,也可以不填写为整数,例如填写89
;在类型Type
的位置选择All traffic
表示所有流量;在来源Source
位置填写要管控的云桌面的VPC内网IP例如172.31.101.217/32
;最后在行为位置选择Deny
。最后点击保存修改。如下截图。
保存修改完毕后,可以看到Network ACL界面增加了新的一条规则。如下截图。
Network ACL配置完成。
3、验证访问
为了验证新的规则生效,此时可以在被限制的Workspaces上测试对外网的访问。经测试Ping和浏览器都无法打开外部网络。如下截图。
与此同时,本桌面对VPC内处于同位于Private Subnet子网的其他EC2还是有访问权限的,只是NAT所在子网限制了其路由。由此即可实现限制外网。
4、额外放行EFS服务(可选)
在以上基础上,如果当前桌面正在使用EFS文件服务,还需要在上文基础上再增加一条允许EFS服务。如下截图。
全文完。