私が自分で迷ったこと、調べたことで、特に印象に残っている事柄を備忘録として書いておきます。理論としてどう理解すれば良いか、もありますが、試験対策としてどう理解しておけば良いか、という視点でも書いています(間違っている点がありましたら、ご指摘ください)。
事業継続計画(BCP)と災害復旧計画(DRP)の違い
概念としてはBCPの一部としてDRPを作るので、違うに決まっているのですが、具体的な問題として、ある作業はBCPかDRPか、と聞かれると迷うことがあります。この2つがどう異なるか、もっとも分かりやすく知りたければ、改めてSybexの公式スタディガイドを見てください。BCPはChapter 3に、DRPはChapter 18に書かれています。実はそれぞれ内容はほとんど重なっていません!BCPとDRPの違いに悩んだらこの本のこれらのチャプターを見直すと良いです。
ちなみにConradの11 hours CISSPではChapter 7 (Security Operations)の中にまとめて"BCP and DRP overview and process"として記述されており、両者の区別はSybex公式スタディガイドほど明瞭ではありません。
またこの差の理解で最も大切と感じたのはBCP策定プロセスの正しい理解です。そのためには必ずNIST SP800 34のBCP策定プロセスを覚えておく必要があります。
- 作者: Mike Chapple,James Michael Stewart,Darril Gibson
- 出版社/メーカー: Sybex
- 発売日: 2018/04/11
- メディア: Kindle版
- この商品を含むブログを見る
セキュリティモデルやアクセス制御を実感として感じる
Bell LaPadulaモデルとかBibaモデルは一見すると、Simple Security Propertyとか当たり前のことを言っているようで、何がキモなのかよく分かりません。
上記の記事でも紹介した、BellとLaPadulaの共著論文を読んで、このモデルを本気でコンピュータに実装しようとしていたことが分かりました。この辺を知って、少し実感を持って理解できるようになった気がします。
同様に強制アクセス制御もUnixの自分で設定するrwx(要は任意アクセス制御)に慣れ親しんだ体には当初、実感が湧きませんでした。 しかし、以前読んだ論文で、Linuxのカーネルを変更して、ブート直後に生成されたあるプロセスだけが、Key storeにアクセスできるようにして、ユーザプロセスから不正にroot権限昇格されてもKey storeにはアクセスできない、というような仕組みを読んだことを思い出しました。これは(アドホックに)強制アクセス制御を実装したものだ、と気がついて、ようやく実感が持てた気がしました。
この辺の一見抽象的な概念にも必ず具体事例があるはずなので、そのような事例をうまく見つけて勉強すれば、実感できるようになると思います。
least priviledge と need to knowの関係
前者は「ユーザやプロセスには与えられた仕事をするのに最低限必要な権限を与える」、というもので、後者は「アクセスを許可するにはクリアランスがあるだけではなく、知る必要がある、も条件となる」で、概念としては同じことを言っていると思います。
しかし、試験においてはこの二つは異なる考えです。least priviledgeは「ユーザプロセスやその他のプロセスに与える権限設定の話」です。一方、need to knowはほとんどの場合、軍用システムのセキュリティモード(Dedicated/System High/Compartment/Multilevel)においてユーザにアクセスが許可されるための条件として出てきます。
職務の分離と職務のローテーション
不正行為が行われることを防ぐための人事施策として、職務の分離があります。重要な仕事を一人に集中させると不正が可能になることが多いので、あえて複数の人に職務を分散するような施策です(seperation of duties)。
しかし、この施策を実施しても、関係者が共謀すると不正が可能になる場合があります。共謀を防ぐための人事施策として、職務のローテーションがあります。ある人がある仕事を一定期間行うとジョブローテーションで別の人にその仕事をアサインするのです。こうすることで共謀が発覚しやすい環境を作れます(rotation of duties)。同様の施策で強制休暇(mandatory leave)というものもあります。
不正行為、職務の分離、共謀、職務のローテーションを上記のように理解して、腹落ちしました。
CISSPは同じ言葉を話す同士。歴史も重要
CISSPの勉強をしていると結構昔の話がたくさん出てきます。SLIPとかPPPのような古いプロトコル、Syn floodとかsmurfのような古めの攻撃方法、TCSEC、ITSECなどすでに使われていない標準、、、でもこれらも試験に出る可能性はあるので、勉強して理解しておく必要があります。
- 古い技術でも現代でも使われて脆弱性になることがある
- 現在の技術が現在の通りになっている理由として歴史的な経緯の理解も必要
- これらの言葉を知らない、ということは、その概念を知らない可能性もある
などが主な理由に思われます。CISSPを持っている=この程度の言葉と概念は知っている、という感覚があるのかもしれません。
情報システムでの「実装」
これは最初かなり戸惑ったのですが、CISSPでSDLCの文脈で「実装」とは最終的な開発物を実運用し始めることを指すようです。今風の言い方だとデプロイだと思います。一方、私の日常生活では、「実装」はソフトウェアのコードを書くこと、なのです。今まで私はある範囲の中で、ソフトウェア開発のフェーズを、仕様決め・設計・実装・テスト・リリース・メンテナンス・破棄と理解してきました。
SDLCは情報システム(会社や組織の中で使うシステム)の開発プロセスをベースとしており、上記とは少し言葉が異なります。仕様決め・開発/取得・実装・メンテナンス・破棄、という感じです。この「実装」の中にはtesting, certification, accreditation及び、accreditationされた際のgo live/online/deployまでが含まれます。この辺、自分自身の言葉の理解だとずれていることに気がつくのにかなり時間を要しました。この辺の話は出どころはNIST SP800-64だと思うので、下記にリンクを貼っておきます。
英語 v.s. 日本語
CISSPを日本語で受験する場合、日本語でテスト問題が出題されますが、同時にワンクリックで元の英語での出題を見ることができます。それにはそれなりの理由があるので、ぜひ、英語での用語に慣れておき、試験では英文も確認しながら進めることをお勧めします。このような確認をすることで、無用な誤解を避けることができます。私の場合も確実に数問、誤解を解くことができました。