資料ダウンロードはこちら - NTTデータイントラマート

クックブックライトニングトーク(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