柔らか層外伝 セキュリティ実装・認証編

#SoftLayer の セキュリティと認証について
クラウドはセキュリティ上、問題があるのでしょうか？それともクラウドは安心なのでしょうか？
答えに一足飛び！ではなく、そのどちらかを判断する前にやることがありますね。
特に、SoftLayerはIaaSというインフラのクラウドなので、自社が求めるセキュリティ・レベルでの実装ができるのかどうか、または、どの程度までのセキュリティ・レベルであれば許容できるのか、という評価が必要です。

クラウドにはセキュリティ上問題があるから使わない、というのは、例えば、便利だけど、事故の危険性があるという理由で自動車や航空機の輸送手段を使わずに流通ビジネスを考えるようなものです。（効果的に使える武器は使ったほうがいいよね、という意味です）
一方で、クラウドを選べば安心だ、と盲目的に判断してしまうのも、要注意です。クラウドは、クラウドを提供する企業によって、そこに定められているセキュリティの実装の仕方は様々であり、どういう実装が必要か、本当にそれで十分かを判断する必要があるからです。

ここでは、SoftLayerのセキュリティについてよく質問される代表的な観点をまとめてあります。


#転ばぬ先の杖 :coffee: 

## 杖１：”もと”中の人が語り尽くすSoftLayerセキュリティー、を熟読する。
役割分担と、セキュリティの実装マップは、クラウドでのセキュリティ実装を理解するのに役立ちます。100ページを超える内容ではありますが、SoftLayerの「セキュリティ」を担当される方は、一通り目を通しておくと、いろいろ役立ちます。更新も定期的になされています。
[”もと”中の人が語り尽くすSoftLayerセキュリティー](http://www.slideshare.net/ussovh/softlayer20151016)

## 杖２：役割分担は言ってみれば責任範囲。正しく理解する。
IaaSを提供する多くのクラウドと同様、SoftLayerでは、ユーザーが利用する環境は利用者自身の責任範囲と定義されています。
OSへのパッチの適用や、アンチウィルスの定義ファイル更新など、すべて利用者自身の責任範囲です。具体的には、配布されたサーバーが最新のパッチが適用されているかどうかの確認や、確実なパッチの適用など、利用者自身の責任範囲です。
表１：[柔らか層(pdf)から抜粋](https://ibm.biz/BdE9ab)
![security1.jpg](https://qiita-image-store.s3.amazonaws.com/0/53057/b999e8bb-bd22-dd4a-4551-623eba46c06e.jpeg)

上表において、「IBM SoftLayer」と表記がある部分は、IBMが提供するサービスレベルを許容して利用に足るかどうかを判断しなければなりません。一方で「お客様」の部分は、利用者自身で、必要なサービスなどを組み合わせて実施していく必要があります。

## 杖３：それぞれのレイヤーで何が利用できるのか把握しておく
SaaSとか、Managed Serviceのように、運用管理までを提供範囲としたサービスを検討している場合は[”もと”中の人が語り尽くすSoftLayerセキュリティー](http://www.slideshare.net/ussovh/softlayer20151016)に記載されているP.22以降の「セキュリティ管理策の全体図」や「SoftLayerでの実装例」を参照しておきましょう。

## 杖４：よく指摘される内容について考え方を理解しておく
Q: 
アメリカのクラウドって、アレですよね、愛国者法の対象ですよね。データとか勝手に召し上げられるんですよね？
考え方: 
日本は法治国家です。犯罪に対する捜査への協力依頼には対応します。これは、そのクラウドがどの国の企業が提供しているかどうかは関係ありません。物理的に没収されてしまうリスクは、日本国産のクラウドやWebホスティングの会社と同程度あると考えてよいでしょう。
どうしても他のユーザーが理由で持っていかれるのがイヤ、な場合は、SoftLayerのベアメタルや、専有可能なリソースを使って「シングルテナント環境」を選ぶというのも一つのリスク回避策です。
ちなみに愛国者法（パトリオット法）は2015年6月に失効しています。ＣＩＡ元職員、スノーデン容疑者の一件があり、米国自由法案、が作られています。

Q: 
クラウド上のデータがなくなったら保証してくれるのでしょうか？
考え方:
保証はありません。消えたら困るデータをクラウドに保管する場合は、複数の環境にバックアップやレプリカを取るなどの機能を活用するとよいでしょう。
SoftLayerでは、テープ装置などへのバックアップサービスを提供しているパートナーもいますし、テープ装置そのものをクラウド側に設置することも出来ます。

Q:
データの所有権はどこにありますか？データは勝手に参照されますか？
考え方:
IaaSにおいて、多くの場合、データの所有権は利用者にあります。SoftLayerでも同じです。SaaSにおいては、データの所有権はベンダーにあったりします。利用規約をしっかり確認しましょう。
一方、SoftLayerではシステムの管理者権限は利用者が所有することもあり、データへのアクセス権は利用者が保有します。しかし、他のクラウドでは、提供ベンダーが利用者の許可無くシステムにアクセスすることがある旨が記載されていたりします。

Q:
セキュリティ、おたくのクラウドに任せて良いんだよね？
考え方:
疑って使わない、よりは、信頼していただいた上で試してみてぜひご評価いただきたいです。ベンダーが謳っている様々なセキュリティの施策を盲目的に鵜呑みにするのではなく、ぜひもっとも厳しいご自身の目で問題がないかをご確認ください。

## 杖５：セキュリティ認証について正しく認識しておく

| 名称 | 責任 | 説明 |
|:--|:--|:--|
|SOC1/2/3|IBM SoftLayer|SoftLayerはSOC1/2/3レポートをすべて取得しています。<Br>SOC1は、ICFR（Internal Controls over Financial Reporting）が必要な団体向けに個別に提供しています。<br>SOC2は、SOCのルールに乗っ取り12ヵ月毎の評価を実施しています。SoftLayerでは毎年9-10月が監査の時期です。監査結果であるSOC2 TypeIIレポートはカスタマーポータルから参照していただけます。<br>SOC3は、AICPA/CPA Canada Trust Services Principles and Criteria for Security, Availability, Processing Integrity Confidentiality, and Privacy 向けのレポートとなっています。|
|SafeHarbor|IBM SoftLayer|この認証は、SoftLayerが、指針の元に、適切なプライバシー保護を提供していることを示しているものでした。米国を本拠地とするIT企業はこの協定に基づき欧州ユーザーの個人データを米国のデータセンターに移転していました（その逆も然り）。しかし、NSA（米国家安全保障局）などによる無差別なデータ監視が問題化したことを受け、2015年10月に欧州司法裁判所が「協定は無効」とする判決を下し、失効しています。<br>現在は、EU Model Clausesが参照されています。|
|EU Model Clauses|IBM SoftLayer|SafeHarborの後継として採用されています。ヨーロッパ圏内からヨーロッパ圏外へのデータを持ち出して保管したいお客様向けです。データ保護法については、EU 95/46/ECが有名ですが、この認定はその対策のひとつとなります。|
|Cloud Security Alliance|IBM SoftLayer|SoftLayerは、CSAセルフアセスメントをCSA STARレジストリに登録済みです。<br>CAI-Q: https://cloudsecurityalliance.org/star-registrant/softlayer/<br>CCM: Available from SoftLayer<br>CAI-Qは、Consensus Assessments Initiative Questionnaireの略で、セキュリティがどのように制御されているかをチェックする質問リスト形式になっています。CCMは、Cloud Controls Matrixの略で、CSAが定義する13の大項目に沿ってどのようにセキュリティ実装がされているかを把握することが出来ます。より詳細な情報が必要な場合は、SOC2レポート参照、となります。|
|FISMA|IBM SoftLayer|Federal Information Security Management Actの略。<br>アメリカ政府定義のセキュリティ標準のための法律。連邦政府機関が情報セキュリティを強化することを義務付け、NISTに対しては、そのための規格やガイドラインの開発を義務付けています。NISTからは、セキュリティカタログとして、NIST SP800-53がリリースされています。SoftLayerでは、北米のいくつかのデータセンターにおいて、このFISMAコンプライアンスを取得済みです。|
|FedRAMP|IBM SoftLayer|連邦政府機関が利用するためのコンプライアンス。<br>2014 Authorization Board (JAB) への参加。FCC ATO、pATOも取得済。グローバルなクラウドとしては結構昔から取得している。<br>FedRAMP認証データセンターは現在、ワシントンDCDCとダラスDCのみ。これらのデータセンターは一般ユーザーには開放されていません。|
|ITAR|お客様|International Traffic in Arms Regulationの略。<br>SoftLayerそのものはITAR証明書を持つことはありません。ITAR準拠のデータセンター（FedRAMPと同じデータセンター）を選択し、仮想データセンター、またはベアメタル・サーバーを利用することでITAR準拠とみなすことが出来ます。|
|HIPAA|お客様|United States Health Insurance Portability and Accountability Act of 1996（米国における医療保険の相互運用性と説明責任に関する法令）の略<br>現時点ではHIPAA への明示的な認証プロセスは実施しておりませんが、IBM SoftLayer はご要望に応じてお客様とBAA (Business Assoc. Agreement) を締結します。<br>HIPPA準拠のためには、SoftLayer のベアメタル、専有プライベートクラウドが適しています。|
|CFR21:FDA GxP|IBM SoftLayer|電子記録、電子署名および電子記録上への手書き署名を紙の記録物および手書き署名と同等のものとして規制対象企業からFDAが受け入れることを可能とする法律<Br>電子記録や電子署名が改ざんされないこと、変更の履歴が残ることなどを定義しています。<br>SoftLayerはこのコンプライアンスに対して、ITインフラとして、またソフトウェアやアプリケーションとしても準拠しています。|
|ISO27001<br>ISO27017<br>ISO27018|IBM SoftLayer|いわずと知れた国際規格<br>SoftLayerはそれぞれ、ISO27001（情報セキュリティマネジメントシステム）、ISO27017（クラウドセキュリティ規格）、ISO27018（個人情報に特化した規格）を取得しています。|
|PCI-DSS|IBM SoftLayer|IBM SoftLayerはPCI L3認可を取得しています。<br>お客様がSoftLayer上に構築したシステムとしてPCI-DSS認定が必要な場合は個別に認証取得しなければなりません。<br>PCI準拠のためには、SoftLayerプライベートクラウド、ベアメタル・サーバーが適しています。<br>IBMでは、お客様がPCI-DSSを取得するための支援もご提供します。|
|FFIEC|お客様|FFIEC（米国連邦金融機関検査協議会）は米国政府の主要機関であり、FRB（連邦準備制度）、FDIC（連邦預金保険公社）、NCUA（National Credit Union Administration）、OCC（通貨監督庁）、MAIC（Mergers & Acquisitions International Clearing）、CFPB（Consumer Financial Protection Bureau）の理事会による金融機関の政府調査のための基本方針、標準、報告形式を指示する機関。<Br>FFIECで定められたガイドに基づき、SoftLayer は2014年 FFIECリスク評価を外部監査から受けました。FFIECで定められている規格に準拠するには、シングルテナントまたはベアメタル・サーバーが適しています。|
|MTCS Tier2|IBM SoftLayer|シンガポールが定める規格。Multi-Tier Cloud Securityの略。シンガポール政府、またはシンガポール政府関連企業がSoftLayerを利用する際の指標となります。SoftLayerではシンガポールDCと香港DCで認定を取得しています。|
|FISC|IBM SoftLayer|金融機関等コンピュータシステムの安全対策基準（FISC安全対策基準）ですね。公益財団法人金融情報システムセンター『金融機関等コンピュータシステムの安全対策基準・解説書（第８版追補）』（FISC安対基準）をベンチマークし、IBMで自己評価を実施の上、第三者による支援として新日本監査法人による助言を受けています。<br>ダウンロードは[こちら](http://www.ibm.com/cloud-computing/jp/ja/softlayer_fisc.html)からどうぞ。|

ふぅー、、、結構たくさんありますね。

## 杖６：インターネットからアクセスできることの恐ろしさを認識しておく
クラウドでは、特に何も考えずにサーバーを作成しても、簡単にインターネットからアクセスできるように初期設定されています。注意しないといけないのは、ノーガード戦法だ、という点です。アクセスに必要なポートだけ開けて、不要なポートは閉じる、とか、ファイヤーウォールを設定する、などの適切なセキュリティ実装がされているのか、されていないのかを意識して利用するのが大切です。
開発環境だから、とかテスト環境だから、などの理由でパスワードなしのログインにしておくのは言語道断です。どういうリスクがあるか正しく把握しておきましょう。

>パスワードなし、とか危険なパスワードとして認識されている簡単なパスワードの場合など、セキュリティ対策が甘いと判断されるとあっという間にシステムに侵入されます。想定されるケースとしてはシステムを乗っ取られたり、他のサーバーへのDDoS攻撃要員にされたり、踏み台にされたり、などというリスクがあります。
>加害者になってしまった場合で、かつ、被害者から「あなたから攻撃されています」という通知を受けたりすると、その調査や対策のために多大な労力（と心理的なストレス）がかかります。でも多くの場合事前に対策が打てるものがほとんどです。

とはいえ、一番最初、ってどうやって設定するのか？・・・ですよね。当然の疑問です。やり方は主に二通りあります。
その１：SoftLayerは、インターネット側からアクセスできないように設定しているサーバーであっても、無償で利用できるSSL VPNなどを利用して、プライベート側から簡単にアクセスできます。この方法だと、インターネットからアクセスできない作業環境として利用することが出来ます。
設定が万全になった後に、インターネット側からアクセスできるようにすれば安心ですね。

その２：必要なポートのみを開ける、パッチを最新に更新する、などの初期設定をサーバー・プロビジョニング時に実行するプロビジョニング・スクリプトを活用するのも手です。
プロビジョニング・スクリプト？な方は[knowledgeLayer内のこちらの記事](https://knowledgelayer.softlayer.com/topic/provisioning-scripts)を参照してください。

補足ですが、RSA鍵認証を利用するとOSへの不正侵入を防ぐのに一定の効果があります。

## 杖７：クラウドのサーバーを安全に使うための8-3-2
■ 最初にやる8つのこと
1. （OSでの設定） rootログインの無効化 & sudo可能ユーザーを限定する
2. （OSでの設定） password認証の無効化 & RSA鍵認証のみ許可する
3. （OSでの設定） SSHのデフォルトポート（22）から変更（例：2222など） & sshログイン可能ユーザーを限定する
4. （OSでの設定） iptablesで、指定の接続元・接続先、指定のポートのみ接続できるように設定する
5. （OSでの設定） SElinuxが無効化する
6. （OSでの設定） ログ監視（logwatchなど）で重要なログファイル監視を設定する
7. （クラウドポータルで操作） 脆弱性スキャン（※１）をかけて抜け漏れがないことを確認
8. （クラウドポータルで操作） テンプレート化（標準的な設定は誰でも再利用できるようにしておく）

※１：クラウドが対象でない場合は、[脆弱性検査ツール](https://ja.wikipedia.org/wiki/%E8%84%86%E5%BC%B1%E6%80%A7%E6%A4%9C%E6%9F%BB%E3%83%84%E3%83%BC%E3%83%AB)もご利用いただけます。

■ 次にやる3つのこと
1. （OSでの設定） 利用しているアプリやミドルウェアのDefault Userから変更する
2. （OSでの設定） ログ監視の網羅性（※２）
3. （総合的対策） アーキテクチャからの安全性確認
  -（アプリケーションの実装） 代表的攻撃手法（SQLインジェクションなど（※３））に対する防御機能を実装する
  -（インフラとしての実装） WAFとか、アンチウィルスとか、IPS、IDSを実装する
  -（インフラとしての実装） fail2banなどを駆使するのも良い

※２：　ログインなどの認証系システムのログファイル監視、Databaseなどのアプリ系の操作ログ監視
　　　　 CPUやメモリ、NICの利用率監視、クラウド業者が提供するアウトバウンド情報の監視　など

※３：　SQLインジェクション攻撃対策は[こちら](https://www.ipa.go.jp/files/000024396.pdf)
　　　　 クロスサイトスクリプティング対策は[こちら](https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a01_02_main.html)
　　　　 そのほか：[他人事じゃない！WEBサイトに対する10の攻撃パターンと対策方法まとめ](https://blog.codecamp.jp/web_security)

■ そして、最後（？）にやる2つのこと
1. クラウドで利用する各コンポーネントの更新体制の実装
2. アウトバウンド破産しないように、インターネットにさらされているサーバーに保険オプションを適用

えー？Windowsは？と言う方は、以下をご参照ください。
[ShinobiLayer: SoftLayerにおけるWindows Serverのハードニング](http://qiita.com/testnin2/items/5f3ce3aa2a8eb10adc9d)