目录
1. 策略决策图
这个图是我引用自AWS官方文档。包括了几乎所有AWS策略相关,比如组织 SCP、基于资源的策略、IAM 权限边界、会话策略以及基于身份的策略。
2. IAM策略评估逻辑处理过程
2.1 策略逻辑
根据决策图的第1,2步来看,在AWS,所有的访问比如访问S3存储桶,或者是启动EC2实例等,默认情况下这些请求都会被拒绝。
- 默认的情况下,所有请求都被拒绝,这称为隐式拒绝;
- 评估所有附加策略;
- 检查策略中是否有应用于请求的Deny语句,如果有会决定允许;
- 如有没有显示拒绝,检查是否有允许请求的操作,如果有会决定允许;
- 如果没有语句允许请求的操作,则请求被隐式拒绝。
2.2 策略测试
2.2.1 隐式拒绝和评估附加策略
1) 假设我们现在有两个aws用户,并且root用户bastriver有个bucket(bas-demo-bucket)。
2) 登入bas-developer用户,这个用户是没有权限查看这个bucket的。
3) 关于如何配置跨账户访问可以参考:配置跨账户S3存储桶的访问。
2.2.2 显示拒绝
1) 这里创建一个新的bucket(bas-demo-bucket2),并且附加拒绝策略,也就是bas-developer账户不能访问这个bucket。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "cross",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::004398020230:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bas-demo-bucket2",
"arn:aws:s3:::bas-demo-bucket2/*"
]
}
]
}
2) 测试(profile为dev对应的是账户bas-developer)。
2.2.3 同时存在拒绝和允许策略。
1) 同时给bas-demo-bucket2附加上两个策略。
2) 测试,可以看到在对同一个资源同时附加了允许和拒绝策略时,拒绝策略会生效。