企業のITは何かを「信用」して成り立つが、システム的に信用を捨てる概念





シンジです。社内インフラを構築するとき、何を指標として設計しているか、何のために作るのか、誰が嬉しいのかを考えずに淡々と予算を投入している企業の多いこと多いこと。これから会社を作るならまだしも、既存企業は長年の蓄積があるわけです。物理機器や、買収合併の弊害、シャドーITに働き方改革推進の圧力。これらに個別的に対処することこそが無駄かつ自己満足なので、自社のインフラはどうなるべきだったのかを考えたい物です。

ITは企業にとってコアである

企業や組織運営において、ITを使うことで便利になったり、効率が良くなったりする程度の時代はとっくに終わっています。企業や組織からIT全てをとっぱらってしまうと、企業や組織が消え去る可能性が非常に高い、というか確実に死ぬであろう状態にまでITに依存しています。つまり現代においてはITはコアなのです。

情報システム部門はその重要性を理解していない

企業においての情報システム部門は、経営側の意向をITの力で推進したり、現場の業務負担をITの力で解放したり、ITはコア、つまり情報システム部門こそが企業のコアであるはずなのですが、国内企業はそうなってない。

多くの場合、フロントアプリやサービスを売るために予算と人間を注がれて、事故が起きてからゴミ処理をするような立ち位置になってる場所も見てきました。

下手に情報システム部門から動くと、責任がどーのこーの、あの部門のあの人がうるさいからどーのこーの。そんなのばかりです。

情報システム部門は企業が保有するデータの価値を判断できていない

社長のパソコンに保存されているデータは価値が高くて、アルバイトのスマホに入っているデータは価値が低いのでしょうか。違いますよね。同じwordファイルであったとしても、それを見る人間によって価値は変わるのです。

多くの情報システム部門は、データの価値が判断できないために、一律のポリシーによって行動を抑制します。例えばこのWebサイトにはアクセスできません。とかね。

こうしてセキュリティと働き方の戦争が始まります。

シンジの会社がどうなってるか

僕らのインフラは「ゼロトラストアーキテクチャ」という概念で構成しています。この概念自体は、2013年に提唱されたもので、国外ではBeyondCorp(Google)が最も先進的に取り組んでいる分野です。

Microsoft含む多くの企業が、オレオレゼロトラストアーキテクチャをWebで公開しているので、ググってみるといいと思います。多くのアプローチが見られて興味深い。

ゼロトラストの概念は、あくまでも概念です。商品やサービスではありません。もしベンダーの営業がゼロトラストを売りに来たら、鼻の穴に熱々の溶けた鉄を流し込んであげましょう。

本当のゼロトラストアーキテクチャは超複雑

そして曖昧な表現もいくつかあります。PCI DSSのような「ここの設定はこうしなさい」みたいなものはなく、ふんわりしています。決め打った表現もありますが、それそのものが曖昧だったりします。例えば、

ゼロトラストの条件
・全てがクラウドであること
・マイクロサービスであること

こんなかんじのもありますが、どのクラウドなのよとか、マイクロサービスにできないのはどーすんのよとか普通はこう考えるはずです。

BeyondCorpが真のゼロトラストだと思っていますが、本当の意味で全てのサービスがマイクロサービス化されており、ユーザーとサービスは互いに証明書をやりとりすることで信頼し合い、可用性も担保していて、いやいや、誰がこんなの組めんねん的なシステムになっています。

多くの人柱企業がゼロトラストに挑戦した

海外では既に事例が出ていますが、失敗したケースもきちんと表現されています。共通するのは以下の項目です。

・既存のサービスや資産、機器を流用しようとしたら失敗した

これに尽きます。捨てろってことです。これが日本企業にできるかどうかはしらん。

だから新規で会社を作ったシンジの場合は楽だった

ゼロトラストアーキテクチャには3大原則があります。

・人を信用しないインフラ
・ネットワークを信用しないインフラ
・デバイスを信用しないインフラ

この3つを全て包括したインフラこそが、ゼロトラストアーキテクチャを踏襲したインフラといえるとされています。性悪説で構成されたシステムであり、セキュアな環境が提供されるというのは、働く人にも管理者にとっても嬉しいことだらけです。

ウチの会社では、

働く場所が指定されていない(オフィスを推奨していない)

リモートワークというよりは、カフェだろうが家だろうが空港だろうが海外だろうが知ったこっちゃないってことです。インターネットがあればどこでも業務可能にしてあります。

ネットワークを指定していない

VPNがありません。一部業務サーバーへのアクセスは外部ネットワークにさらされていませんが、VPNを利用せずとも認証認可を行う事で経路が生成されるようにしてあります。

