用手算出权限
目标
IAM是云事故的第1大原因,决策逻辑本身只有三行。
1. 명시적 Deny 가 하나라도 맞으면 → 거부
2. 아니고 Allow 가 하나라도 맞으면 → 허용
3. 둘 다 없으면 → 거부 (암묵적 거부)
**不是顺序,而是种类更重要。**不管贴几个政策,只要有一个Deny,所有 允许。
这个练习没有云账户,就直接运行这个逻辑。
评价器
python3 /opt/lab/iam/evaluate.py policy.json requests.txt
请求文件在一行액션 리소스,条件是키=값加上。
s3:GetObject arn:aws:s3:::reports/2026-q1.csv
s3:GetObject arn:aws:s3:::pub/x aws:SourceVpc=vpc-lab1
也请阅读评价器的源代码——不能超过200行。IAM难点在于逻辑 不是因为复杂,而是因为政策在多个地方合并。
准备好的文件
| 文件 | 用途 |
|---|---|
/opt/lab/iam/evaluate.py |
评价器 |
/opt/lab/iam/policy1.json·requests1.txt |
第1阶段 |
/opt/lab/iam/needed.txt |
第4阶段——应用程序实际所做的事情 |
/opt/lab/iam/incident.json |
6阶段 |
参考
第4阶段即使是**没有标记的要求也会进行测试。**如果广泛使用的话,就会在那儿遇到问题。
先预测结果
/opt/lab/iam/policy1.json科/opt/lab/iam/requests1.txt看完后,在旋转评价器之前将每个请求的结果01-predict.txt在allow或者deny请逐行写下。然后选择两个结果出乎意料的,并说明为什么。01-why.md请逐行写一句话。
规则有三条——明确Deny > 明确Allow > 默认Deny。不是顺序,而是种类更重要。
都写完之后python3 /opt/lab/iam/evaluate.py /opt/lab/iam/policy1.json /opt/lab/iam/requests1.txt请根据它进行调整。评分器只有在你的预测与评估器完全一致时才会通过。
意想不到的位置通常是三个中的一位——s3:*即使给了,也堵住了,没有被任何句子堵住,没有条件键堵住了。
Deny无论顺序如何都会赢
制作包含Allow相同动作的句子和Deny动作的句子的政策,但制作两个Deny句子放在上面和放在下面的句子,结果相同。02-deny.txt请留在这里。
文件是deny-first.json科deny-last.json然后,请一起写出针对同一请求的两个结果。无论贴几个政策,**Deny一个都会超过所有Allow。**所以“贴了更多的权限,为什么不行”的答案通常是某个地方的Deny。
野生卡能抓到哪里?
arn:aws:s3:::app-data*用为资源的政策是**app-data-secret展示了要抓住到**为止,并修改为只抓住预定的事项。03-wildcard.txt请把两个都留在这里。
*也包含斜杠。app-data*是app-data,app-data-dev,**app-data-secret**全部抓住。
修复的方法是明确分隔符——arn:aws:s3:::app-data/*就像这样。是实际泄露事故的常见样子。
以最小权限缩小范围
/opt/lab/iam/needed.txt上面写着这个应用程序实际做的事情。只有那个,其他的政策不行。least.json请用。在动作中*不能用。
评分机是needed.txt不仅如此,还通过不恰当的相邻请求进行测试——比如删除同一桶,或者名字相似的其他桶之类的东西。如果广泛使用的话,就会在那儿遇到问题。
最小权限不是“稍微缩小一点”,而是写下必要的东西,只允许那个。顺序相反的话绝对不会缩小。
提出条件
4阶段政策公司VPC(vpc-lab1)加上只允许来自的请求的条件cond.json请用。
"Condition": {"StringEquals": {"aws:SourceVpc": "vpc-lab1"}}. 没有条件键的完全没有的请求是StringEquals无法满足,就会被拒绝——这就是正确的动作。这是让证书外露而无法仅凭证书使用的装置。
再现事故
/opt/lab/iam/incident.json实际上包含了常见的错误。找出什么是为什么危险06-incident.txt请写在上面,并留下一条证明风险的请求。
试着用评价器把各种东西放进去看看。通过的比预想的要多得多。找到答案后,也想想为什么写这个政策的人认为它很安全——这种误解才是事故的真正原因。
整理三个
07-notes.md至少三行以上。评价规则三行,小心Wildcard,条件会阻止。
在正文中Deny,와일드카드,조건这个必须进去。