ぐっすり眠るために必要なセキュリティ対策BEST5!!

#はじめに
こんにちは。そしておやすみなさい ( ˘ω˘)ｽﾔｧ　モチベーションクラウド開発チームの今野です。
※この記事は[モチベーションクラウドシリーズのアドベントカレンダー2020](https://qiita.com/advent-calendar/2020/mcs) 12日目の記事です。

12日目となる本記事では **セキュリティ対策** をひたすらシンプルに書き下していきます。「明日は我が身…」と不安で眠れない同志の皆さまに向け、安眠をテーマに [**MUSTなセキュリティ対策 ベスト5**](https://qiita.com/i_satoshi/private/ccc88e24f012feeaa74e#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E5%AF%BE%E7%AD%96-best5) を紹介するものです。

**読んでほしい人**

* 最低限のセキュリティ対策を知りたい若手エンジニアの人
* 顧客に対して、自社システムの安全性を説明できるようになりたい人
* 3分くらいなら付き合ってあげても良いよ！という人

#眠らせてくれないセキュリティ
昨今、セキュリティに関するニュースをよく見かけるようになり、エンジニアだけでなくシステムに関わるすべての人にとって不安で眠れない状況になってきました。それこそもう夢に見るくらい。発生件数では昨対比200%増[^a]、情報漏えい時の平均被害総額は4.5億円[^b]などと言われ、もはや目覚めていても悪夢です。

弊社でもお客様にご安心いただけるよう、日々セキュリティ対策に投資しています。
ただどんな企業でも問題は発生する可能性があり、もし万が一起きてしまえば昼夜問わず対応する事態にも。そんなとき「不眠不休で対応…」などと言っても、寝ずに正確な開発などできるはずもない！二次被害のリスク！

[^a]: 参考：[JPCERT - インシデント報告対応レポート](https://www.jpcert.or.jp/ir/report.html)
[^b]: 参考：[IBM - 2020年「情報漏えいのコストに関する調査」レポート](https://www.ibm.com/jp-ja/security/data-breach)

そう、今や **セキュリティ不安が眠りを脅かしてしまう状況** なのです。

そこでせめてものお守りに…この記事では
顧客企業さまからよくいただくセキュリティ要件をベスト5形式で紹介していきます！
つまり**「満たしておけば、世の中一般である程度ご安心いただけるだろう」**というライン[^more]。
（結果的に「システム提供者も安心して眠れるようになるだろう」というライン！）

検討に使える情報源やポイントなども Tech Tips と注釈に併記したので、ご参考までにどうぞ。
もっと体系的な情報や考え方は、IPA[^c]やJPCERT[^d]、MITRE[^e]あたりを参照すると良いです。

[^more]: 扱う情報レベルによってはさらに強固なガードが必要なこともありますが、基本的な観点はカバーできると思います。

*なお、眠りを切望するあまり安眠対策になぞらえて記載してある点、あしからずご了承ください。*[^1]
*家をネットワーク境界、部屋をサーバー境界、ベッドをアプリケーションとでも読み替えてください…*
[^1]: 枕やタオルケットの選定など物理対策はもちろん、寝室の湿度管理からスマホによる睡眠ログなどIoT活用、ソルフェジオ周波数の音楽活用、グリシンなどのサプリ活用、アロマなどの化学療法などなど眠るためならばすべてに手を出していると自負しています！


[^c]: 参考：[IPA情報処理推進機構 - セキュリティ](https://www.ipa.go.jp/security/)
[^d]: 参考：[JPCERT コーディネーションセンター](https://www.jpcert.or.jp/)
[^e]: 参考：[MITRE ATT&CK](https://attack.mitre.org/)

#セキュリティ対策 BEST5!!

難しいことはナシにしましょう。なにせ安眠のためのセキュリティ対策ですから ( ˘ω˘)ｽﾔｧ
すべてのセキュリティ対策は、日々の安眠対策と同じように考えられるはずです ←？
それでは早速、ご要望をいただくことの多いベスト5を見ていきましょう！

##第5位 ベッドは安心設計されているか？
![Best5-BED.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539801/b3f36a59-f65f-af96-3ee7-367f71027055.png)
**〜予期せぬ故障に眠りを妨げられては大変です〜**
（こいつは突然何を言っているんだ…という声が聞こえそうですが）
ちょっと負荷をかけたくらいで壊れるベッドでは安心して眠れませんよね。
アプリケーションも同様で、脆弱な設計や構築ではマズイということです。

**---------- Tech Tips ----------**
アプリケーションの脆弱性はできるだけ細かな頻度でチェックしたいところ。
定期的な脆弱性診断という手もありますが、どちらかというと日常的にレビュー観点に入っていると安心。
具体的には、[OWASP](https://github.com/OWASP/ASVS)、[安心なWebサイトの作り方](https://www.ipa.go.jp/security/vuln/websecurity.html)あたりを参考にチェックすると良いと思います！

SQLやOSコマンドのインジェクション、ディレクトリ・トラバーサル、XSSあたりの脆弱性であれば
コードのバリデーションを徹底することで気づけることが大半なので、しっかりレビューしておきたい。
基本中の基本ですが、システムへの入力はなにも信じないように！


##第4位 戸締まりは問題ないか？
![BEST4-Door.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539801/d7f2141e-3ca4-5751-89f4-3ff8814b8de2.png)
**〜泥棒に眠りを妨げられては大変です〜**
せっかくの睡眠時間に泥棒なんかが入ったら、大切な時間をロスしてしまいます。許すまじです。
システムにおいては不正アクセスに対して事前・事後の対策や体制が作れているか、がポイントです。

**---------- Tech Tips ----------**
システムを開発・運用するPC端末にはEDR[^f], ネットワークにはNDR[^g]を入れておきたいところ。
システム側にも最低限WAF[^h]は導入して、通常業務のネットワークとは分離しておくことが望ましいですね。
侵入の防犯装置までないと眠れないという方は、IDS[^i]/IPS[^j]ソリューションまでご検討を。

近年では、次々に新たなマルウェアが発生するため、アンチウイルスソフトなど水際対策では不十分。
検出応答(Detection and Response)の考え方で、上陸後の振る舞いからも潜在的脅威を検知したいです。

[^f]: Endpoint Detection and Response のこと。アンチウイルスソフトの上位版。CrowdStrikeあたりがわりと有名。
[^g]: Network Detection and Response のこと。ネットワーク通信の監視と対応システム。VerizonやVectraがわりと有名。
[^h]: Web Application Firewall のこと。ファイアウォールですね。クラウドならAWSでおよそカバーできる。
[^i]: Intrusion Detection System のこと。不正侵入検知システムですね。良いのあれば知りたい。
[^j]: Intrusion Prevention System のこと。不正侵入防止システムですね。こちらも良いのがあれば知りたい。

##第3位 壁の隙間は補修できているか？
![BEST3-Wall.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539801/c4860ab4-7d5a-8106-473e-08edfcd020d1.png)
**〜すきま風に眠りを妨げられては大変です〜**
寒い季節になると、古くなった家にはどこからか冷たい空気が入ってきますね。しっかり閉じておきましょう。
システムで考えると、脆弱性のパッチを一定期間で適用できているかどうかが問われる、ということです。

**---------- Tech Tips ----------**
日々発見されるソフトウェアの脆弱性に追従するのはそれなりに大変ですよね。
まず、対象を探すにはCVE[^k]を参照するのが良いでしょう。ただ英語でユーザビリティもやや難ありなので
和製互換のJVN[^l]を定期的に見るのも一つの選択です。（[feed](https://jvndb.jvn.jp/ja/feed/)もあるよ！）
そして実施タイミングですが、さすがに毎回即時となると現実的に厳しいケースもあると思います。
オススメなのはスコアであるCVSS[^cvss]でレベル分けして、パッチ当てまでの期限をルール化[^cvss2]しておく方法。
手間暇かけずに自動で管理したい場合には、脆弱性管理ツール[^vul]の導入もご検討を。

[^k]: Common Vulnerabilities and Exposures のこと。脆弱性情報データベース。[CVEリストはこちら](https://cve.mitre.org/)
[^l]: Japan Vulnerability Notesの こと。和製の脆弱性関連情報データベース。[サイトはこちら](https://jvndb.jvn.jp/)
[^cvss]: Common Vulnerability Scoring System のこと。[JVN iPediaでも計算できます](https://jvndb.jvn.jp/cvss/)
[^cvss2]: CVSSで緊急(9.0〜10.0)⇒数日、重要(7.0〜8.9)⇒2週間、警告(4.0〜6.9)以下⇒1ヶ月以内 などで良いと思います。
[^vul]: 有名どころでは[BlackDuck](https://www.blackducksoftware.com/ja-jp.html)、手軽なもので[Vuls](https://github.com/future-architect/vuls)などがありますね。

##第2位 替えのシーツは用意しているか？
![BEST2-Sheets.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539801/d70227f5-d94f-c1a1-612d-6a63ae04ec99.png)
**〜汚れに眠りを妨げられては大変です〜**
想像したくありませんが、もしものことは起きるものと考えねばなりません。成熟した場合であってもです。
システムセキュリティで考えうる最悪の事態は、顧客や自社のデータ消失・漏洩と言えるでしょう。

**---------- Tech Tips ----------**
そんな万が一のときのためにも、データはしっかり暗号化してバックアップしておきましょう。
バックアップは日次・週次くらいの周期で一定期間保持。復旧手順も必ずドキュメントに残すように！
意外と忘れがちなのがバックアップの削除。コストとセキュリティの両面に配慮してこちらも忘れずに。
DBバックアップは日次で2週〜1ヶ月、ログは3年程度残しておけば大抵のご要望には応えられるはず。

##第1位 枕元のスマホはロックしているか？
![BEST1-SMP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539801/d44e3b7f-9500-b819-6c8b-84d3e11172a5.png)
**〜だれかの好奇心に眠りを妨げられては大変です〜**
枕元でスマホを使って、友達とチャットするうちに寝落ち…なんて人も多いと思いますが
個人情報の最終防衛ラインであるアカウント管理ができていなければ、とても安心して睡眠などできません。
パスワードとあわせてしっかり管理しておかないと、家族や恋人にのぞき見られて大変なことになります[^m]。

**---------- Tech Tips ----------**
アカウント管理に関するセキュリティ要件は次の3点が頻出なので要チェックです。
開発業務においては3点どれもマストアイテム！提供システムの仕様でも1,2は対応必須！
**1. パスワードポリシー**
　各社多様なポリシーがありますが、複雑性[^n]や定期更新[^o]、再利用禁止を気にされる場合が多いです。
**2. 特権アカウントと一般アカウントの分離**
　権限ごとにシステムの機能・運用を制限できることは必須と言って良いでしょう。
　ちなみに、特権アカウントは全作業ログ(なんなら承認記録なども)保管しておくのがオススメです。
**3. 追加のアクセス制限**
　より厳格な制限が必要な場合、接続元のネットワークや端末、多要素認証あたりを問われます。

[^m]: そう、大変なことになるのです。
[^n]: パスワード文字列自体の複雑さ。"英大文字小文字数字記号の3つ以上の組み合わせ10文字以上"あたりがミニマムなケースが多いです。
[^o]: 更新しないほうが良しとする説もあるので深くは触れません。米国国立標準技術研究所(NIST)の Electronic Authentication Guideline あたりをググってみてください。

#"安眠対策BEST5" ではあんまりなので…
安眠に気を取られたばかりに、なんだかよくわからないランキングを作ってしまいましたごめんなさい[^p]。
網羅的に意識するのであれば、次のような一覧表で考えると良いのではないかと思います。
**[開発|運用] × [アプリ|データ|インフラ]** のマトリクスに上記ベスト5項目を当てはめてみました。

| | アプリケーションに関すること | データの取り扱いに関すること | インフラや機材に関すること |
|:-----------:|:----------------------|:----------------------|:----------------------|
| **開発** | 第5位:<br/>アプリケーション脆弱性対策 | 第2位:<br/>データの暗号化 | 第4位:<br/>不正アクセスログの取得 |
| **運用** | 第1位:<br/>アカウントの適切な運用整備 | 第2位:<br/>バックアップの復旧整備 | 第3位:<br/>脆弱性のパッチあて |

###さらに絞ったミニマム観点
これでも面倒？ 全部見きれない？ そんな方は下記3つの観点でいかがでしょう！
**1. 「顧客・自社データがどのくらい守られるか？」**を基準に対策する
**2. 「情報が漏れた場合の最悪のシナリオ対策」**は絶対にやっておく
**3. 「システム開発面より運用面のほうがリスクが高い」**ことが多いので集中的に

[^p]: お問い合わせいただく頻度についてはおよそランキングどおりなので誤ってはいないのです。

#まとめ
いかがでしたでしょうか？
本稿では、お客様からよく問われる5つのセキュリティ要件ランキングを通して、安眠対策とセキュリティ対策の類似性を~~無理やり~~紹介してきました。家、部屋、ベッド、そして睡眠活動のレベルで身近に感じていただけたのではと思います。

顧客にシステムを提供するときに、ちょっとした観点として頭に留めていただければ大変幸いです。また、穏やかな眠りのヒントになれば個人的になお嬉しく思います。

明日のアドベントカレンダーは、サポートエンジニア兼QA担当の間嶋から
「***そろそろエクセルやスプシでのテストケース管理をやめたい***」です！

お楽しみに！そしておやすみなさい ( ˘ω˘)ｽﾔｧ

#関連サイト
- [OWASP Application Security Verification Standard](https://github.com/OWASP/ASVS)
- [IPA 情報処理推進機構 - 安全なウェブサイトの作り方](https://www.ipa.go.jp/security/vuln/websecurity.html)
- [Common Vulnerabilities and Exposures (CVE)](https://cve.mitre.org/)
- [Japan Vulnerability Notes (JVN)](https://jvndb.jvn.jp/)
- [MITRE ATT&CK](https://attack.mitre.org/)