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.9k
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
2.5k
Account Factory for Terraform (AFT) 入門
chazuke4649
1
1.9k
minimum-guardrails-by-aws-iam
chazuke4649
1
2.1k
"Are you Well-Architected?" Introducing about Cloud Optimization Aseesment
chazuke4649
0
1k
re:GrowthOSAKA2019-CoreServicesUpdate(IAM.S3.EC2)
chazuke4649
0
1.5k
Other Decks in Technology
See All in Technology
Spring Bootで実装とインフラをこれでもかと分離するための試み
shintanimoto
7
820
いつも初心者向けの記事に助けられているので得意分野では初心者向けの記事を書きます
toru_kubota
2
310
От ручной разметки к LLM: как мы создавали облако тегов в Lamoda. Анастасия Ангелова, Data Scientist, Lamoda Tech
lamodatech
0
710
ブラウザのレガシー・独自機能を愛でる-Firefoxの脆弱性4選- / Browser Crash Club #1
masatokinugawa
1
460
Amazon CloudWatch を使って NW 監視を行うには
o11yfes2023
0
160
【Λ(らむだ)】最近のアプデ情報 / RPALT20250422
lambda
0
100
AIと開発者の共創: エージェント時代におけるAIフレンドリーなDevOpsの実践
bicstone
1
310
Ops-JAWS_Organizations小ネタ3選.pdf
chunkof
2
170
Cross Data Platforms Meetup LT 20250422
tarotaro0129
1
550
JPOUG Tech Talk #12 UNDO Tablespace Reintroduction
nori_shinoda
2
140
AWS全冠芸人が見た世界 ~資格取得より大切なこと~
masakiokuda
5
5.9k
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
330
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
99
5.5k
Bash Introduction
62gerente
611
210k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Building Applications with DynamoDB
mza
94
6.3k
Statistics for Hackers
jakevdp
798
220k
GraphQLとの向き合い方2022年版
quramy
46
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Typedesign – Prime Four
hannesfritz
41
2.6k
Facilitating Awesome Meetings
lara
54
6.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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