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
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
MCPで決済に楽にする
mu7889yoon
0
160
Kiro Meetup #7 Kiro アップデート (2025/12/15〜2026/3/20)
katzueno
2
270
OPENLOGI Company Profile for engineer
hr01
1
61k
互換性のある(らしい)DBへの移行など考えるにあたってたいへんざっくり
sejima
PRO
0
470
OCI技術資料 : 証明書サービス概要
ocise
1
7.1k
Microsoft Fabricで考える非構造データのAI活用
ryomaru0825
0
540
Move Fast and Break Things: 10 in 20
ramimac
0
100
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
410
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
120
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
870
40代からのアウトプット ― 経験は価値ある学びに変わる / 20260404 Naoki Takahashi
shift_evolve
PRO
2
430
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.6k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
170
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
170
How to make the Groovebox
asonas
2
2.1k
Raft: Consensus for Rubyists
vanstee
141
7.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
230
The Limits of Empathy - UXLibs8
cassininazir
1
280
Joys of Absence: A Defence of Solitary Play
codingconduct
1
330
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
30 Presentation Tips
portentint
PRO
1
260
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