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
パスワード管理アプリのデータバックアップを自動化し、より堅固でセキュアな管理を目指している話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kf
September 14, 2022
Technology
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パスワード管理アプリのデータバックアップを自動化し、より堅固でセキュアな管理を目指している話
kf
September 14, 2022
Other Decks in Technology
See All in Technology
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
840
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
670
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
620
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
400
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
300
会社説明資料
persolserverworks
0
9.8k
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
300
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Designing for Timeless Needs
cassininazir
1
530
YesSQL, Process and Tooling at Scale
rocio
174
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
420
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The Limits of Empathy - UXLibs8
cassininazir
2
720
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
So, you think you're a good person
axbom
PRO
2
2.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Unsuck your backbone
ammeep
672
58k
Transcript
パスワード管理アプリのデータバックアップを自動化し より堅固でセキュアな管理を目指している話 by kenta fujimoto
自己紹介 CROOZ SHOPLIST 株式会社 所属 福岡(7年) → 関東(2年目) 趣味:アイドルヲタク、フェス参戦など 最近は図書館巡りに没頭
Kenta Twitter: https://twitter.com/kenta_f_2020
皆さんは普段、 パスワード管理アプリ 何を使用していますか?
None
私は Bitwarden を 使っています
・暗号化された保管庫にウェブサイトの資格情報などを保存する OSS のパスワードマネージャー ・ソースは以下で公開されている。 https://github.com/bitwarden ・主要な機能は全て無料で使える。 BitWardenって何?
BitWardenのデータバックアップ (自動化前)
・BitwardenのCLIを使用し ローカルPCへ手動でバックアップ (毎月末やっていた) ・本当はクラウドに上げるなど したかったがセキュリティ的な 懸念を持っていた BitWardenのデータバックアップ(自動化前)
そんな中、とある悲劇が・・・
・自宅のデータ保管用NASが 異音と共に死んでしまう ・バックアップは別にとっていたが 以降、ローカルで保存することの 恐怖に怯えてしまう 自宅のデータ保管用NASが異音と共に・・・
それならいっそ、バックアップファイルを クラウドに上げる所まで自動化したい...!!
さきほどのクラウドにあげる懸念の話...
・Bitwarden CLI Bitwardenのバックアップの自分的要件 クラウドに上げれない懸念とは BitwardenのCLIでのエクスポート機能は 「 生のCSV形式およびJSON形式 」 のファイル形式でしか落とせない。
None
全部丸見え じゃないか
ということで・・・ バックアップの自分的要件を整理
・Bitwarden CLIからエクスポートする機能は今まで通り活用 ・CSVおよびJSONでエクスポートしたデータはZipファイルに固める ・Zipに固める際はランダムパスワード(英数記号128文字)で暗号化 (暗号 化方式は強度が高い”AES-256”方式を使用) ・ZipファイルはAWS S3へアップロード ・ZipファイルのパスワードはAWS DynamoDBに保管。 ・GitHub
Actionsを利用し、毎月1日に定期バックアップ実行 Bitwardenのバックアップの自分的要件
構成イメージ
なぜ DynamoDB? 構成についての落としどころ → 単純に NoSQL に触れてみたかったから。 → あとRDBでインスタンスを建てるより コストが掛からなかったから。
(今回の使用用途では、実質0円。)
構成についての落としどころ → これは単純に自己満足の世界、精神衛生上の施しです。 ウイルス対策ソフトの検知対象にできないなど 懸念点があることは理解しておりますが、 今回は触れないことにします。 (
PPAP (セキュリティ) - Wikipedia ) パスワード付きZIPファイルはそもそもセキュリティ的にどうなの?
None
None
GitHub Actionsについて (.github/workflows/ci.yml) name: CI on: push: branches: ["master"] workflow_dispatch:
schedule: - cron: "0 16 * * *" jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # BitWarden エクスポート処理 - name: BitWarden Vault Export id: bw-export run: docker compose run --rm bw sh /app/bw-export.sh env: BW_MAIL: ${{secrets.BW_MAIL}} BW_PASS_ENCRYPTED: ${{secrets.BW_PASS_ENCRYPTED}} BW_CLIENTID: ${{secrets.BW_CLIENTID}} BW_CLIENTSECRET: ${{secrets.BW_CLIENTSECRET}} AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} ・GitHub Actionsの CI/CD パイプライン実行ファイル ・crontabも指定できる! (毎日UTC16時 (=JST 深夜1時) に実行) (安定したら毎月1日へ変更予定) ・秘密鍵などの秘匿情報は GitHub Actions Secretsにて管理
パイプライン実行ログ ・出力した実行ログが そのままActionsの画面内 で確認できるので便利だ なぁと感じました。 ・実行完了後の処理も カスタマイズできるため、 「バックアップ結果をLINEに 通知」みたいな事も出来そう。
バックアップ保存結果 AWS S3 S3には今回バックアップした ZIPファイルが保存された!!
バックアップ保存結果 AWS DynamoDB DynamoDBにはファイル名と パスワードが保存された!!
バックアップ保存結果 S3からZipファイルを落として DynamoDBに保存したパスワードで解凍する 問題なく解凍できた!
まとめ・所感 ・RDB出身者としてはNoSQLの扱い方が難しかったです。 (今回のようなごく簡単なプログラムならまだしも、業務で本格的にDB設計 しようとするとテーブル設計を考え抜かないといけないなと感じました。) 参考: DynamoDB の設計について考えてみる。 - Qiita ・Github
Actionsを初めて使用してみて、トリガーの豊富さや実行内容の カスタマイズ性に驚きました。もっといろんなことが出来そうなので、 この機会にもっとCI/CDについて深く学んでいきたいなと感じました。
最後にひとつ余談・・・
(余談) このLTを作っている最中に・・・ ・実はこのLTを作っている最中の 9/11(日曜) に Bitwarden CLIのログイン機構に機能改修が入り、 ログインできずにバックアップがコケてしまうように・・・ 自動化による時間効率化とは裏腹にメンテナンスにかかる手間・時間を考えると 自動化するべきかどうかの判断
は、思いの外難しいなと感じました。 → それに対応してバックアップシェルも急遽修正を入れながら対応。
以上になります。 ご清聴ありがとうございました!