使用VPC终端节点策略控制对服务的访问

关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cns

Hello大家好,欢迎来到《AWS解决方案架构师认证 Professional(SAP)中文视频培训课程》,我们今天的课程内容为:使用VPC 终端节点策略 控制对服务的访问。

VPC 终端节点策略的考点会经常出现在SAP认证考试中,会有一些题目涉及 访问S3 的终端节点的内容,然后让你设计控制S3存储桶的访问,这种场景是可以使用S3 存储桶策略来控制 从特定终端节点 或 特定 VPC 对存储桶进行访问。

好,我们开始今天的课程内容。

使用VPC终端节点策略控制对服务的访问

在创建终端节点时,可以通过配置终端节点策略,来控制对使用终端节点连接到的AWS服务的访问。通过在策略部分配置相应的策略内容,达到控制通过终端节点访问AWS服务的目的。

另外要注意,并非所有服务都支持终端节点策略。
使用VPC终端节点策略控制对服务的访问

终端节点策略使用JSON文档来控制服务的访问,我们看个策略的例子:

这是一个 控制Amazon SQS 服务访问的 VPC 终端节点策略,在这个策略中配置了以下内容:

可执行操作的委托人,为一个特定IAM用户。
可执行的操作,为sqs:SendMessage。
可执行操作的资源,为策略中的这个特定的资源。
这个终端节点策略是应用在终端节点上的,意味着只有这个特定的IAM用户,允许通过这个终端节点,访问这个特定的资源,且只可执行sqs:SendMessage动作。

注意,终端节点策略不会覆盖或取代 IAM 用户策略或服务特定策略,如IAM用户同样需要被授权访问SQS服务,您也同样可以在使用服务特定的策略在多加一层控制,如:SQS访问策略或者S3存储桶策略。

终端节点策略是一个单独策略,用于控制从终端节点对指定服务进行的访问,它提供了额外层面的保护,提供了VPC终端节点级别的访问控制。

需要注意,即使配置了上面的终端节点策略,IAM 用户仍可绕过这个终端节点,不通过终端节点而使用公有路由通过公网访问其他 Amazon SQS API 操作,如果访问都没有通过终端节点,自然终端节点策略就起不到作用了。

在这种情况下,就可以在配置一个SQS队列策略,内容为:如果不是来自 VPC 终端节点,则拒绝访问,强制让对SQS的访问都只能通过终端节点;然后在通过终端节点策略在做进一步的访问控制。
使用VPC终端节点策略控制对服务的访问

接下来我们看2个访问 Amazon S3 的终端节点策略,通过策略示例让大家更深入的理解终端节点策略的作用。

终端节点策略:仅允许访问指定存储桶的策略的示例

使用VPC终端节点策略控制对服务的访问

我们来看下,这个是通过配置终端节点策略,仅允许访问一个特定的存储桶,就是这个my_secure_bucket 的策略的示例。

这个策略允许任何人,仅可以对my_secure_bucket这个存储桶执行S3的Get和PutObject操作。仅可访问这个特定的存储桶,其他的存储桶不允许访问,如果您的 VPC 中有使用 S3 存储桶的其他 AWS 服务,这会非常有用。

只允许访问Amazon linux的存储库

我们来看另外一个终端节点策略,策略的内容为只允许访问Amazon linux的存储库。

当EC2的Amazon linux系统需要update时,实际上它们是从Amazon负责管理的S3上获取更新包的,这个终端节点策略允许您的EC2使用这个终端节点,通过AWS私有网络访问存储库进行系统的update。

使用VPC终端节点策略控制对服务的访问

S3存储桶策略基于VPC终端节点的一些常见的访问控制的应用

好,接下来的内容我们讨论下S3存储桶策略基于VPC终端节点的一些常见的访问控制的应用,注意这部分内容非常非常重要,会出现在AWS SAP认证考试中。

在使用终端节点访问S3存储桶的这个应用场景中,还可以使用S3存储桶策略,来控制从 特定终端节点 或 特定VPC 对存储桶的访问,这需要在S3存储桶策略中配置特定的Condition。

只允许从特定的终端节点访问存储桶,是通过Condition的配置 ,使用aws:sourceVpce 条件指定终端节点,后面指定终端节点ID,对应这个例子是3c4d这个终端节点。
Condition: “aws:sourceVpce”: “vpce-1a2b3c4d”

