1. はじめに
システム運用管理部の河石です。情報システム部門、コーポレートIT部門と呼ばれるところにあたり、社内システムの構築、運用を行っています。
この記事ではコインチェックの2020年11月時点で導入しているセキュリティ製品を用いたゼロトラストモデルの実装、運用を整理した内容になります。少しでも参考になるものがあればと公開したいと思います。
読んでいただくにあたって、まずコインチェックの環境を書きます。
1.1 組織について
現在コインチェックでは正社員、派遣社員、業務委託などを含めて200人ほどの従業員がいます。20代が2割、30代が5割と比較的若い人が多い会社になっています。
社内システムに関わる部門はシステム運用管理部の他にサイバーセキュリティ部門、リスク管理部門があります。
システム運用管理部は5人で活動しており、セキュリティ製品の具体的な設定や運用を行っています。設定内容はサイバーセキュリティ部門、リスク管理部門に提案したり、相談を受けて決めています。
また情報システムのコンサルティング会社の株式会社クラウドネイティブやセキュリティアドバイザーと契約してレビュー、助言を受けられるようにしています。
1.2 業務環境について
業務を行う場所は渋谷オフィスと従業員の自宅とし、デバイスはmacOSまたはWindowsデバイスを支給しています。
メール、ファイル、ADサーバなどのオンプレ環境はなく、すべてSaaSを利用しています。
1.3 文化について
Slackを中心としたオープンなコミュニケーションが形成されており、あらゆる情報を閲覧することができます。
過去の大きなインシデントの他にもブログにあるものなど、攻撃者の標的になることが多いこともあり、従業員のセキュリティへの意識が高いと感じています。例えば発生したインシデントは必ず全社へ共有されたり、不審なメールの受信も報告していただけるため、改善や事前の対応ができています。
2. セキュリティポリシー
実装するにあたって以下のようにセキュリティポリシーを整理しています。本記事ではゼロトラストアーキテクチャを参考に整理しているため、エンティティとなるリソース、ユーザ、デバイスで分けて書きます。
下記ポリシーを満たした場合にのみエンタープライズリソースへのアクセスを許可し、また許可した環境から外部へ移すことができる機能は極力制限するように実装します。
2.1 エンタープライズリソースへのアクセス
エンタープライズリソースとそのアクセスは以下のように整理しています。
- 個人情報
- 事業で取得する顧客情報は、その情報を用いた業務を行う人の特定の環境からのアクセスを認めます
- インサイダー情報
- 担当部門が該当する情報リソースを定めてそのアクセス範囲をコントロールします(新規取扱通貨情報など)
- 人事情報
- 担当部門が該当する情報リソースを定めてそのアクセス範囲をコントロールします(従業員の個人情報など)
- 機密情報
- 上記を含む機密情報は情報資産管理台帳に公開範囲や管理方法をまとめており、リスク管理部門が主導して管理します
- その他の情報
- 上記に含まれない情報へのアクセスは基本的に全従業員に対してオープンにします
※ ここでは社内システム環境のみをスコープとしており、サービス側は別の専門チームによって設計されています。
※ SaaS自体はリソースと見做さず、そこに保管されているデータとアクセス可能なアカウント、アカウントにログインできるユーザに分けて設計していきます。
2.2 ユーザの信用
エンタープライズリソースへアクセスするユーザについては以下のように整理しています。
- 情報の取り扱いについて契約を交わした人にのみアクセスを認めます(雇用契約や秘密保持契約など)
- アクセスしようとしているユーザが許可した本人であるかどうかを多要素認証を用いて検証します
- ユーザのアクセスログを収集し、本人であることの検証や悪意のあるアクションを検出します
2.3 デバイスの信用
エンタープライズリソースへアクセスするデバイスについては以下のように整理しています。
- 直接雇用者に関してはマネージドデバイスのみアクセスを認めます ※1
- パートナー企業の人などは契約を結んだ上でアクセス可能なリソースを制限し、当人のデバイスからのアクセスを認めます
- マネージドデバイスはインベントリを収集して正常性を検証します
※1 現時点ではOwnedデバイスを信用するための管理・運用について会社と持ち主の整理・合意が必要なためマネージドデバイスのみとしています
3. 実装
O'Reillyのゼロトラストネットワークにでてくる図に弊社での実装を当てはめたものが上図になります。
ポリシーエンジン、トラストエンジン、データストアが同居したマネージャを複数組み合わせた構成になっていり、各製品の役割は以下のように整理しています。
- ユーザの検証とアクセスコントロール
- IDマネージャ
- クラウドプロキシ
- デバイスの検証とアクセスコントロール
- MDM
- AV/EDR
- クラウドプロキシ
- 横断的な分析
- SIEM
- スプレッドシート
それぞれの詳細を記していきます。
3.1 ユーザの検証とアクセスコントロール
アカウント管理
IDマネージャをマスターディレクトリとしており、SCIMやAPIを通して各SaaSのアカウントを作成、停止、削除します。
IDマネージャが対応していないSaaSは管理部門を定めて手動で作成削除します。
特権アカウントの管理
特権と指定したものは社内規定によって管理方法を定めています。
管理方法は認証時に必要な要素を複数人で所有するものからパスワードを分割するものまで内容に応じてそれぞれ定めます。
パスワードの管理
従業員が記憶するパスワードはIDマネージャへログインするときの1つのみとしてパスワード強度をあげるようにします。
SAML, OpenID Connectに対応していなくパスワードの入力が必要なサービスにはパスワードマネージャを利用して管理と代理入力を行い、パスワードマネージャへの認証はIDマネージャからSSOします。
パスワードマネージャで管理するパスワードはランダム生成したものとし、パスワードの再利用は禁止します。また、ブラウザのパスワード管理機能などは無効にします。
認証
エンタープライズリソースへアクセスする前にIDマネージャによってアクセスしようとしているユーザがセキュリティポリシーに準拠しているかを検証します。
ユーザが本人であるかを検証するために以下の要素をユーザの振る舞いに応じて要求します。
- [弱] パスワード
- [中] パスワード + デバイス(TOTP, YubiKey)
- [中] WebAuth
- [強] パスワードまたはWebAuth + 生態認証(Touch ID, Face ID, Windows Hello) ※1
ユーザの振る舞いは新しいデバイス、ロケーション(市区町村、国など)かどうか、異常な移動距離(1時間以内に100km以上離れた場所からのアクセスなど)ではないかを判断します。
※1 MFAアプリの起動時にTouch ID, Face IDを要求するよう設定します
認可
基本的にリソースはオープンになっているため、一般的な権限へのアクセスを認可するか、拒否するかを認証のアクションで判断します。
センシティブなリソースに対しては事前に権限をセットをし、情報資産管理台帳を元に適切な権限が維持されているか定期的に棚卸しします。その中でも個人情報は取り扱うデバイス、SaaSの契約、オフィスネットワークなどの分離も行い、業務を行うユーザが指定した場所からアクセスしているときにのみ許可します。
Webアクセス
Webアクセスする際にはオフィス内外に関わらず必ずクラウドプロキシを通るように設定しており、SSL復号化して可視化し、それを基にユーザをスコアリングします。
以下のような粒度で可視化されるため、例えばcoincheck.comドメインでログインしたGoogle Driveからファイルをダウンロードし他サービスへ大量にアップロードしている操作などが検出でき、ユーザスコアに反映させます。低スコアになるとWebアクセスやアカウントを一時的に停止します。
サービス サービス名 (例:Slack) テナント名 (例:coincheck) アクション (例:ファイルアップロード) アカウント (例:osanai@coincheck.com) ユーザ デバイス利用者 (例: osanai@coincheck.com) デバイス名 (例: CC_Windows001)
3.2 デバイスの検証とアクセスコントロール
MDM
MDMではエンドポイントセキュリティを維持するための集中管理を行います。
- インベントリの収集
- 遠隔操作(ロック、ワイプなど)
- ローカルファイアウォールや外部ストレージ禁止など、セキュリティポリシーの適用
- 各エージェントのインストール
- 配信から1週間以内にOSアップデートが適用されるよう監視
- セキュリティホールのあるソフトウェアの発見
デバイスは基本的に個人専用としています。デバイスにIDマネージャ上のユーザを紐づけるため、アカウントの署名をした証明書をIDマネージャで発行してMDMから配布しています。
共有利用のデバイスは正しい状態を維持することは難しいと感じており極力禁止していますが、用意する際には用途に応じてキオスクモードを設定したり、起動できるアプリケーションや接続先を制限するよう個別にプロファイルを設計します。
また、使用年数が経つにつれて最新化されていないソフトウェアが増えるなど、デバイスの信用度は下がっていきます。弊社では快適な業務環境を提供するために2年を目安にデバイスを新調するため、これに合わせてmacOSのTimeMachineなどは利用せずにデバイス交換することで信用度をリセットします。
AV/EDR
AV/EDRではデバイスのインベントリを収集し、ウイルスやマルウェアの検知、自動隔離を行います。
クラウドプロキシ
エージェントを導入することで全ての通信を暗号化してクラウドプロキシへ転送し、Webアクセスのポリシーを適用します。ポリシーではフィッシング対策としてハイリスクなサイトへのアクセスをブロックする基本機能を使っています。それに加えて、ユーザやデバイス環境により以下のようなアクセス制御を実現しています。
- 情報漏洩対策として非コーポレートのアカウントでの特定操作をブロックします
- 個人情報取扱環境ではAllow List形式によるアクセス制御を行います
ファイアウォール
ローカルファイアウォールによるインバウンド通信のブロックと、オフィスネットワークやVPNにおけるアウトバウンドのポート制限を行いC2通信等を防ぎます。
ただし、オフィス外ではアウトバウンドのポート制限を行うファイアウォールが適用されず、差異がでていることは課題として置いています。
VPN
VPNは一部のサーバにアクセスする際に接続するものであり、通信経路の暗号化、接続先サーバの公開範囲の限定を目的としています。通信経路の暗号化はクラウドプロキシにもあげていますが、基本的に80, 443番のみであることや、一時的にも無効化できる状態のためVPN接続を要求します。
VPNエンドポイントは複数用意し、ユーザがアクセスする先に応じて接続するエンドポイントを分けます。VPNエンドポイントへの接続の認証にはSSOを用います。またVPNから接続する先でも必ずユーザと1対1の認証を行うことを必要とします。
3.3 横断的な分析
SIEM
上記にあげた各マネージャ、デバイスのログはすべてSIEMへ集約します。これをサイバーセキュリティ部門が利用して、IDマネージャ, クラウドプロキシ, MDM, AV/EDRの横断的な監視をしています。
スプレッドシート
デバイスにインストールしたエージェントが何かの拍子に止まるなど、正常稼働していないケースがあります。これを検出し対応するために、各マネージャのAPIを利用してインベントリ情報を1枚のシートに集約します。シートにはデバイスID, 利用者, 利用者のライセンス, 各エージェントの最終チェックインなどを並べています。
これがあることで例えば下図のように最終チェックイン日時の異常を検知して自動対応することができます。
- スプレッドシートで異常なエージェントが検出され、MDMのAPIを通じてグループに自動追加する
- MDMはグループに所属しているデバイスに対してアンインストールのポリシーを自動適用する
- MDMでエージェントの未インストールが検出され、スマートグループによって自動追加する
- MDMはスマートグループに所属しているデバイスに対してインストールのポリシーを自動適用する
4. 運用
実装について書いてきましたが、間を埋めるために発生する手作業についても少し記述したいと思います。
4.1 デバイス設定の異常対応
横断的な分析でエージェントの異常検知から自動修復を書きましたが、再インストールで修復しないケースもあります。こういったものの検知のためにスプレッドシートで検出したデバイスの一覧を日次でSlackに通知して、滞留しているもがないかを人手で確認することで発見し、対応します。
4.2 OS, ソフトウェアの最新化
OSはセキュリティパッチの含むアップデートが配信されてから1週間以内に適用するよう従業員にお願いしています。
MDMで最新バージョンになってることを確かめ、古いデバイスに対してはアップデートしていただくようシステム運用管理部から個別に依頼します。利用間隔が低いデバイスはOSが最新になるまではエンタープライズリソースへのアクセスを制限するなどで運用者、ユーザの負担を下げることを検討しています。
ソフトウェアは、サイバーセキュリティ部門で収集している脆弱性情報をもとに該当のソフトウェアがインストールされたデバイスをMDMで確認し、アップデートを依頼します。また特定のOSでは、EDRマネージャでデバイスのインストール済みソフトウェア一覧とCVE情報を突合した結果を取得することができるのでこれも活用します。
macOSではMDMでソフトウェアの配布管理すると、インストーラのバージョンが変わるごとにMDMの設定更新の手間が発生するため、Installomatorを利用してなるべく手間を省きます。
4.3 ソフトウェア, SaaS利用の管理
弊社ではソフトウェア、SaaS利用開始前に従業員から申請してもらい、サイバーセキュリティ部門が脆弱性対応状況や規定、機能等を確認して、場合によっては別サービスを提案しています。
またSaaSでは設定やアカウント管理を行ってもらう部門を定めたり、定期的に利用状況の棚卸をおこないます。
4.4 異常検知時の対応
IDマネージャ, クラウドプロキシ, AV/EDRまたはSIEMによって異常を検知した場合は該当者、デバイスが利用できないよう隔離します 。その後サイバーセキュリティ部門にてログや実機を確認して過剰な検知であった場合は隔離の解除、問題があった場合はデバイス等の交換を行い業務を再開してもらいます。
状態に応じた細かなロールの変更は実装が難しいため、弊社では信用度が中程度以下の場合は一度隔離する運用とします。ただし誤検知は月に2, 3回程度に止まるようポリシーを調整します。
5. おわりに
この記事は今後どこに改善点があり投資していくかを議論していくために現状を把握できるものを用意したく、ゼロトラストネットワークの考え方を持ち出して整理したものになります。
この2年間では以下のタイムラインで導入を進めてきました。
- 2019/01 IDマネージャのリプレース
- 2019/03-04 WindowsのMDM, AV/EDRのリプレース
- 2019/04-05 macOSのAV/EDRのリプレース
- 2019/06 Slackの設定見直し
- 2019/07 Google Workspaceの設定見直し
- 2019/09 旧IDマネージャの廃止
- 2020/03 リモートワーク開始
- 2020/03 VPNとVDIの導入
- 2020/04 クラウドプロキシの試験導入
- 2020/06 クラウドプロキシの本導入
- 2020/08- スプレッドシートの作り込み
2年前は「ゼロトラストでいくぞ!」と言っても漠然としているせいか反応はよくなく、自分としても何を実装してよいかを決めきれずにいて難しかったように思います。「認可とアカウント管理の徹底」「リモートでのデバイス設定管理と運用の軽量化」など問題を分解することで社内での会話も導入までもある程度スムーズになりました。
また、元々ある製品や運用を廃止してよいかの議論もなかなか頭を悩ませています。その製品、運用にもたせている役割、効果、残課題が明確になっていないものが多く、レビューをもらうと辞めない理由が次々と出されてしまいます。製品を追加で導入すればコストがあがり、運用が増えれば正確性を担保することが難しくなり逆にリスクにもなり得ます。適切な実装、運用を作っていくためにもひとつづつ明文化していくことが大事だと思いました。
最後に何点か書いて終わろうと思います。ここまで読んでいただきありがとうございました。corp-engrのSlackにもひっそりと参加させていただいているので気になる点、ツッコミなどいただけると助かります。
費用について
現時点で従業員 1 人あたりの月額費用は10,000〜11,000円になっています(デバイスの所有数などによって増減します)。
- デバイス管理・セキュリティ製品: 7,000〜8,000円 ※1
- グループウェア: 3,000〜4,000円 ※2
※1 オフィスのネットワーク機器、SIEM、SIEM へのログ転送にかかる費用は含んでいません
※2 セキュリティ機能のためにアップグレードしたときの差額です (例: Google Workspace Business Standard → Enterprrise)
今後もIDマネージャと連携できるHRソリューションや各製品のオプション機能など追加して費用が増えていく予定ですが、本資料をベースに対応する必要がある部分を明確にし、優先順位を決めて投資していきたいと思っています。
APIを利用することについて
各マネージャの不足部分をAPIを利用して解決することができますが、その仕組みを維持するためにはプログラミング知識などが必要になりハードルがあがります。
しばらくはAPIを利用しないよう考えてきましたが、やはり限界があると判断し使うことにしました。ただし複雑にならないようインベントリ取得、グループの更新のみとして細かな動きは各製品のルールベースのポリシー適用やワークフローなどのノーコードの機能で作り込むこととしています。
今後は作り込みの障壁を下げたり、実装の速度をあげるためにiPaaSやワークフローの導入を考えています。特にWorkatoは実際に触れたこともあり、期待できる製品だと感じていますが金額が高いため他部署を巻き込んで導入を検討していきます。
仲間を募集しています
システム運用管理部、サイバーセキュリティ部門では、一緒に働いていただける方を募集しています!
日々標的となる仮想通貨業界ですので、まだまだ成熟度を高めていく必要があります。各製品もすごい勢いで成長しているためいち早く検証して穴を埋めていったり、個人情報取扱環境の最適化といった高難易度の課題解決へ取り組んでいきます。興味があればぜひお声がけください。
https://hrmos.co/pages/coincheck/jobs/0000400hrmos.co
corporate.coincheck.com
申し訳ありません、ネットワークエンジニアの採用はブログ公開前に決まってしまいました...m(_ _)m