空港などのパブリックWi-Fiや、オープンアクセスの危険なWi-Fiを検知した場合、自動的にVPNをAzure Active Directoryに対して接続することで、経路を暗号化してあげて、通信の暗号化が行われます。全て自動なため、ユーザー負担はありません。

パソコンやスマホは何でもいいし、個人のも使える

個人のパソコンを使って会社の資産にアクセスすることがそもそもできないので、ユーザーを作成して、そこで会社のメールアドレスを入力することで、個人データとは完全に切り離した形で会社の資産にアクセスできるユーザーが作成されます。

この時、対象のデバイスがマルウェアなどに感染しているとか、脆弱性にさらされた状態であるなどを自動的に検出し、ログイン出来る状態へ強制的にもっていってからログインさせます。

つまり、エラーでログイン出来ませんとか、なんかログイン出来ないんですけどが、存在しません。必ずログインさせます。

会社で買うデバイス

会社に届いた新品のWindowsマシンやMacを、情報システム部門の人があれこれ設定してから渡すとかダサすぎるし、そいつがその端末に何入れてるか分かったもんじゃないので、端末の販売元と僕らのシステムが証明書で信頼し合うことで、誰に対して購入した端末なのかが発注時点で指定されています。

これにより、ゼロタッチデプロイまたはAutoPilotという仕組みを使って、届いたその段ボールの状態で対象の人に渡しても、その人のユーザが既に作られていて、システムが指定した適切な設定になっている状態で展開しています。

この仕組みは、1台でも1万台でも変わらずに適用できます。IBMがMacを5万人に配布するときにも使われました。

パスワードの取り扱い

基本的にはOSログイン時に作成したパスワードが、Azure Active Directoryと同期して、全てのクラウドサービスに対して展開され、1つのユーザー名と1つのパスワードだけでログイン出来るシングルサインオン環境になっていますが、クラウドサービス側が、特に国内のクラウドサービスがシングルサインオンに対応していないので、1PasswordをSCIMブリッジを経由してIdPと連動しパスワード配布することで、擬似的にも完全なるシングルサインオンを実現しています。

各クラウドサービスはインターネットに接続している状態であれば誰もがどこからでもアクセスできるので、これは統制したいところです。そこでシングルサインオンの仕組みを徹底的に導入することで、各クラウドサービスでは、IdPを経由しないログイン、つまり普通のIDとパスワードによるログインを禁止しています。

まぁ多くのクラウドサービスがシングルサインオンの設定を入れると、普通のログインが自動的に無効になりますけどね。

Windows Helloが利用できれば顔認証で、Touch IDが利用できれば指紋認証でOSへログインしますので、パスワードを入力することそのものの回数が少なくなっています。

覚えるべきパスワードは1つだけです。

多要素認証

シングルサインオンをするとき、その人がこれまでどんな地域でログインしてきたのか、国はどこか、頻度はどうかなどを見ながら、スマホにプッシュ通知で「ログインすんの?」って聞いてきます。

多要素認証のデバイスは個人が必要に応じて自ら機種変更したり、出先で忘れてしまった場合でも管理者が一時的にバイパス処理するなどして制御しています。

認証情報の一元管理

AWS上に作成したWindows ServerのActive Directoryに登録されているユーザーが、信頼できる情報として唯一無二です。このユーザを無効化した瞬間、全てのサービス、デバイスへのアクセスが拒否されます。逆にここに新規ユーザーを作成し、必要なグループに参加させると、自動的に必要なクラウドサービスへのアカウント作成や設定も自動的に行われます。これをアカウントプロビジョニングといいます。

普通のWindows ServerのActive Directoryを利用しているのは理由があって、一部のエンタープライズ向けクラウドサービスが、Active Directoryを必要としているケースが若干あり、やむを得ず作成しました。

一般的に使われるActive Directoryとは違い、GPOや拡張スキーマなどは一切利用せず、必要最低限だけの情報が入力されていて、全てのデータがAzure Active DirectoryやIdP、Google GSuiteなどに同期されているので、死んでも困らないようにしてありますし、なんなら落としたい。

脆弱性管理

会社の資産にアクセスできるデバイスは、常に全てのアプリケーションとミドルウェアのバージョン情報がAzure Active Directoryで精査されています。MacやAndroid、iPhoneも含みます。自動アップデートです。

Webサイトからダウンロードしてきたフリーのソフトウェアなどについてもバージョンを見ていて、マイクロOS側に格納してバージョン管理し、もしWebサイトが攻撃被害にあって、ダウンロードしてきたアプリケーションがマルウェア込みの汚れたものであったとしても、管理者が以前のバージョンに戻すことで、ユーザーは気づくことなく利用できます。

