SCPはボスの命令であり絶対。IAMポリシーは部下で命令の範囲内で実行する
SCP(ボス):
全体の「上限」を定める。
部下がどれだけ権限を持っていようとも、SCPで禁止されていれば何もできない。
IAMポリシー(部下):
SCPが許した範囲内で、実際に行動できる内容を細かく指定する。
SCPが許可していないことは、IAMポリシーで許可されていても実行できない。
SCP「このAという部屋の中でなら何をしてもいいが、他の部屋の出入りは禁止する!」
IAMポリシー1「Aの部屋でシチューを作る」 →OK
IAMポリシー2「Aの部屋でカレーを作る」 →OK
IAMポリシー3「Aの部屋でシチューを食べる」→OK
IAMポリシー4「Aの部屋でカレーを派手にこぼす」 →SCPが禁止してないのでOK
IAMポリシー5「Bの女子部屋にこっそり入る」→NG SPCが禁止しているので、Bの女子部屋に入ろうとしても、鍵がかかっていて入れない。
SCPボスの命令書はこれ
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "arn:aws:rooms:A:*"
},
{
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:rooms:*",
"Condition": {
"StringNotEquals": {
"aws:ResourceTag/Room": "A"
}
}
}
]
}
IAMポリシーの命令書がこれ(※実際に食べるなどのコマンドはありませんよ!)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "cook:MakeStew",
"Resource": "arn:aws:rooms:A:*"
},
{
"Effect": "Allow",
"Action": "cook:MakeCurry",
"Resource": "arn:aws:rooms:A:*"
},
{
"Effect": "Allow",
"Action": "eat:EatStew",
"Resource": "arn:aws:rooms:A:*"
},
{
"Effect": "Allow",
"Action": "spill:SpillCurry",
"Resource": "arn:aws:rooms:A:*"
},
{
"Effect": "Allow",
"Action": "enter:SneakIntoRoom",
"Resource": "arn:aws:rooms:B:*"
}
]
}
SCPが許可した範囲であってもIAMポリシーが許可していないと何もできません。
っということは…
IAMポリシーAは、女の子に会うことも、話すことも、触れることもできません。残念でした。IAMポリシーはいちいち許可をしないと何もできません。
女の子との関わりに例えると
SCP
「女の子がいる部屋に入ることを許可する!」
→ 大枠では部屋に入ることが可能です。
IAMポリシーA
何も許可していない
→ 結果: 部屋に入れても、以下はできません。
女の子に 会う → NG
女の子と 話す → NG
女の子に 触れる → NG
結論、SCPが許可している範囲内で、かつIAMポリシーが許可していないと何もできません。
SCPはボス、IAMポリシーは女王様?
IAMポリシーが女王様だったら、部屋に入っても何もできませんね。結論、女王様の命令は絶対です。