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
シークレットを漏らしてしまった話 / secret-key-exposed
Search
pep299
June 24, 2022
Technology
0
48
シークレットを漏らしてしまった話 / secret-key-exposed
pep299
June 24, 2022
Tweet
Share
More Decks by pep299
See All by pep299
なるべく自動化頑張ったLINE BOT on AWS
pep299
0
80
Playwright for PythonではじめるE2Eテスト / Lets start e2e-test with playwright for python
pep299
0
860
プレイングマネージャーの葛藤 / The Conflict of a Playing Manager
pep299
1
2.8k
will・canマトリクスで自己分析してみた / Self-analysis with will-can matrix
pep299
0
350
そうだ Firebase Remote Config、使おう / let use Firebase Remote Config
pep299
0
63
Other Decks in Technology
See All in Technology
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
210
The Role of Developer Relations in AI Product Success.
giftojabu1
1
150
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
170
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
220
Taming you application's environments
salaboy
0
200
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
930
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
880
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.4k
The Rise of LLMOps
asei
9
1.8k
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Bash Introduction
62gerente
608
210k
Code Review Best Practice
trishagee
64
17k
Adopting Sorbet at Scale
ufuk
73
9.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
The Cult of Friendly URLs
andyhume
78
6k
Automating Front-end Workflow
addyosmani
1366
200k
Designing for Performance
lara
604
68k
How to Ace a Technical Interview
jacobian
276
23k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Transcript
「シークレットを漏らしてしまった話」 ぺぺ@Pep299 1
自己紹介 ぺぺ@Pep299 https://twitter.com/Pep299 情報系学士卒 エンジニア歴7年目 SES(金融系)-> フリーランス -> Web系受託 ->
Web系自社サ Open Source Conference 2021 Kyoto 登壇 東京都 新型コロナウイルス感染症対策サイトのコントリビュート ゲーム(Dead By Daylight、Among Us、ボードゲーム)・ブレイクダンス 2
3行まとめ LINEとTwitter APIのシークレットをうっかりGitHubのPublicリポにpush 一次対応と再発防止策を共有 業務中ではなく趣味開発中の話、でも再現性ありそう リポジトリ: https://github.com/pep299/dbd_line_bot 3
ある日のこと ピロン「おや?GitHubからメールが…GitGuardian?なんかつよそう」 ? 4
こんなお達しが 「シークレットを検知したやで」オーマイガー 5
何が起きた? IaCのテスト実装時に考慮が足りてなかった AWS CDKのスナップショットテストをするため、修正前のCloudFormation Templateを 保持して置く必要が そのTemplateに環境変数のvalueもそのまま埋め込まれる 環境変数ダダ漏れ状態でした . .
"Environment": Object { "Variables": Object { "ENV_NAME": "prod", "LINE_CHANNEL_ACCESS_TOKEN": "+RpdU3yDW61DFGfEhltJ02zjYKX65bx1R..." . . 6
一次対応 シークレットの無効化、再発行 gitの歴史改変(commitをresetでなかったことにしてforce push) スナップショットテストの値はマスク replace(/^[A-Za-z0-9\+=/]{172}$|^[A-Za-z0-9]{50}$|^[A-Za-z0-9\-] {50}$|^[A-Za-z0-9]{45}$/, "[SEC REMOVED]") .
. "Environment": Object { "Variables": Object { "ENV_NAME": "prod", "LINE_CHANNEL_ACCESS_TOKEN": [SEC REMOVED] . . 7
再発防止策 環境変数にシークレットを埋め込まない CFnベストプラクティスにも記載が Secret Manager や System Manager のパラメータストアから都度取得 今回TwitterやLINEの課金が発生しないAPIシークレットだったが、AWSのアクセスキー
とかが漏れたら相当やばい IAM Role や IAM Policy 見直してちゃんと権限管理 CIにはアクセスキーを渡さずに OIDC で一時的なトークンを発行し認証 忘れた頃にやらかしそうなので、precommit で secret 検知 (まだやれてない…) 8
イメージ Before GitHub Actions CFn Template AWS Lambda クレデンシャル After
GitHub Actions CFn Template AWS Lambda AWS STS AWS System Manager 9
おわりに LINEとTwitter APIのシークレットをうっかりGitHubのPublicリポにpush そんな漏らし方があったのか…ということで共有 環境変数は万能ではない そもそも永続的なキーをなるべく避けよう 一次対応と再発防止策を共有 今回のケースを踏む人は少なそうだが、 何事もやらかした時の切り戻しだけは検討しておくこと 業務中ではなく趣味開発中の話、でも業務でも再現性ありそう
趣味開発だけども雑にやりすぎず締める所は締める レビュー通すとかベストプラクティスを守るとかはしておく 10