Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アプリケーションログをs3に転送するとき個人情報気をつけてますか?
Search
Naka Sho
September 15, 2025
54
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリケーションログをs3に転送するとき個人情報気をつけてますか?
アプリケーションログをs3に転送するとき個人情報気をつけてますか?
Naka Sho
September 15, 2025
More Decks by Naka Sho
See All by Naka Sho
claudeをサブドライバーに<br>システム移行した体験
shogonakao
0
150
ローカルLLMで自動レビューの仕組み
shogonakao
0
48
無料で使える「LM Studio」でローカルLLM入門
shogonakao
0
160
単体テストの精度を高めるための guideline
shogonakao
0
330
Javaはレガシーではない!
shogonakao
0
450
型安全性で考えること
shogonakao
0
37
コーディングエージェントと 筋トレ
shogonakao
0
93
SpringBootでAPI開発
shogonakao
0
180
エキサイトブログ刷新に向けて
shogonakao
0
150
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Prompt Engineering for Job Search
mfonobong
0
450
BBQ
matthewcrist
89
10k
Designing for humans not robots
tammielis
254
26k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
We Are The Robots
honzajavorek
0
370
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Designing Experiences People Love
moore
143
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Transcript
アプリケーションログをs3に転送 するとき個人情報気をつけてます か? 中尾正剛 https://x.com/web_shogo_nakao
はじめに 本日話すこと Amazon S3 Tables データレイクのスケーリングに合わせてクエリのパフォーマンスとコストを最適化 Amazon S3 Tables は、Apache
Iceberg サポートが組み込まれた初めてのクラウドオブジェ クトストアを提供し、表形式データの大規模な保存を効率的に行えるようにします。
はじめに 本日話すこと Amazon S3 は高い耐久性と可用性、低コストで様々なサービスと連携できます。 データの重要性が高まってきました。 S3にログをどんどん転送していこう!! っと考えていませんか?
はじめに 本日話すこと アップロードしているデータ、中身は安全ですか?
目次 Spring Boot + fluentbitを使ってS3に転送する構成 01 02 03 04 Spring
Bootでマスキング fluentbitでマスキング まとめ
FireLens 2か月 無制限 S3のほうがコストが 安い&gzipで保存& athenaでクエリライ クにログ検索 Spring Boot +
fluentbitを使ってS3に転送する構成 障害対応用 緊急で必要あるログ 概要
Spring Boot + fluentbitを使ってS3に転送する構成 fluent-bit設定 [OUTPUT] Name s3 Match springboot.*
Bucket fluent-bit-logs Region us-east-1 Endpoint http://minio:9000 S3_Key_Format /logs/springboot/%Y-%m-%d/%H-%M-%S-$UUID.log Store_dir /tmp/fluent-bit/s3 Use_put_object On compression gzip Auto_Retry_Requests true
Spring Boot + fluentbitを使ってS3に転送する構成 特徴
これはダメでしょう!!! Spring Boot + fluentbitを使ってS3に転送する構成 中身 INFO Method: UserController.register(..) |
Request: {"username":"john_doe","password":"1234"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"1234"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"1234"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"1234"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"}
Spring Boot + fluentbitを使ってS3に転送する構成 近年、個人情報漏洩が多い
Spring Bootでマスキング AOP public class LoggingAspect { private static final
Logger logger = LoggerFactory.getLogger(LoggingAspect.class); private final ObjectMapper objectMapper = new ObjectMapper(); @Around("execution(* com.example..*.*(..))") public Object logAndMask(ProceedingJoinPoint joinPoint) throws Throwable { Object[] args = joinPoint.getArgs(); String maskedArgs = maskSensitiveData(args); logger.info("Method: {} | Request: {}", joinPoint.getSignature().toShortString(), maskedArgs); return joinPoint.proceed(); }
Spring Bootでマスキング AOP private String maskSensitiveData(Object data) { if (data
== null) return "null"; try { String json = objectMapper.writeValueAsString(data); ObjectNode jsonNode = (ObjectNode) objectMapper.readTree(json); if (jsonNode.has("password")) { jsonNode.put("password", "****"); } return objectMapper.writeValueAsString(jsonNode); } catch (JsonProcessingException e) { return data.toString(); } }
Spring Bootでマスキング 中身 INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO
Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"}
fluentbitでマスキング Lua スクリプトを使用してマスキング function mask_sensitive_data(tag, timestamp, record) -- マスキング対象のキー local
keys_to_mask = {"password"} for _, key in ipairs(keys_to_mask) do if record[key] ~= nil then record[key] = "****" end end return 1, timestamp, record end
fluentbitでマスキング fluent-bit設定 [FILTER] Name lua Match * script /etc/fluent-bit/mask.lua call
mask_sensitive_data
Spring Bootでマスキング 中身 INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO
Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"} INFO Method: UserController.register(..) | Request: {"username":"john_doe","password":"****"} INFO Method: UserController.register(..) | Response: {"message":"User registered successfully"}
まとめ アプリケーションログをs3に転送するとき 個人情報気をつけてますか? アプリケーション側で実装したほうが柔軟だがレスポンス速度が遅くなる fluentbit側で実装したほうがアプリケーションには優しいが、マスキング処理が複雑に プロジェクトの特性を考え、どちらを優先にするかを考えてください