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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ryoAccount
November 26, 2025
Technology
9
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
210
Code Reliability
ryoaccount
0
5
XSS?なんですかそれ?
ryoaccount
0
53
0から始めるセキュリティ
ryoaccount
0
110
エンジニアが考えるUI/UX
ryoaccount
0
6
Other Decks in Technology
See All in Technology
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
0
490
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
33
16k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
140
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
250
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
120
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
410
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
160
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
250
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
130
SSoT(Single Source of Truth)で「壊して再生」する設計
kawauso
2
400
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.8k
Amusing Abliteration
ianozsvald
0
150
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
330
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
What's in a price? How to price your products and services
michaelherold
247
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
WENDY [Excerpt]
tessaabrams
9
37k
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