Slide 1

Slide 1 text

IPとVPC Endpointで IAM Userを使えるプリンシパルの制限 2022.03.24.Thu JAWS-UG CLI専門支部 #252R Kento Suzuki

Slide 2

Slide 2 text

自己紹介 氏名:鈴木 健斗(すずき けんと) 所属:Iret株式会社 普段:インフラ周りやってる 好きな飲み物:綾鷹

Slide 3

Slide 3 text

概要 IAM Userを使用する プリンシパルを IPとVPC Endpointで絞りたい ※IAM Roleは使用不可

Slide 4

Slide 4 text

プリンシパルとは AWSのリソースに対してアクションやオペレーションを実行できる人
 もしくはアプリケーションのこと 参考:Understanding how IAM works

Slide 5

Slide 5 text

要件 プログラム経由(CLI、SDK等)のIAM Userを使うプリンシパルが以下の場合はアクセスを許可 1. アカウントAのVPC Endpointを経由している 2. 特定のパブリックIP 3. AWSのサービス 1 or 2 or 3であればIAM Userが使える

Slide 6

Slide 6 text

完成品 1. アカウントAのVPC Endpointを経由している 2. 特定のパブリックIP 3. AWSのサービス 1 or 2 or 3を許可したいのに Deny ??

Slide 7

Slide 7 text

Denyの理由 1. アカウントAのVPC Endpointを経由している 2. 特定のパブリックIP 3. AWSのサービス IAMポリシーのConditionに対する 評価ロジックはAND条件となる ➔ 1 or 2 or 3といった条件指定はできない

Slide 8

Slide 8 text

集合の話:ANDで同じ条件を作る

Slide 9

Slide 9 text

ANDにすると 1. アカウントAのVPCエンドポイントを経由していない 2. 特定のパブリックIPではない 3. AWSのサービスではない 1 and 2 and 3を拒否

Slide 10

Slide 10 text

確認 念のため以下コマンドで疎通確認 aws s3 ls s3://バケット名 問題がないことを確認 一方で、IAM PolicyのConditionを 存在しないIP,VPC EndpointのIDに 書き換え疎通不可になることも確認 ※水色のルートはローカルからCLIを実行しているのと同じ

Slide 11

Slide 11 text

おわりに IAM PolicyのCondition句「StringNotEquals」や「NotIpAddress」といった 「Not」が含まれるキーを用いた「Deny」の書き方は分かりづらいが、 整理して考えることができれば大変柔軟が効くポリシーが書ける!! でも、IAM Roleを使えば...

Slide 12

Slide 12 text

参考 Understanding how IAM works https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-p rincipal AWS: Denies access to AWS based on the source IP https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny -ip.html Creating a condition with multiple keys or values https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditio ns.html 本スライドのQiita版 https://qiita.com/suzuki_kento/items/5e87ed8bd71f05281382