MacでありがちなHomebrewでのupdate漏れでの脆弱性についても、Jamf Proによるルール定義によって、これらのアップデートも行われます。

ウイルス検知や標的型攻撃

Windows端末については、別途ソフトウェアを用意していません。OS標準のWindows Defenderをアップグレードした、Windows Defender ATPを利用することで、エージェントレス運用が可能になり、OSアップデートに影響されてアンチウイルスが動かないといったアホくさい事態を回避しています。

正確には僕らの環境ではアンチウイルスは存在せず、EDR(Endpoint Detection and Response)のみが稼働しています。アンチウイルスは捨てる技術です。

MacやLinuxについては、Ziftenのエージェントを展開しています。ZiftenはAzureのSecurity Centerと連動できますので、管理者は1つの管理画面で全ての端末のふるまいや攻撃状態、インシデント管理を行えるようになっています。

これにはサーバーも含みます。

出口対策

一般的な企業では、ネットワークの境界線はファイアーウォールに存在しますが、ゼロトラストの場合ファイアーウォールは信用しないので、この境界線はエンドポイントまで落ちてきます。

データがインターネットに出る直前に、Netskope(Cloud Access Security Broker)が、そのデータはどこから入手したもので、どんな内容で、誰に送るのかを判断し、必要な制御を行ってから外に出します。

この時、一般的にはhttpsによる暗号化処理が行われているので中身までは判断できませんが、Netskopeの場合、暗号化される前の状態を監査してから暗号化処理を行うので、外に出ようとするデータ全てを統制できます。

バックアップ

オフラインの状態であっても、オンラインの状態であっても、ローカルな端末に作成されるデータに「価値あるデータ」が作成されるケースは日常的にあります。また、ダウンロードしてきたデータに自社のガバナンス上、コンプライアンス上、問題があるデータが含まれている可能性も否定できません。

そこでDruvaを利用することで、クラウドストレージ、クラウドのメールサーバなどのデータをAPIで全てバックアップしながら、ローカル端末のデータも全てクラウドへバックアップしています。

Druvaはエンドポイント側で差分処理を行うので、通信負担が非常に少なく、端末への負担も全く感じません。ユーザーはDruvaのポータルサイトにアクセスすると、自分のデータがバックアップされていることが確認できるだけでなく、様々なデバイスから自分のデータを取り出すことができるので、新しいパソコンに入れ替えるときや、出先でデータを探すときなどに重宝します。

管理者側からは違う視点でDruvaが活用されます。全てのデータがAmazon S3東京リージョンに保管され、全てのデータから一括検索したり、e-Discoveryをかけたり、DLPをかけたり、データの価値判断を容易に行う事ができます。

分かりやすい例で、例えばクレジットカード番号が50件以上保存されているエクセルファイルが発見された場合、それを所持しているユーザーのローカルファイル、そのユーザがアップロードした先のクラウドストレージ、そのデータを共有された従業員のメール、これらを一斉にファイルのみアクセス禁止にすることが可能です。

ログ

従業員のアクセスログはもちろん、重要なのは管理者の操作ログです。Audit logといいます。特に管理者は個人のあらゆる場所にアクセスできる強い権限を持っているので、これを乱用させないように、全てのAudit logが取得され、悪意ある特権操作を抑制する為に、Slackにより操作状態が公開で投稿されます。

まぁだいたいこんなかんじです

ゼロトラストアーキテクチャは概念なので、僕らのアプローチではこんなかんじになりましたっていうやつです。セキュリティに対しての考え方が非常に重要になるので、CISSPを始めとする既存の重要なセキュリティアプローチを学び、実務経験がなければ、ゼロトラストアーキテクチャは設計できないと言われています。

ゼロトラストアーキテクチャは、既存のセキュリティやネットワークを否定するものではありません。情報システムのありかたは、その会社のメインビジネスそして従業員のために考えるもので、1社1社で全く異なり、同じようにはなりません。

・個人をどうやってシステムが認識するのか
・人間の作業をどこまでなくせるのか
・誰の為にこれが必要なのか

テクノロジーの進化は早いですが、人間が人間らしく生きるというのは、情報システムが提供できる最大の利益かと思うので、どうなりたくて会社のシステムを作ってるのかをメンバー内で共有していきましょう。

おまけ

ゼロトラストをやる人が必ずバイブルにしている本(Kindleもあるよ)
Zero Trust Networks: Building Secure Systems in Untrusted Networks
https://www.amazon.co.jp/Zero-Trust-Networks-Building-Untrusted/dp/1491962194/

個人を認証するってなんだっけが分かりやすいスライド
https://speakerdeck.com/kthrtty/ren-zheng-nimatuwarusekiyuriteifalsexin-chang-shi