14-IAM策略评估逻辑(IAM Policy Evaluation Logic)

文 | 沉默恶魔(禁止转载,转载请先经过作者同意)
微信号:chenmoemo
关注公众号:AWS爱好者

【 Domain 2-新解决方案设计】——-IAM策略评估逻辑(IAM Policy Evaluation Logic)

Hello大家好,欢迎来到《AWS解决方案架构师认证 Professional(SAP)中文视频培训课程》,我们今天的视频课程内容是 AWS IAM策略评估逻辑。当你在调试IAM策略相关的问题时,理解这部分内容非常重要的。

接下来,让我们来了解下IAM策略是如何进行评估的。

策略决策图

我们来看一下这个策略决策图,这个图是我引用自AWS官方文档。包括了几乎所有AWS策略相关,比如组织 SCP、基于资源的策略、IAM 权限边界、会话策略以及基于身份的策略。

看着比较复杂,不过在实际环境中,通常都是根据组织的实际控制需求选择要使用的策略,而对于我们这节课内容来讲,主要了解第一块 “拒绝评估” 以及最后 “基于身份的策略” 部分内容,我们简化下这个决策图。

策略决策图(1,2步解析)

好,接下来我们来了解下决策过程。

首先,Decision starts with Deny,在AWS,所有的访问比如访问S3存储桶,或者是启动EC2实例等,默认情况下这些请求都会被拒绝,默认的情况下,所有请求都被拒绝,这称为隐式拒绝。

在默认所有请求都被拒绝之后,进行到第二步,开始评估附加到用户或IAM策略。因为这部分内容非常重要,我们在继续下部分内容前,先对这两步做个演示帮助大家理解。

策略决策图(1,2步演示)

切换到aws管理控制台,进入IAM-用户,我们现在有一个IAM用户iloveaws,进入到权限选项卡,可以看到没有相关S3的访问策略。我们切换浏览器,使用iloveaws这个用户登陆控制台后,访问一下S3管理控制台,可以看到是拒绝访问的。

大家应该想到为什么会出现访问被拒绝,正如前面所讲,在策略决策图第一步,策略决策开始时,默认情况下,所有请求都被拒绝,然后,在我们访问S3控制台时,实际发生的是,通过检查附加到iloveaws用户的策略,发现iloveaws用户没有附加相关允许S3的访问的策略,所以访问S3被拒绝。

我们接下来给这个用户附加s3的访问权限,添加完成后,我们看下这个策略内容,在策略中已经明确允许两个动作S3 GET以及S3 LIST。然后我们切换到iloveaws用户再次访问S3,我们刷新下页面,现在已经可以访问S3存储桶了。

总结下刚才的演示,我们使用iloveaws用户访问S3,首先,策略开始时默认请求都被拒绝,然后进行到策略评估第二步,评估附加到iloveaws用户策略,因为刚才我们附加了一个允许访问S3的策略到iloveaws用户,所以最终用户允许访问S3。这就是策略评估逻辑工作的过程。

显式拒绝

好的,我们继续,首先默认情况下请求都会被拒绝,第二步代码随后会检查附加到用户的策略,随后第三步,代码将要检查在策略中是否有应用于请求的 Deny 语句。应用于请求的deny语句,这称为显式拒绝。

如果策略中有显式拒绝出现,则整个请求被拒绝。如果没有显式拒绝, 有允许请求的语句,则将最终决定允许。

同样,为了帮助大家理解,接下来看一个演示案例。

假设现在我们有5个可用的S3存储桶,之后还会新建存储桶,想要达到目的为允许所有存储桶的访问,包括后续新增的,但是要拒绝第五个存储桶的访问请求。

为了达到这个目的,只需要两个步骤,第一步是配置允许所有S3存储桶的访问, 这样的话所有访问存储桶的请求都会被允许。

第二步,配置显式 拒绝访问第五个存储桶策略。这样即使在未来,又新创建了10个S3存储桶,在配置以上2个策略的情况下,同样用户除了无法访问第五个存储桶,其他的存储桶包括新创建的都允许访问,这样的话就可以满足上述的允许所有存储桶的访问,但是要拒绝第五个存储桶的访问的需求。

同样,我们来做个演示。

