Slide 1

Slide 1 text

ログに対する誤解と ベストプラクティス Security.any #01 セキュリティあるあるLT 2024.11.19 松浪 亮

Slide 2

Slide 2 text

| © 2024 Levtech Co., Ltd. 2 レバテック開発部 DevOps推進グループ 認証基盤チーム 松浪 亮 RYO MATSUNAMI レバテックでは主に認証基盤(レバテックID)の開発に従事。 どうすればDevSecOpsを組織に浸透させられるか日々悩み中。 プライベートでは2人の子育てに従事。 あと、Vue.jp Japan User Group で Vue Fes の運営のお手伝いなんかも時々。

Slide 3

Slide 3 text

今日話したいこと

Slide 4

Slide 4 text

今日話したいこと ログに余分な情報を出力しないでね

Slide 5

Slide 5 text

| © 2024 Levtech Co., Ltd. 5 ログ(log)とは、起こった出来事についての情報などを一定の形式で時 系列に記録・蓄積したデータのこと。“log” の原義は船の航海記録(日 誌)。 ある機器やソフトウェア、システムについて、その起動や停止、エラー や障害の発生、利用者による操作や設定の変更、外部との通信など、稼 働中に起こった出来事の内容を日時などとともに時系列に記録したもの をログという。稼働状況の確認や集計、不具合の原因調査などのために よく参照される。 ログとは? ※出典: IT用語辞典 e-Words

Slide 6

Slide 6 text

| © 2024 Levtech Co., Ltd. 6 ログ(log)とは、起こった出来事についての情報などを一定の形式で時 系列に記録・蓄積したデータのこと。“log” の原義は船の航海記録(日 誌)。 ある機器やソフトウェア、システムについて、その起動や停止、エラー や障害の発生、利用者による操作や設定の変更、外部との通信など、稼 働中に起こった出来事の内容を日時などとともに時系列に記録したもの をログという。稼働状況の確認や集計、不具合の原因調査などのために よく参照される。 ログとは? ※出典: IT用語辞典 e-Words

Slide 7

Slide 7 text

| © 2024 Levtech Co., Ltd. 7 誤解 01 機能に影響しないしテキトーで大丈夫 誤解 02 外部から見られることはない 誤解 03 誤解されがちなこと とりあえず全部ログに出しておけばいい

Slide 8

Slide 8 text

| © 2024 Levtech Co., Ltd. 8 誤解 01 機能に影響しないしテキトーで大丈夫 誤解 02 外部から見られることはない 誤解 03 誤解されがちなこと とりあえず全部ログに出しておけばいい

Slide 9

Slide 9 text

| © 2024 Levtech Co., Ltd. 9 ● 受け取ったリクエストや処理結果のレスポンスの内容、DBから取得 した情報を全部ログに出す ● ログレベルをDEBUGにしておけば自動でいろいろ出力してくれるから何か あった時に調査がラク 誤解1 とりあえず全部ログに出しておけばいい

Slide 10

Slide 10 text

| © 2024 Levtech Co., Ltd. 10 ● 大概のシステムでは個人情報を扱っている ○ 例: 氏名、住所、電話番号、メールアドレス ● ログインや決済などの機能ではユーザの機密情報を扱う ○ 例: ログインパスワード、クレジットカードの番号 ● 何でもログに出力させているとこれらの情報も出力されてしまう 個人情報や機密情報が出力されるリスクがある

Slide 11

Slide 11 text

| © 2024 Levtech Co., Ltd. 11 ● 処理名と対象が誰かわかれば大概は問題ない ○ 例: logger.info({name: “registerCreditInfo”, user.id: request.user.id}); ○ user.idのユーザがregisterCreditInfoという処理を実行したと伝わればOK、クレジット カードの番号まで出力する必要はない ● 個人情報は出力する前にマスク処理を挟む ○ 例: const mask = (value?: string) => { return value?.replace(/./g, "*") ?? “” } ○ *に置き換える関数を用意してマスクする 解決策 必要な分だけログに出力する

Slide 12

Slide 12 text

| © 2024 Levtech Co., Ltd. 12 誤解 01 機能に影響しないしテキトーで大丈夫 誤解 02 外部から見られることはない 誤解 03 誤解されがちなこと とりあえず全部ログに出しておけばいい

Slide 13