然后我们就可以配置存储桶策略,拒绝所有其他的访问只允许通过这个指定的终端节点访问存储桶,这样就可以通过存储桶策略将访问存储桶的权限只限于通过这个特定的终端节点。

如果您在同一 VPC 中配置了多个终端节点,并且您希望管理所有终端节点到 S3 存储桶的访问,这种情况可以使用 aws:sourceVpc 条件来限制对特定 VPC 的访问的存储桶策略。

但是要注意的是,aws:sourceVpc条件只适用于通过VPC终端节点使用AWS私有网络访问服务的环境,如我们在同一 VPC 中配置了多个终端节点,您希望在存储桶策略中管理所有终端节点的访问。

对于S3存储桶的访问控制,大家可能接触过通过存储桶策略的aws:SourceIp条件限制访问IP;但注意,对于通过 VPC 终端节点向 Amazon S3 发出的请求,是无法在存储桶策略中使用 aws:SourceIp 条件的,在这种场景下,做访问控制不能在策略中将aws:SourceIp配置为终端节点的私有IP地址。

aws:SourceIp 条件只能限制公有IP访问;所以要记住,如果您使用了VPC终端节点,您想基于不同的终端节点做访问限制,请在存储桶策略通过配置Condition指定 特定 VPC 或特定 VPC 终端节点来实现;

如果您是通过公有网络访问S3存储桶,可以使用aws:SourceIp来做来源IP的访问限制。
使用VPC终端节点策略控制对服务的访问

S3存储桶策略在VPC终端节点场景下应用的存储桶策略的示例

好,接下来看下S3存储桶策略在VPC终端节点场景下应用的存储桶策略的示例。

注意这两个示例都是在S3存储桶上配置的存储桶策略。

左边的策略的内容为仅允许从终端节点 vpce-1a2b3c4d 访问特定存储桶 my_secure_bucket 的 S3 存储桶策略的示例,是通过在策略中配置:禁止任何人对S3的特定存储桶的访问,仅允许这个特定的终端节点访问存储桶。

右边的策略是在存储桶策略上限制对特定VPC的访问。策略的内容为拒绝所有访问,仅允许 VPC vpc-111bbb22 访问 my_secure_bucket存储桶及其对象。
使用VPC终端节点策略控制对服务的访问

ok,这节课我们讨论了终端节点策略,以及在使用终端节点访问S3的场景下,通过S3的存储桶策略对访问进行控制。

终端节点策略:访问S3故障排查

大家知道还有IAM策略等对用户或者对资源访问控制的服务,所以当访问一个服务或资源时,这些访问控制的点都会决定是否能够成功访问到服务或资源。

那接下来我们就来讨论,如果一个EC2实例,通过网关终端节点使用私有网络访问S3存储桶的这个场景下,当访问出现问题时,可能是哪些节点的问题,也为故障排查提供一个思路。

那我们开始。
首先,要先检查实例的安全组,实例安全组的出站规则要有允许相应的访问出站,安全组不允许出站,访问肯定出不去;

然后,EC2通终端节点访问服务,需要检查对应VPC终端节点上的终端节点策略,是否允许EC2访问S3;

接下来,检查路由表,确认路由表中有通过网关终端节点访问S3的路由条目,如果没有对应的路由EC2就无法知道通过终端节点访问S3,自然就无法访问。

还需要确认VPC的DNS设置,需要启用DNS解析;这些我们前面的课时都讲过。

EC2的访问通过网关终端节点后,还需要确认S3的存储桶策略是否允许EC2访问存储桶。
最后 ,还有IAM权限。在大部分应用场景中,这台EC2可能会附加一个角色,要确认这个IAM角色是否允许访问S3存储桶。

好,大家可以看到,有很多组件和服务的配置会影响EC2访问S3存储桶,理解这些内容将会对于认证考试会很有帮助。

OK,我们今天的课时讨论了VPC终端节点策略的内容,希望本课时能够给大家带来帮助。下节课我们将对此部分进行实操演示。

使用VPC终端节点策略控制对服务的访问

希望此系列教程能为您通过 AWS解决方案架构师认证 Professional 认证考试带来帮助,如您有任何疑问

关注公众号:AWS爱好者(iloveaws)
文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
网站:www.iloveaws.cns
上一篇:字符串漫游指南


下一篇:原力计划·S3 第一周榜单公布(0315-0321)