0x00 背景
0x01 サービス毎のメモ
-
STS
https://aws.amazon.com/premiumsupport/knowledge-center/iam-restrict-calls-ip-addresses/
APIコールをIPで制限したい場合、公式にはこのようなやり方が推奨されている。自分は疑問に思うのは、ここの Sample IAM User Policy の所に aws:SourceIp の制限をつけるのと Sample IAM Role Trust Policy に aws:SourceIp の制限をつけるのは違うのか?実際に試してみよう。
例えば test-user-nevermoe という user にこのようなポリシーをアタッチする:{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/test-role-nevermoe", "Condition": { "IpAddress": { "aws:SourceIp": "1.2.3.4/32" } } } }
この場合は test-user-nevermoe という user は 1.2.3.4 からログインする時に限って、test-role-nevermoe に aAssumeRole できることが確認した。
次に、このような Trust Policy を test-role-nevermoe にアタッチしてみよう:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::0123456789012:user/test-user-wan" }, "Action": "sts:AssumeRole", "Condition": { "IpAddress": { "aws:SourceIp": "1.2.3.4/32" } } }] }
この場合も同じく、test-user-wan のログイン IP が 1.2.3.4 の時にのみ、test-role-nevermoe に AssumeRole できる。
この二つのやり方は違いがないが、role のほうに Policy で制限した方が管理しやすいかもしれない。ただし、個人的には、user を棚卸しするときの利便性を考えると、やはり user 側で IP 制限を書いた方が楽では?