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
2k
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
4.4k
Account Factory for Terraform (AFT) 入門
chazuke4649
1
2.5k
minimum-guardrails-by-aws-iam
chazuke4649
1
2.3k
"Are you Well-Architected?" Introducing about Cloud Optimization Aseesment
chazuke4649
0
1.1k
re:GrowthOSAKA2019-CoreServicesUpdate(IAM.S3.EC2)
chazuke4649
0
1.6k
Other Decks in Technology
See All in Technology
FlutterでPiP再生を実装した話
s9a17
0
200
Phase04_ターミナル基礎
overflowinc
0
2.5k
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
0
400
Phase08_クイックウィン実装
overflowinc
0
1.9k
Phase10_組織浸透_データ活用
overflowinc
0
1.8k
Phase05_ClaudeCode入門
overflowinc
0
2.3k
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
5
2.3k
Change Calendarで今はOK?を仕組みにする
tommy0124
1
120
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
200
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
400
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
100
Astro Islandsの 内部実装を 「日本で一番わかりやすく」 ざっくり解説!
knj
0
290
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
89
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
200
Code Review Best Practice
trishagee
74
20k
Amusing Abliteration
ianozsvald
0
140
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Claude Code のすすめ
schroneko
67
220k
Unsuck your backbone
ammeep
672
58k
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