Webに限らないのですが、セキュリティの考え方として、「リスクマネジメント」が重要となってきますので、軽く解説しておきます。
ノーリスク=何もできない
まず大前提として、あらゆる行動・選択には、リスクが付随します。極端な話、「日本に住んでいる」時点で、「地震や台風の襲来を食らうリスク」は一定程度存在しているわけです。
Webサービスを運営する上でも、リスクをゼロにするには「何も運営しない」ことしか手段はありません。ということで、存在するリスクとどのように向き合うかというリスクマネジメントが重要となります。
リスクアセスメント
孫子の兵法でも「敵を知り己を知れば百戦殆うからず」と言いますが、リスクと向き合うに当たっても、どのようなリスクがどの程度あるのかという分析、評価を行うリスクアセスメントが必要となります。あるリスク要因に対して、
- (偶発的な事象の場合)それはどの程度の頻度で起きるものなのか
- (脆弱性などの場合)攻撃の容易性はどの程度なのか(リモート攻撃~マシンへの物理的アクセスが必要など)
- 提供するサービスにどのような影響が出るのか
- 可用性への影響(速度低下、サービス停止など)
- データの完全性への影響(データ損失、情報漏えい等)
- 金銭的な影響(帯域消費による費用増加、アカウント不正利用による金銭被害など)
- ビジネスへの影響(信頼低下など)
といった感じで、リスクを見積もっていきます。なお、上のリストはWebシステムを前提としています。
リスクへの対応法
リスク要因とリスクの度合いを検討すれば、あとはどのように対応するかです。
リスクの回避
リスクに対して得られるメリットが見合わない場合は、全く別の手段に切り替える、あるいは行動自体を取りやめることで、不必要にリスクを負うことを避けることができます。たとえば、「赤字でほとんど放置状態のようなサイトがあったけれど、サーバソフトウェアもサポート切れとなるので、それを機にサービス自体を終了することにした」などが考えられます。
リスクの移転
金銭的、物質的なリスクに対しては、保険など契約を使うことで、他者にリスクを移転させることができます。保険以外の例としては、「自社で仮想通貨決済のシステムを開発すると、開発コストに加えてバグなどのリスク、価格変動のリスクがあるので、外部サービスと契約して日本円で入金してもらう」というような、外部システムの利用なども考えられます。
ただ、お金で買えないような、生命・名誉などに関するリスクについては、契約で移転することも難しいです。
リスクの軽減
技術的に対応する部分はここがいちばん多いかと思いますが、考えられるリスク要因に対して、それを軽減させる方策を取る、という手段もあります。
- サーバが落ちるリスクに対応するために、複数台のサーバに分散させる
- データ消失のリスクに備えて、バックアップを取る
- パスワード漏洩のリスクを軽減するため、不可逆なハッシュ化を行って保存する
- Botによる不正投稿のリスクを軽減するために、CAPTCHAなどの認証を取り入れる
リスクの保有
対策が経済的に引き合わないリスクについては、承知でそのまま運用するという手段もあります。たとえば、「地球に10km級の隕石が落ちてきて、大量絶滅を起こすような大変動に入るリスク」に対しては、現代の科学技術で対応可能かどうかも疑わしいです。
また、逆に「サーバがトラブルで止まる」ような日常的なリスクについても、「情報提供程度なので多少止まっても大損害に結びつくわけではない」ようなWebシステムであれば、それを承知で安いレンタルサーバで済ませる、というような選択ももちろんありです。
とはいえ、「リスクの保有」も、リスクアセスメントした上でというのが大前提です。俗に「サイバーノーガード戦法」と呼ばれるような、「どんなリスクもあるのかも考えずに放置する」という方法論とは全く別物です。