切换到IAM-iloveaws用户,删除之前添加的策略,然后为了完成上面的场景演示,我们为iloveaws添加一个新的策略,然后直接附加现有策略,搜索S3,选择S3FullAccess策略,然后完成策略添加。S3FullAccess策略内容为允许S3的所有访问权限, 这样我们就完成了上面PPT的第一步,允许访问所有S3存储桶。

接下来我们配置第二步,配置显式 拒绝访问第五个存储桶策略。

我们先切换到S3控制台,我们刚才已经配置了iloveaws用户允许访问所有当前的这几个存储桶的访问,现在要进行第二步配置,配置显式 拒绝访问第五个存储桶策略,对应的我们演示的iloveawscn5这个存储桶。最终我们要达到的目的是允许iloveaws用户除了拒绝访问iloveawscn5这个存储桶,其他的存储桶都被允许访问。

所以我们在添加一个策略,我们这次使用策略编辑器添加,希望大家能够熟悉策略编辑器的使用方式。服务选择S3,然后勾选所有S3操作,我们要添加显式拒绝策略,所以点击“切换以拒绝权限”, 然后添加资源,我们现在要拒绝iloveawscn5这个存储桶访问,所以需要在资源这里通过添加存储桶iloveawscn5的ARN,然后输入存储桶名称iloveawscn5。然后为策略取个名称,我们就叫denys3bucket,然后创建策略。

在附加策略前,我们还要对策略内容进行调整,看下我们创建的denys3bucket策略内容,前面的策略内容将resource为*的一些S3动作拒绝了,而我们只需要对resource为iloveawscn5这个存储桶显式拒绝,所以我们手动删除下上面的内容。

拒绝所有S3的动作,然后指定的资源是iloveawscn5这个存储桶。我们把这个策略附加到iloveaws用户。

看下现在iloveaws用户策略的情况,目前S3相关有两个策略,一个是允许所有S3访问的策略,另一个是我们刚才创建的拒绝访问iloveawscn5存储桶访问策略,我们看下现在存储桶访问的情况。

切换使用iloveaws这个用户,进入到S3控制台,进入iloveawscn5存储桶,发现拒绝访问,然后访问下其他存储桶,是可以成功进行访问的。我们在继续做个测试,编辑我们刚才创建的denys3bucket策略,然后将resource的内容修改为*,保存。

然后我们看下目前iloveaws用户策略的情况,目前有2个S3相关的策略,一个是允许所有S3访问的策略,另一个刚才修改后是拒绝所有S3访问的策略,那现在大家想一下,在附加这两个策略的情况下,哪个策略的优先级比较高会生效呢?

我们切换到iloveaws用户,进入到S3,刷新后发现,目前S3存储桶已经拒绝访问了。这意味着,添加的显式拒绝策略的优先级高于允许策略,所以大家要记住,在对同一个资源同时配置了允许和拒绝策略时,拒绝策略将会生效,这一点非常重要。

让我们回到策略决策图,当策略中有显示拒绝时,那么将最终拒绝请求;如果没有显示拒绝时,如果有允许语句,则最终允许请求。如果没有允许所请求的操作,则请求最终会被隐式拒绝。

以上就是IAM策略决策的过程,通过以上讲解,希望同学对这部分内容有所了解。

最后,我们看下显式拒绝和默认拒绝之间的区别。

如果没有允许访问该资源的策略,那么这个请求默认是会被拒绝的。比如一个用户如果没有附加任何S3策略,这个用户试图访问S3控制台时,这个请求默认被拒绝,这就是默认拒绝。

显式拒绝的话,我们在上面的演示中,对于iloveawscn5这个存储桶,我们创建了策略,且在策略中明确指定了拒绝语句, 拒绝该存储桶的访问,这个就是显式拒绝。

好的,以上就是我们今天IAM策略评估逻辑内容,希望通过这堂课的讲解和演示让大家对于IAM策略的评估逻辑内容有所掌握。

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

AWS爱好者的网址是www.iloveaws.cn。
可以通过扫码加入【AWS爱好者】微信公众号,查看原创的AWS知识点相关文章
加入【AWS爱好者】微信群,和其他同学一起备考,以及探讨交流AWS相关知识
加入【AWS知识星球】持续学习。

我们今天的视频课程就到这里,感谢大家的观看,我们下一课程再见。

0 responses on "14-IAM策略评估逻辑(IAM Policy Evaluation Logic)"

Leave a Message

error: Content is protected !!