Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How to think about Acsess controll of Amazon ...
Search
chadain
October 11, 2019
Technology
1
1.8k
How to think about Acsess controll of Amazon S3 simply
How to think about Acsess controll of Amazon S3 simply
chadain
October 11, 2019
Tweet
Share
More Decks by chadain
See All by chadain
AWS Control Towerと HashiCorp Terraformでいい感じにマルチアカウント管理をしよう
chazuke4649
1
1k
Account Factory for Terraform (AFT) 入門
chazuke4649
1
1.6k
minimum-guardrails-by-aws-iam
chazuke4649
1
2k
"Are you Well-Architected?" Introducing about Cloud Optimization Aseesment
chazuke4649
0
1k
re:GrowthOSAKA2019-CoreServicesUpdate(IAM.S3.EC2)
chazuke4649
0
1.4k
Other Decks in Technology
See All in Technology
UI State設計とテスト方針
rmakiyama
2
580
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
3
260
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
350
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
180
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
20241220_S3 tablesの使い方を検証してみた
handy
4
400
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Mobile First: as difficult as doing things right
swwweet
222
9k
KATA
mclloyd
29
14k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
How to Ace a Technical Interview
jacobian
276
23k
What's in a price? How to price your products and services
michaelherold
243
12k
RailsConf 2023
tenderlove
29
940
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
A designer walks into a library…
pauljervisheath
204
24k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Transcript
S3のアクセス管理を シンプルに考えるためのTips コンサルティング部 茶⾕ 和弥(ちゃだいん)
2 アジェンダ • ⾃⼰紹介 • なぜS3のアクセス管理はややこしいのか • 概念を整理 • Tips(これがメイン)
3 基本これだけ︕ このセッションで覚えて帰っていただきたいこと • バケット/オブジェクトACLは、⼀旦忘れる • 原則︓最⼩権限から始めよ • クロスアカウントはIAMロールが無難 •
⼀般公開しないなら、ブロックパブリックアクセス
4 ⾃⼰紹介 茶⾕ 和弥 (ちゃだいん) - AWS事業本部コンサルティング部 - ロール︓ソリューションアーキテクト -
2019年1⽉ジョイン - 出⾝︓⽯川県⾦沢市 - 好きなもの︓クラフトビール
5 なぜS3のアクセス管理は ややこしいのか︖
6 なぜS3のアクセス管理はややこしいのか︖ 1. ポリシーの種類が多くて 使い分けがわからない
7 なぜS3のアクセス管理はややこしいのか︖ 1. ポリシーの種類が多くて使い分けがわからない • 例︓バケットの中にある特定のオブジェクトの読み取りを 制限したい。どうする︖ • 使えるもの︓ユーザーポリシー, バケットポリシー,
バケットACL • 使い⽅︓1つでもOK、組み合わせてもOK • →結局どの⽅法が⼀番ベストなんだろう...
8 なぜS3のアクセス管理はややこしいのか︖ 2. ポリシーの優先順位が どうなるのかわからない
9 なぜS3のアクセス管理はややこしいのか︖ 2. ポリシーの優先順位がどうなるのかわからない • ポリシーが全くない状態だとどうなる︖ • 「無し」と「許可」では許可が勝つ︖ • 「許可」と「拒否」ではどっちが勝つ︖
10 概念の整理
11 S3アクセス管理における概念の整理 • アクセスポリシー • 誰が(Principal) • 何に対して(Resource) • 何を許可/拒否する(Action)
12 アクセスポリシー ユーザーポリシー • IAMユーザー・グループ・ロールに適⽤ • アクセスをユーザー単位で制御するのに◎ バケットポリシー • バケットに適⽤
• アクセスをバケット単位で制御するのに◎ ACL(バケット/オブジェクト) • バケット/オブジェクト適⽤ • アクセスをオブジェクト単位で制御するのに◎
13 誰が(Principal) AWSアカウント ユーザー サービス パブリック(⼀般公開)
14 何に対して(Resource)・何を許可する(Action) バケット オブジェクト • バケットオペレーション • バケットの作成 • バケットの削除
• バケット⼀覧の取得 etc • オブジェクトオペレーション • オブジェクトの作成 • オブジェクトの参照 • オブジェクトの更新etc
15 S3アクセス管理における概念の整理(再掲) • アクセスポリシー • ユーザーポリシー(ユーザー/グループ/ロール) • バケットポリシー • ACL(バケット/オブジェクト)
• 誰が(Principal) • AWSアカウント • ユーザー • サービス • パブリック etc • 何に対して(Resource) • バケット • オブジェクト • 何を許可/拒否する(Action) • バケット オペレーション • オブジェクト オペレーション
16 権限の勝ち負け 暗黙的拒否 < 明⽰的許可 < 明⽰的拒否 デフォルトDeny < Allow
< Deny 許可してない < 許可している < 拒否している
17 いきなり ここで問題です。
18 いきなり 次の場合、 どちらの権限が優先されるでしょう︖
19 権限の勝ち負けの問題 ユーザーポリシー • アカウント内の全バケットに 対するフルアクセスを許可す る バケットポリシー • ヤマダさんを除く⼀部のユー
ザーにのみフルアクセスを許可 する ヤマダさん SampleBucket アクセスできる︖ できない︖
20 権限の勝ち負けの問題 ユーザーポリシー • アカウント内の全バケットに 対するフルアクセスを許可す る バケットポリシー • ヤマダさんを除く⼀部のユー
ザーにのみフルアクセスを許可 する ヤマダさん SampleBucket
21 Tips紹介 (個⼈的な⾒解です) (わかりやすさ優先で⼀部極端な表現を使います)
22 Tips1 バケット/オブジェクトACLは、⼀旦忘れる
23 バケット/オブジェクトACLは、⼀旦忘れる 主たる理由︓ほとんどのケースが、 ユーザーポリシーとバケットポリシーで対応可能だから。 その他の理由︓ • ACLでは、制御できる範囲が限られている • ACLよりもユーザーポリシーとバケットポリシーが優先される →
存在は知っているが、現段階では⼀旦忘れてOK
24 Tips2 原則︓最⼩権限から始めよ
25 原則︓最⼩権限から始めよ S3に限らず、IAMのベストプラクティスでもある。 “最⼩限のアクセス権限から開始し、必要に応じて追加のアクセス権限を 付与します。この⽅法は、ゆるいアクセス権限で始めて後でそれらをし ぼろうとするよりも安全です。” 出来るだけ最⼩限にしぼってから始める⽅がより安全なのです。 したがって、ユーザーポリシーだけ︖バケットポリシーだけ︖ それとも両⽅が良いの︖議論については、 「できれば両⽅でしぼる。無理なら⽚⽅でしぼる。」と考えます。
26 次に浮かぶ疑問 では、 ユーザーポリシーとバケットポリシー、 まずはどっちを考えたら良いのだろう︖
27 アクセスポリシー(再掲) ユーザーポリシー • IAMユーザー・グループ・ロールに適⽤ • ユーザー単位でアクセスを制御するのに◎ バケットポリシー • バケットに適⽤
• バケット単位でアクセスを制御するのに◎ ACL(バケット/オブジェクト) • バケット/オブジェクト適⽤ • オブジェクト単位でアクセスを制御するのに◎
28 その疑問を解決すべく 超簡単なフローチャート 作ってみました。
29 質問はたった3つだけ 1. パブリックアクセスさせたい︖ 2. 複数のAWSアカウントから アクセスさせたい︖ 3. 単⼀のAWSアカウント内から アクセスさせたい︖
30 ポリシーを考える順番 1. パブリックアクセスさせたい︖ 2. 複数のAWSアカウントから アクセスさせたい︖ NO YES Main:バケットポリシー
YES NO Main:ユーザーポリシー(IAMロール) Sub:バケットポリシー Main:ユーザーポリシー Sub:バケットポリシー 3. 単⼀のAWSアカウント内から アクセスさせたい︖ YES
31 ポリシーを考える順番 1. パブリックアクセスさせたい︖ Main:バケットポリシー YES 理由︓ユーザーポリシーで、パブリックアクセス を管理するのは無理だから。→必然的にバケット ポリシー⼀択。
32 ポリシーを考える順番 2. 複数のAWSアカウントから アクセスさせたい︖ YES Main:ユーザーポリシー(IAMロール) Sub:バケットポリシー 理由︓他のAWSアカウントからのアクセスは IAMロールが無難(詳細は次のTips)
33 ポリシーを考える順番 Main:ユーザーポリシー Sub:バケットポリシー 3. 単⼀のAWSアカウント内から アクセスさせたい︖ YES 理由1︓S3に限らずすべての権限は、 できるだけIAMで⼀元管理できる⽅がよい。
理由2︓S3は、デフォルトDeny。 下⼿に触るよりデフォルトが安全。 (追加・補⾜的にバケットポリシーを使⽤する)
34 権限の勝ち負けの問題(再掲) ユーザーポリシー • アカウント内の全バケットに 対するフルアクセスを許可す る バケットポリシー • ヤマダさんを除く⼀部のユー
ザーにのみフルアクセスを許可 する ヤマダさん SampleBucket OK
35 権限の勝ち負けの問題(再掲) ユーザーポリシー • アカウント内の全バケットに 対する読み取りを許可する バケットポリシー • ヤマダさんを除く⼀部のユー ザーにのみフルアクセスを許可
する ヤマダさん SampleBucket OK ユーザーポリシー を修正すべき
36 ポリシーを考える順番 1. パブリックアクセスさせたい︖ 2. 複数のAWSアカウントから アクセスさせたい︖ NO YES Main:バケットポリシー
• 理由︓ユーザーポリシーで、パブリックアクセスを管 理するのは無理だから。→必然的にバケットポリシー ⼀択。 YES NO Main:ユーザーポリシー (IAMロール) Sub:バケットポリシー • クロスアカウントアクセスはIAMロールが有⽤ (詳細は次のTipsにて解説) Main:ユーザーポリシー Sub:バケットポリシー • できるだけ権限周りは、IAMで⼀元管理する⽅がシ ンプルになるので、ユーザーポリシーでまず考える • それだと難しい場合にバケットポリシーを使う 3. 単⼀のAWSアカウント内から アクセスさせたい︖ YES
37 Tips3 クロスアカウントはIAMロールが無難
38 クロスアカウントはIAMロールが無難 クロスアカウントアクセスとは、 複数のAWSアカウントが登場すること。 クロスアカウントがややこしくなる要因はただ1つ。 ※アカウントが異なる場合、 バケット所有者とオブジェクト所有者を考慮する必要が出てくるから。 (同⼀アカウント内ではこの考慮は不要です)
39 バケット所有者とオブジェクト所有者 OK NG バケットとオブジェクトの所有者のAWSアカウントが異なる場合、 オブジェクト所有者がバケット所有者にオブジェクトACLで権限を与えない限り、 バケット所有者は、そのオブジェクトを触ることができない。
40 クロスアカウントの例 アカウントA アカウントB アカウントC アカウントAのバケットに、 アカウントBのユーザーがオブジェクトをputして、 アカウントAとアカウントCのユーザーがgetするパターン
41 クロスアカウントの例(IAMロール使わないver) アカウントA アカウントB アカウントC バケットポリシー ユーザーポリシー ユーザーポリシー オブジェクトACL ユーザーポリシー
42 クロスアカウントの例(IAMロール使わないver) 【アカウントA】 - バケットポリシー - バケットに対してアカウントB/Cのアクセスを許可する - ただし、アカウントBがオブジェクトACLのフルコントロールを許可 してないとNG
- ユーザーポリシー - ユーザーに対してバケット・オブジェクトのアクセスを許可する 【アカウントB】 - ユーザーポリシー - ユーザーに対してバケット・オブジェクトのアクセスを許可する - オブジェクトACL - アカウントA/Cにオブジェクトのフルコントロールを許可する 【アカウントC】 - ユーザーポリシー - ユーザーに対してバケット・オブジェクトのアクセスを許可する
43 クロスアカウントの例(IAMロール使わないver) アカウントA アカウントB アカウントC バケットポリシー ユーザーポリシー ユーザーポリシー オブジェクトACL ユーザーポリシー
バケット所有者と オブジェクト所有者が 違うので、 オブジェクトACLが必要に… さらにアカウントが増えた 時の対応範囲が広い… ・オブジェクトACLの修正 ・バケットポリシーの修正
44 クロスアカウントの例(IAMロール使うver) アカウントA アカウントB アカウントC ユーザーポリシー ユーザーポリシー ユーザーポリシー ロールポリシー (B)
ロールポリシー (C)
45 クロスアカウントの例(IAMロール使うver) 【アカウントA】 - ユーザーポリシー - ユーザーに対してバケット・オブジェクトのアクセスを許可する - ロールポリシー(アカウントB⽤) -
対象のバケットへのアクセスを許可する - ロールポリシー(アカウントC⽤) - 対象のバケットへのアクセスを許可する 【アカウントB】 - ユーザーポリシー - アカウントAのロール使⽤を許可する 【アカウントC】 - ユーザーポリシー - アカウントAのロール使⽤を許可する
46 クロスアカウントの例(IAMロール使うver) アカウントA アカウントB アカウントC ユーザーポリシー ユーザーポリシー ユーザーポリシー ロールポリシー (B)
ロールポリシー (C) バケット所有者=オブジェ クト所有者なので、オブ ジェクトACLが不要 アカウント追加時も アカウントAで 集中管理が可能
47 クロスアカウントの例(IAMロール使うver) アカウントA アカウントB アカウントC ユーザーポリシー ユーザーポリシー ユーザーポリシー ロールポリシー (B)
ロールポリシー (C) 1.オブジェクト所有者を意識しないで済む⽅が シンプルでわかりやすい 2.別アカウントのことは、 全てロールに払い出す⽅が管理しやすい
48 Tips4 ⼀般公開しないなら、 ブロックパブリックアクセス
49 ⼀般公開しないなら、ブロックパブリックアクセス What is ブロックパブリックアクセス ? • Re:invent2018発表の新機能 • ポリシー全無視でパブリックアクセスをブロックする最強
なやつ • いわば「安全装置」 → パブリックに公開する予定のないバケットは とりあえず有効化するのが安全。
50 最後にもう⼀度
51 基本これだけ︕(再掲) このセッションで覚えて帰っていただきたいこと • バケット/オブジェクトACLは、⼀旦忘れる • 原則︓最⼩権限から始めよ • クロスアカウントはIAMロールが無難 •
⼀般公開しないなら、ブロックパブリックアクセス
52