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
S3は問答無用で非公開!!
Search
ryoAccount
November 26, 2025
Technology
24
0
Share
S3は問答無用で非公開!!
Security.any #07 がんばったセキュリティLT の発表スライドです。
https://security-any.connpass.com/event/368802/
ryoAccount
November 26, 2025
More Decks by ryoAccount
See All by ryoAccount
最大のアウトプット術は問題を作ること
ryoaccount
0
340
Code Reliability
ryoaccount
0
14
XSS?なんですかそれ?
ryoaccount
0
63
0から始めるセキュリティ
ryoaccount
0
120
エンジニアが考えるUI/UX
ryoaccount
0
17
Other Decks in Technology
See All in Technology
ARIA Notifyについて
ryokatsuse
1
120
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
2
900
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
170
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
400
AI時代における技術的負債への取り組み
codenote
1
1.5k
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
130
レビューしきれない?それは「全て人力でのレビュー」だからではないでしょうか
amixedcolor
0
330
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
450
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
300
Practical TypeProf: Lessons from Analyzing Optcarrot
mame
0
340
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
120
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
78k
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
6.7k
Mind Mapping
helmedeiros
PRO
1
150
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
190
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
100
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
130
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
55k
The SEO Collaboration Effect
kristinabergwall1
1
420
Marketing to machines
jonoalderson
1
5.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
Date Your Footer Here 1 S3は問答無用で非公開!! Keep S3 Private !!
Security.any #07 がんばったセキュリティLT 2025.11.25 RYO
自己紹介 • 某人材系Webサービスを展開する企業にて、主にイン フラ(AWS)のセキュリティ対策や脆弱性管理を1人で従 事 • どうすればDevSecOpsを組織に浸透させられるか日々 悩み中 • CTFとか社内でやってみたり...
• CISSPと英語勉強中... 2 RYO
今日話すこと Today’s Topic
Date Your Footer Here 4 今日話すこと
Amazon S3 ? Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラ
ビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオ ブジェクトストレージサービスです。 あらゆる規模や業界のお客様が、Amazon S3 を使用して、データレイク、 ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカ イブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析な ど、広範なユースケースのデータを容量にかかわらず、保存して保護する ことができます。 出典: ユーザガイド Amazon S3 とは
Amazon S3 ? Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラ
ビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオ ブジェクトストレージサービスです。 あらゆる規模や業界のお客様が、Amazon S3 を使用して、データレイク、 ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカ イブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析な ど、広範なユースケースのデータを容量にかかわらず、保存して保護する ことができます。 出典: ユーザガイド Amazon S3 とは Google Drive iCloud DropBox みたいなもんか
伝えたいこと I want to say … 7
伝えたいこと • ブロックパブリックアクセス設定をONにせよ • バケットポリシーはAllowステートメントだけで構成せよ
伝えたいこと • ブロックパブリックアクセス設定をONにせよ • バケットポリシーはAllowステートメントだけで構成せよ ブロックパブリック アクセス設定?
ブロックパブリックアクセス設定とは? AWS S3バケットやオブジェクトへの意図しない公開を防ぐためのセキュリ ティ機能です これを有効にすると、パブリックアクセスを許可するルールが設定されてい ても、強制的にそのルールを遮断できます 2023/04から新規作成されるS3バケットはブロックパブリックアクセス設定 がデフォルトで ONとなった なので、基本的にはONにしておくのが推奨(AWS公式も推奨)
(ちなみに..)公開したい場合は? Webサイトに掲載する画像や動画などの公開する前提のファイルを格納 する場合、S3バケットを公開してもよい...?🤔
(ちなみに..)公開したい場合は? Webサイトに掲載する画像や動画などの公開する前提のファイルを格納 する場合、S3バケットを公開してもよい...?🤔 答えは「No」で、WAFとCloudFront(CDN)をS3バケットの前に配置するのが 安全。 WAF ・DDoS対策 ・悪意のあるアクセスのブロック CloudFront ・レスポンス(応答速度)の改善
・データ転送量の抑制 → コスト削減
伝えたいこと • ブロックパブリックアクセス設定をONにせよ • バケットポリシーはAllowステートメントだけで構成せよ バケット ポリシー?
バケットポリシーとは? S3バケットに対するアクセスルールを定義する設定ファイルです。 「誰が」「どんな操作を」「どんな条件で」実行できるかをJSON形式で書きま す。 アクセスできる条件(Allow)とアクセスできない条件(Deny)を記載できる が、基本はAllowのみで構成することを推奨します。 理由はアクセス制御の単純化とDenyは強力過ぎる場合があるため。
Denyは誰もアクセスできない原因に... アクセスできない条件(Deny)は設定を間違えると、S3バケットの所有者で ある自分自身ですらアクセスできなくなる。 { "Effect": "Deny", "Principal": "*", "Action": "s3:*",
"Resource": [ "arn:aws:s3:::example-bucket","arn:aws:s3:::example-bucket/*" ], "Condition": { "StringNotLike": { "aws:userId": ["arn:aws:iam::123456789012:role/MyRole"] } } } 設定を間違えたバケットポリシーの例 (どこを間違えているかわかりますか?)
Denyは誰もアクセスできない原因に... アクセスできない条件(Deny)は設定を間違えると、S3バケットの所有者で ある自分自身ですらアクセスできなくなる。 { "Effect": "Deny", "Principal": "*", "Action": "s3:*",
"Resource": [ "arn:aws:s3:::example-bucket","arn:aws:s3:::example-bucket/*" ], "Condition": { "StringNotLike": { "aws:userId": ["arn:aws:iam::123456789012:role/MyRole"] } } } 内部的な一意のID(例:AROAXO2RZRXXXXXX:*)を指 定すべきなのに、ARNを設定している。 結果として、誰もアクセスできなくなる可能性がある。
今年がんばった こと Thank you for your hard work
今年がんばったこと 18 公開されてしまっているS3バケットに ブロックパブリックアクセス設定をONにする
案外、公開されがち? 19 • 新規作成されるS3バケットがデフォルトでブロックパブリックアクセス 設定がONとなったのは、2023/04から • それ以前から開発されているシステムでは案外、公開された状態で 運用してしまっている(可能性がある)😨
なぜ、がんばる羽目になったか? • 既存のアクセス経路が不透明 • 誰が・いつ・どこから・どのオブジェクトをどの方法でアクセスしているか完全 に把握するのはそこそこ難しい • 残念ながらS3サーバアクセスログを取得していなかった • 各所に調整が必要
• アプリケーションだけでなく、他部署・協力会社・利用しているSaaSなどいろい ろなところからパブリックアクセスしていた • 非公開にするには各所に影響があり、説明して対応してもらう必要があった • アクセス制御の知識が必要 • Amazon Simple Storage Serviceという名前の割に、IAMポリシー・バケットポリ シー・ACL・所有権などアクセスを制御する仕組みが複雑
苦労したこと It’s too difficult … 21
誰がいつアクセスしているかわからない • 状況 • S3バケットにはDBのテーブル定義書が保管されている • 開発者に聞いても業務で全く使ってないらしい... • じゃあ不要か聞いたらわからないと言われ... •
対応 • CloudTrail でアクセス履歴を確認する • 誰が、いつ、どのIPから、どのオブジェクトにアクセスしたか? • 関係者を調べる • 開発者以外でテーブル定義書を必要とする人は? • 結局、データアナリストの分析のための資料としてごく稀に参照してい たことがわかった • CloudFrontを立てて、そちらからアクセスするように変更 社内事情に関する内容のため非公開 <(_ _)>
• 状況 • S3バケットにはDBのテーブル定義書が保管されている • 開発者に聞いても業務で全く使ってないらしい... • じゃあ不要か聞いたらわからないと言われ... • 対応
• CloudTrail でアクセス履歴を確認する • 誰が、いつ、どのIPから、どのオブジェクトにアクセスしたか? • 関係者を調べる • 開発者以外でテーブル定義書を必要とする人は? • 結局、データアナリストの分析のための資料としてごく稀に参照してい たことがわかった • CloudFrontを立てて、そちらからアクセスするように変更 誰がいつアクセスしているかわからない 社内事情に関する内容のため非公開 <(_ _)> ADRを書くとか IaCにコメントを残 すとか 用途を記す習慣が あればいいのに...
業務に影響するから無理と言われる • 状況 • S3バケットにはアプリケーションだけでなく、社内の別部署や外 部の協力会社からもアクセスがある • 開発者にS3バケットを非公開にできないか相談したら、業務影響 が大きいから無理と言われる... •
対応 • 非公開にする必要性を訴える • 発生するリスクをしっかり伝えて、やる意義・やる価値の認識を合わ せる • 具体的な対応手順を伝える • 改善後のAWSの構成図を作ったり、IaCを代わりに実装したり、開発者 の手間をできるだけ減らす 社内事情に関する内容のため非公開 <(_ _)>
• 状況 • S3バケットにはアプリケーションだけでなく、社内の別部署や外 部の協力会社からもアクセスがある • 開発者にS3バケットを非公開にできないか相談したら、業務影響 が大きいから無理と言われる... • 対応
• 非公開にする必要性を訴える • 発生するリスクをしっかり伝えて、やる意義・やる価値の認識を合わ せる • 具体的な対応手順を伝える • 改善後のAWSの構成図を作ったり、IaCを代わりに実装したり、開発者 の手間をできるだけ減らす 業務に影響するから無理と言われる 社内事情に関する内容のため非公開 <(_ _)> 業務に影響するな ら尚更、公開した らダメでは...?
アクセス制御の理解が難しい 突然ですが、クイズです。 次の状況でBさんはファイルにアクセスできるか?できないか? • AさんがS3バケットにファイルをアップロードします • Bさんがファイルにアクセスを試みます • BさんはS3オブジェクトへのアクセス権(s3:GetObject)を持っています •
バケットポリシーでは誰からのアクセスも許可(Allow)しています • オブジェクト所有者はオブジェクトライターであるAさんです • ACLはオブジェクト所有者(AWSアカウント)に読み取り権限が与えられています Aさん Bさん GetObject
正解:ファイルにアクセスできない 解説 Bさんの権限(IAMロール)とバケットポリシーではアクセスが許可されている しかし、オブジェクトの所有者である Aさんが、オブジェクトレベルでアクセス許可を ACLで付与し ていない場合、 Bさんは AccessDenied エラーになる
バケットポリシーと ACLの両方で許可しなければアクセスできない ややこしいので ACLは最初から無効にしておくとよい( AWSもACLを非推奨としている) オブジェクト所有者を「常にバケット所有者」にすれば ACLは無効にできる Aさん Bさん GetObject
アクセス制御の理解が難しい ver2 もう1問、クイズです。 次の状況でBさんはファイルにアクセスできるか?できないか? • AさんがS3バケットにファイルをアップロードします • Bさんがファイルにアクセスを試みます • BさんはS3バケットへのアクセス権(s3:GetObject)を持っています
• バケットポリシーでは社内IP以外からのアクセスを拒否(Deny)します • Bさんは社内にいます • ACLは無効にしています Aさん Bさん GetObject
正解:ファイルにアクセスできない 解説 社内IP以外からのアクセスは拒否(Deny)しているからと言って、社内IPからのアクセスが 許可(Allow)されるわけではない アクセスするには明示的なBさんへの許可(Allow)の条件が記載されている必要があり、 それが無ければBさんは AccessDenied エラーになる バケットポリシーではAllowステートメントのみで構成した方がシンプル 許可(Allow)される条件に該当しない
= 拒否(Deny)される、という暗黙的な拒否が成立する Aさん Bさん GetObject
まとめ Summary
まとめ • ブロックパブリックアクセス設定は最初から ONの状態でS3バケット を利用開始すべし • 運用が始まったら誰がいつアクセスしているか調査が面倒 • 後でONにするのはそこそこ手間がかかる •
誤って公開されないのでセキュリティ的にも安心 • アクセス権限管理はシンプルにすべし • バケットポリシーは極力、Allowステートメントで構成する • オブジェクト所有者を「バケット所有者」に固定しておくとACLを無効にできるの でよい
ご清聴ありがとう ございました Thank you for your attention !! Date Your
Footer Here 32
www.PresentationGO.com The free PowerPoint and Google Slides template library Designed
with by