クックブックライトニングトーク(1) 「知ってそうで、実は知らない Accel Platform」 株式会社 NTTデータイントラマート 開発本部 Resin ヘルス機能のご紹介 株式会社 NTTデータイントラマート 開発本部 大島 尚久 名前 大島 尚久 所属 開発本部 担当機能 Resin 基盤機能 3 ヘルス機能とは レポート機能 Watchdog 4 5 1 2 3 Resin サーバが自身の情報を定期的に収集 CPU負荷やヒープ領域の使用量 クライアントからのリクエスト数 など 収集したデータを内部データベースに蓄積 過去10日間分 /resin-data/ 蓄積された情報をもとに任意のアクションを実行 PDFレポートの出力 Resin サーバの再起動 6 ヘルスチェックとヘルスステータス CPUのチェック CPU使用率が95%以上である WARNING ヒープ領域のチェック GC実行後に空き領域を確保できない CRITICAL 7 ヘルスチェックとヘルスステータス スレッドのチェック デッドロックが検出された FATAL ヘルスシステムのチェック ヘルスチェックの失敗 CRITICAL 8 Resinサーバの再起動 再起動後にレポートを出力 各種ダンプの実行 ヒープダンプ、スレッドダンプなど コマンドラインの実行 OSに任意のコマンドラインを実行 9 health.xml <health:ActionSequence> <health:IfHealthCritical time="2m"/> <health:IfNotRecent time="30m"/> <health:FailSafeRestart timeout="10m"/> <health:DumpJmx/> <health:DumpThreads/> <health:ScoreboardReport/> <health:DumpHeap/> <health:DumpHeap hprof="true" hprof-path="..."/> <health:StartProfiler active-time="2m" wait="true"/> <health:Restart/> </health:ActionSequence> 10 health.xml <health:ActionSequence> <health:IfHealthCritical time="2m"/> <health:IfNotRecent time="30m"/> CRITICALが2分間継 続した場合 <health:FailSafeRestart timeout="10m"/> <health:DumpJmx/> <health:DumpThreads/> <health:ScoreboardReport/> <health:DumpHeap/> <health:DumpHeap hprof="true" hprof-path="..."/> <health:StartProfiler active-time="2m" wait="true"/> <health:Restart/> </health:ActionSequence> 11 health.xml <health:ActionSequence> <health:IfHealthCritical time="2m"/> <health:IfNotRecent time="30m"/> <health:FailSafeRestart timeout="10m"/> <health:DumpJmx/> <health:DumpThreads/> <health:ScoreboardReport/> <health:DumpHeap/> <health:DumpHeap hprof="true" hprof-path="..."/> <health:StartProfiler active-time="2m" wait="true"/> 各種ダンプを実行 <health:Restart/> </health:ActionSequence> 12 health.xml <health:ActionSequence> <health:IfHealthCritical time="2m"/> <health:IfNotRecent time="30m"/> <health:FailSafeRestart timeout="10m"/> <health:DumpJmx/> <health:DumpThreads/> <health:ScoreboardReport/> <health:DumpHeap/> <health:DumpHeap hprof="true" hprof-path="..."/> <health:StartProfiler active-time="2m" wait="true"/> <health:Restart/> </health:ActionSequence> Resinの再起動を実行 13 14 PDFレポートの種類 Summary 指定した期間の集計 Snapshot ダンプを即時に実行しそのときの状態を出力 Restart 障害発生時や設定変更が検知されたときに自動出力 15 ヘルスチェックの集計をグラフ表示 16 Heap Dump 17 Thread Dump 18 19 Watchdog とは? Resinサーバを監視するプロセス ヘルスシステムに応じてサーバを再起動 独自の fail-safe 機能 Resinサーバが強制終了された ResinサーバにOutOfMemoryErrorが発生 内部データベースに障害が発生 (/resin-data) 20 21 1 Resin には障害に対策するためのヘルス機能が 備わっている 2 レポート機能を活用して障害に備える。 22 ViewCreatorを使い倒す 利用例を3つご紹介します NTTデータ イントラマート 開発本部 久我 翼 氏名 :久我 翼 所属 :開発本部 主な担当 :ViewCreator/TableMaintenance 好きなもの:コーヒーなど https://dev.intra-mart.jp/coffee-service/ 24 1 利用例その1 簡易的なgoogle アナリティクス 2 利用例その2 ソウルフードバンコクの注文数集計 3 利用例その3 intra-mart製品の開発状況を可視化してみる 25 利用例その1 社内のデータを見える化 簡易的なgoogle アナリティクス 27 前回のログイン時刻を表示するポートレットの作成方法 https://dev.intra-mart.jp/cookbook116892/ ログイン クライアント 環境情報 データベース 28 グラフ集計 ドリルダウン付きリスト リンク付きリスト データベース リスト集計 クロス集計 29 Mozilla/5.0 (Windows NT 6.1; W OW64) AppleWebKit/537.36 (KH TML, like Gecko) Chrome/52.0.27 43.116 Safari/537.36 利用OSが Windows8である 場合は「○」を返 却する計算式 30 最初のスライドのグラフは、出 力したCSVデータをエクセルで グラフ化したものです。 31 利用例その2 ソウルフードバンコクの注文数集計 社員が運営するタイ料理ランチケータリングサービス https://dev.intra-mart.jp/thailunch-cateringservice/ IM-FormaDesignerで 作成 データベース 33 34 35 利用例その3 intra-mart製品の開発状況を可視化 RedmineのテーブルをViewCreatorで集計 37 38 39 既存システムのデータをViewCreatorで 可視化してみませんか? ViewCreator for IM-Workflow 連携ガイド http://www.intra-mart.jp/document/library/ iap/public/im_workflow/im_workflow_viewcreator_guide/index.html 脆弱性についての対策と取り組み NTTデータイントラマート 開発本部 宮城 拓人 名前 宮城 拓人 所属 開発本部 担当機能 基盤機能(サービス、非同期、ジョブなど) テナント管理機能など 42 脆弱性の対策 XSS(クロスサイトスクリプティング) CSRF(クロスサイトリクエストフォージェリ) SQLインジェクション その他 弊社での取り組み 弊社での取り組み 43 XSS クロスサイトスクリプティング 44 XSSとは サイト間を横断して悪意のあるスクリプトを注入する攻撃 作り込むケース HTMLを作るときに外部からの入力値をそのまま利用している 考えられる被害 ユーザのセッションIDが盗まれてセッションハイジャックされる… 45 概要 HTMLを作るときに外部入力値を含める場合はエスケープする エスケープする方法 利用しているフレームワーク次第 EL式の関数が提供されているものが多い 46 無害化されている属性 47 公開情報 ・APIドキュメント 無害化マークについて すべての属性についているわけではない XSS対策で話していないこと タグの属性以外にも外部入力値を含めたい DOM based XSS 無害化されている属性 48 CSRF クロスサイトリクエストフォージェリー 49 CSRFとは 閲覧者の意図しないリクエストを送信させ、攻撃者の意図した処理 を実行させる攻撃 作り込むケース トークンのような秘密情報を受け渡ししていない 考えられる被害 攻撃者が用意したサイトのリンクを踏んだら、パスワードが変更さ れる… 50 概要 トークンを埋め込んでサーバ側で検証しよう トークンの埋め込み/検証する方法 利用しているフレームワーク次第 トークンの埋め込み/検証するURLとかパスを設定して… 51 公開情報 ・APIドキュメント ・プログラミングガイド ・クックブック 52 SQLインジェクション 53 SQLインジェクションとは アプリケーションが想定していないSQLを実行させることで、データ ベースを不正に操作する攻撃 作り込むケース プリペアードステートメントを利用せずにSQLを実行している 考えられる被害 すべてのユーザのパスワードが取得される… 54 概要 プリペアードステートメントを利用して、外部入力値はパラメータ として渡す プリペアードステートメントの利用方法 利用しているO/Rマッパー次第 55 公開情報 ・APIドキュメント ・プログラミングガイド 56 公開情報 ・プログラミングガイド 57 その他 58 ディレクトリトラバーサル オープンリダイレクタ Cookieの属性不備 クリックジャッキング HTTPヘッダインジェクション…etc 59 弊社での取り組み 60 1 脆弱性診断ツールを利用 開発プロセスに組み込んで、必ず検査 公開情報 intra-martで運用する場合のセキュリティの考え方 61 2 セキュリティ関連の情報発信サイトの監視 3 サードパーティライブラリのリリース監視 4 パートナー様からのフィードバック 外部の有償の診断サービスからのレポート 62 まとめ 63 対策 脆弱性対策を助ける機能が提供されている 検出 診断ツールや情報発信サイトなどを活用しよう 64 ご静聴 ありがとうございました 65
© Copyright 2024 Paperzz