Slide 13 text

| © 2024 Levtech Co., Ltd. 13 ● 機能に影響しないのでわざわざルールは設けなくてもいい ● どのようなログをいつ出力するかは開発者が好きに決めてもいい ● ログを確認せずに機能をリリースした(💬 けど、機能はちゃんと動 いていたしテストもしたし、まぁいいか) 誤解2 機能に影響しないしテキトーで大丈夫

Slide 14

Slide 14 text

| © 2024 Levtech Co., Ltd. 14 ● 明らかに想定外な事象のはずなのに、INFOで出力されていたから検 知できなかった... ● システムエラーが発生した!けど、ログを出力していなかったから どこで発生したのかわからない... ● ブラウザの開発者ツールを開くと、Consoleに何か色々と出ている んだけど... ルールがないとログが無法地帯に...

Slide 15

Slide 15 text

| © 2024 Levtech Co., Ltd. 15 ● ログレベルごとに用途と出力タイミングを定義する ○ DEBUGは開発環境でのみ出力可能とする ○ ERRORはcatchや例外をスローする時にスタックトレースも含めて出力する ○ INFOは処理やトランザクションの開始と終了のタイミングで出力する ● console.log()を実装したままリリースしないように ○ クライアント側にログを残すとセキュリティ的な脆弱性に繋がる可能性がある ○ フロントエンドではログを出力するのはSSRの時に留める 解決策 ログを設計する

Slide 16

Slide 16 text

| © 2024 Levtech Co., Ltd. 16 誤解 01 機能に影響しないしテキトーで大丈夫 誤解 02 外部から見られることはない 誤解 03 誤解されがちなこと とりあえず全部ログに出しておけばいい

Slide 17

Slide 17 text

| © 2024 Levtech Co., Ltd. 17 誤解3 外部から見られることはない ● 社内の人しかサーバログを見ることができないから個人情報を出力 しても問題ない ● ログローテーションさせているから個人情報を出力しても問題ない

Slide 18

Slide 18 text

| © 2024 Levtech Co., Ltd. 18 情報は社内の人によって外部に流出することもある ● むしろ、ほとんどの情報漏洩は内部の犯行である(不注意や故意に よる流出) ○ 例1: ベネッセ、業務委託先の社員が約3,504万件分の情報を名簿業者へ売却 ○ 例2: 東急リバブル、元従業員が顧客情報を不正に持ち出し同業他社で利用 ○ (※上記の事例はログではなくいずれもDBから情報を持ち出したことによる流出) ● DBに暗号化されているデータやそもそもDBに保存されないデータで あれば、ログから情報を持ち出される可能性は十分ある

Slide 19

Slide 19 text

| © 2024 Levtech Co., Ltd. 19 解決策 内部だからこそセキュリティ対策が必要 ● 必要最小限の人だけがアクセスできるように、ログファイルへのア クセス権限を制限しておく ○ 例: 派遣社員・インターン・業務委任者はアクセス不可にする ○ 例: 組織のマネージャー、チームのリーダーのみアクセス可能にする ● セキュリティに関する話題に日頃から触れておくことが大事 ○ 情報漏洩などの話題に触れることで、他人事ではないことを理解する ○ 情報漏洩による損害額を知ることで、事の重大さを理解する ○ 結果としてセキュリティ意識の向上に繋がる

Slide 20

Slide 20 text

| © 2024 Levtech Co., Ltd. 20 誤解 01 機能に影響しないしテキトーで大丈夫 → ログを設計する 誤解 02 外部から見られることはない → 内部だからこそセキュリティ対策が必要 誤解 03 まとめ とりあえず全部ログに出しておけばいい → 必要な分だけログに出力する

Slide 21

Slide 21 text

宣伝

Slide 22

Slide 22 text

開発職向け会社紹介資料 プロダクトや開発組織についてご紹介しています。 https://speakerdeck.com/leverages/levtech-hui-she-shao-jie-zi-liao-enzi niazhi-xiang-ke レバテック開発部テックブログ 日々の開発におけるリアルをお届けしています! https://zenn.dev/p/levtech カジュアル面談フォーム 気軽にご応募ください!いろんなお話しましょう! https://hrmos.co/pages/leverages/jobs/A_c_00071

Slide 23

Slide 23 text

ご清聴ありがとうございました。