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
シークレットを漏らしてしまった話 / secret-key-exposed
Search
pep299
June 24, 2022
Technology
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
シークレットを漏らしてしまった話 / secret-key-exposed
pep299
June 24, 2022
More Decks by pep299
See All by pep299
なるべく自動化頑張ったLINE BOT on AWS
pep299
0
110
Playwright for PythonではじめるE2Eテスト / Lets start e2e-test with playwright for python
pep299
0
1.3k
プレイングマネージャーの葛藤 / The Conflict of a Playing Manager
pep299
1
3.5k
will・canマトリクスで自己分析してみた / Self-analysis with will-can matrix
pep299
0
630
そうだ Firebase Remote Config、使おう / let use Firebase Remote Config
pep299
0
110
Other Decks in Technology
See All in Technology
USB PDを使ってスマホを労わりたい
raspython3
0
160
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
y_sera15
0
120
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
140
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
310
Essential architectural thinking (revised edition)
ufried
0
110
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
180
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.8k
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
320
大型犬好きによるPugの紹介
yamanoku
1
150
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
130
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.5k
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Speed Design
sergeychernyshev
33
2.2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
360
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
940
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
The Language of Interfaces
destraynor
162
27k
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