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
Naka Sho
September 15, 2025
51
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
ローカルLLMで自動レビューの仕組み
shogonakao
0
20
無料で使える「LM Studio」でローカルLLM入門
shogonakao
0
130
単体テストの精度を高めるための guideline
shogonakao
0
300
Javaはレガシーではない!
shogonakao
0
300
型安全性で考えること
shogonakao
0
32
コーディングエージェントと 筋トレ
shogonakao
0
89
SpringBootでAPI開発
shogonakao
0
180
エキサイトブログ刷新に向けて
shogonakao
0
140
【エキサイトブログリビルド】Spring Boot × MyBatis × FreeMarker を使って、データベースの接続先を安全に変更します。
shogonakao
1
900
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
180
BBQ
matthewcrist
89
10k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
260
Accessibility Awareness
sabderemane
1
150
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Building Adaptive Systems
keathley
44
3.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
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側で実装したほうがアプリケーションには優しいが、マスキング処理が複雑に プロジェクトの特性を考え、どちらを優先にするかを考えてください