前缀列表,以及中国区使用的注意事项

前缀列表(Perfix List)终于在亚马逊云科技中国区域可用!

https://aws.amazon.com/about-aws/whats-new/2022/06/amazon-virtual-private-cloud-vpc-customer-managed-prefix-lists-additional-regions/

我们往前看,这个功能最开始是2020年6月29日在Global可用注1,在今年(2022年)2月,AWS又添加了由AWS管理的CloudFront Global前缀列表注2,以方便用户使用。一直到2022年6月30日,两年后,亚马逊云科技中国区域终于可以使用这个功能啦!

前缀列表是一组相同用途/属性IP的集合,可以用于安全组或者路由表,方便我们重用IP集合,或者简化配置。这种集合可以是多个办公室的出口IP集合,多个数据中心的IP集合等等。

前缀列表一个区域资源,目前分为两种,一种是由AWS管理的前缀列表,这些列表通常包含

1. 该区域的S3的IP范围;

2. 该区域的DyanmoDB的IP范围;

3. CloudFront Global的IP范围。

需要注意的是,由于前缀列表的区域资源属性,虽然CloudFront Global的IP范围在任何区域的前置列表内容都一致,但是其ARN却是不同的,这就意味着你不能跨区域使用前缀列表(会提示你所引用的其他区域的前缀列表不存在)。

第二种前缀列表是由客户管理的前缀列表,也是下文将示例的部分。

我们打开控制台,切换到VPC,可以看到左侧已经出现Managed Perfix Lists,点击后如下图

可以看到目前已经存在我们在上文中提到的三个由AWS管理的前缀列表,也需要注意的是这些前缀列表是北京区域的通用资源,由AWS所有,任何亚马逊云科技中国区域的账户下均存在这三个前缀列表。

这时我们点击Create prefix list,如下图(图中IP为示例IP)

这里展示了创建一个前缀列表的几个关键要素:

1. 名称

2. 最大条目,尤其是这个参数需要注意,前缀列表并不能帮你绕过安全组的规则配额限制,默认情况下,安全组允许最大60条规则,虽然你在一条规则中引用了前缀列表,但是该规则的实际计数并不是1,而是引用的前缀列表中指定的最大条目(也并非是实际数量),例如由AWS管理的CloudFront Global前缀列表,目前由44条规则构成,但是其最大条目为55条,即一个默认配额的安全组引用了CloudFront Global的前缀列表,用于自定义规则的剩余配额就只有5条了;另一个例子是如果这里你填了1000,而你又没有通过工单的方式调整安全组规则配额,则任何安全组都不能引用该前缀列表;

3. 前缀列表条目,这里可以添加最多不超过最大条目约定数量的IP地址。

创建后的前缀列表如下图所示

值得注意的是,Resize prefix list可以允许我们在创建后调整前缀列表的最大条目,调整不是立即生效的,它会检查调整后的前缀列表被安全组引用后,是否会超出安全组的规则配额,如果超过了调整将不会被应用。

最后我们展示一下前缀列表如何使用。

当我们在创建安全组规则时,来源或者目的就可以直接使用前缀列表,如上图。这里值得说明的是前缀列表只能用于安全组和路由表,不能用于NACL。

总结

前缀列表给了我们一个很方便的方式来管理组织常用的IP,它可以简化配置,减少错误配置的发生。但是在使用时仍有以下几个部分需要注意:

1. 前缀列表只是方便我们管理IP的集合,并不能绕过配额限制,前缀列表的最大条目数量会直接对应到安全组的规则数量;

2. 前缀列表只能用于安全组和路由表,不能用于NACL;

3. 前缀列表是区域性资源,不能跨区域引用(无论对于客户管理还是AWS管理的都一样)关于这个也有一个博客提供了解决方案,参见注3;

4. 前缀列表可以共享,这部分可以参考文档。

亚马逊云科技中国区域的前缀列表,同时还要注意:

1. 中国区域的由亚马逊云科技管理的CloudFront前缀列表,其IP集合仍为CloudFront Global,并不包含一些由CloudFront China所使用的IP,我们不能用其来构成使用CloudFront China的系统的安全组;

2. 鉴于1的问题,我也制作了以下两个命令,可以帮助你生成

a. CloudFront China的前缀列表

https://gist.github.com/cnluzhang/eb660a428d16e799c59f0fc531ae874e

b. CloudFront China & Global的前缀列表(需要注意此列表已经超过60条,请先联系支持团队提升你的安全组规则配额)

https://gist.github.com/cnluzhang/6f02b0ea2b833551cd038cb1d1767e78

注1:https://aws.amazon.com/about-aws/whats-new/2020/06/amazon-virtual-private-cloud-customers-use-prefix-lists-simplify-configuration-security-groups-route-tables/

注2:https://aws.amazon.com/about-aws/whats-new/2022/02/amazon-cloudfront-managed-prefix-list/

注3:https://aws.amazon.com/blogs/networking-and-content-delivery/automated-vpc-prefix-list-population-for-cross-region-and-in-region-security-group-referencing/