業務する環境をセキュアにした話 その1

f:id:k725a:20210401110637p:plain

こんにちは✋

エンジニアリング統括部 第2開発部でエンジニアをしている馬場と @_k725 です。

2020年10月頃から、部内の環境整備や改善を行ってます。

私達がいる部署は2年前に出来た部署で、転職を行う以外のユーザーに接点を持てる新規サービスの開発を主な業務としています。

はじまり

新型コロナウイルスの流行により、在宅勤務がメインとなったエンジニアリング統括部 第2開発部のメンバー達。

しかし、業務で使用しているWebサービス類はアクセス元の制限などを行っているものばかり…。

そこで、自宅からでも安心して業務を行える環境を整え始めました。

帯域が足りない…!

メンバー宅の帯域不足や固定回線の未整備により、メンバー起因で帯域不足になるケースもありますが、パーソルグループ特有の問題も。

基本的に在宅勤務を行う際、開発などを行わない従業員は、標準で支給されたマシンからVPNを接続します。

インターネット接続が必要なOffice 365製品の一部は、閉域網を介してOffice 365を利用していますが、パーソルグループ全体で在宅勤務者が増えたことにより帯域が不足したため、TeamsやZoomでの会議ではカメラオフが推奨されていた時期もありました。

ざっくりとしたイメージですが、従業員〜VPNサーバー間, 内部ネットワーク〜Office 365間で帯域不足が発生していました。

f:id:k725a:20210401105212p:plain:w300
内部ネットワークの簡単なイメージ

既存のアクセス制限が厄介すぎる…!

パーソルキャリアでは、部署内で外部のWebサービスを契約・利用する際にアクセス元の制限を求められることがあります。

この制限方法についてですが、基本的にIPアドレス(IPv4)での許可リストを設定し、制限を行っています。

ですが、在宅勤務だとVPN等でIPアドレスを固定してWebサービスに接続せざるを得ません。

しかし、先述のVPNサーバーは、標準で支給されたマシン向けのVPNサーバーなので、メンバーの利用しているマシンは接続することが出来ません。

仮にVPNサーバーを用意することにしても、業務で利用するには高速で安定している回線や冗長構成を持った信頼性の高いVPNサーバーを用意しなければなりません。

また、私達の部署ではGoogle Workspace (旧: G Suite)を活用していますが、アクセス元の制限を行うために、IPアドレスでの制限をウリにしたアイデンティティ・プロバイダ(IdP)を利用していました。

f:id:k725a:20210401105621p:plain
外部のIdPを利用したGoogle Workspaceへのログインフロー

一時期はコロナ渦での緊急対応ということで、マネジャーが各個人の自宅IPアドレスを許可するなどしていましたが、IPアドレスが変わる毎に更新を行ったりなど運用コストの問題や、IPアドレスを信頼することによる未知のデバイスからのアクセスを許可してしまうリスクなどが課題でした。

また、最近発生したトラブルでは、パーソルグループがインターネットにアクセスする際に利用するIPアドレスが増えたことにより、各種Webサービスの再設定が間に合わずに締め出されてしまったトラブルがありました。

セキュリティキーの導入

現在、私達の部署では会社から支給されているマシンと、部署で購入している開発向けのマシンの利用をしています。

前者のマシンはパーソルグループで全体管理をされているので運用の問題は少ないですが、後者のマシンは部署で運用を行わないといけないため如何に安全に在宅勤務で運用出来るかが課題です。

IPアドレスでの制限以外での方法を模索していたところGoogle Workspace(旧 G Suite)では二段階認証要素として、FIDO U2Fをサポートしているようなので検証を行ってみることにしました。

f:id:k725a:20210401105720j:plain
購入したセキュリティキー

二段階認証 "のみ" ではメンバーの所有している未知のデバイスからのアクセスを防ぐことは出来ませんが、外部からの攻撃に対してアカウントを保護する手段としては有効です。

また、Google Workspaceのサポートしている二段階認証は以下の手段があります。

  • Gmailアプリ・Googleアプリでのプッシュ通知
  • ワンタイムパスワード生成アプリ (TOTP)
  • テキストメッセージ (SMS)
  • 電話での自動音声
  • セキュリティキー

参考: https://support.google.com/accounts/answer/185839

しかし、SMSや電話の利用は利用している携帯キャリアに信頼を置くことになり、悪意のある攻撃には弱くなってしまいます。

ワンタイムパスワード生成アプリも携帯以外でコードを生成する方法があり、秘密鍵が漏れてしまうと容易にワンタイムパスワードを生成することが出来てしまいます。

そのためアプリでのプッシュ通知かセキュリティキーの利用のどちらかになりますが、前者はスマートフォンのパスコードの強度などに依存したりと問題があるため最終的にセキュリティキーを利用することにしました。

(一部のセキュリティキーはCVE-2021-3011の脆弱性が存在しますが、攻撃する難易度が高いため、比較的安全であると考えています。)

f:id:k725a:20210401105934p:plain
ログイン時にブラウザーからセキュリティキーに触れるよう求められる

また、当然セキュリティキーは物理的な物なので、何らかの形で在宅勤務を行っているメンバーの自宅へ配達しないといけません。

そのため、Google Forms経由で住所を提供して貰い、定形外郵便で送付を行いました。

f:id:k725a:20210401110129j:plain
セキュリティキーを入れた沢山の封筒

Context-Aware AccessとEndpoint Verification の導入

先程も書いたとおり、二段階認証だけでは、会社所有のデバイスか個人所有のデバイスかを見分ける術はありません。

幸いマシンの購入時にシリアル番号を控えていたため、Google Workspaceの会社所有デバイス登録機能を利用してまずは登録を行いました。

f:id:k725a:20210401110207p:plain
会社所有のデバイスを登録した例

Google WorkspaceではContext-Aware Accessという状況に基づいてアクセスの制御を行う仕組みがあるので、これを活用することにしました。

Context-Aware Accessにより、ディスクの暗号化の強制やOSの最低バージョンの強制、会社所有のデバイスのみという制限を有効にすることが出来ます。

f:id:k725a:20210401110237p:plain
macOS向けの制限

これだけではメンバーにポリシーの強制が出来ないので、Google Chromeの拡張機能であるEndpoint Verificationをインストールする必要があります。

しかし、拡張機能をインストールしてもらうのは削除されてしまったり無効化されてしまう恐れがあります。(アクセス出来なくなるだけですが…)

そこでGoogle WorkspaceからChromeの拡張機能をデプロイし、削除や無効化を防ぐことにしています。

ただし、Google Chromeのサインイン・同期を有効にしないとプロビジョニングされません。

f:id:k725a:20210401110310p:plain
削除・無効化が出来ない拡張機能(Endpoint Verification)と通常の拡張機能(Google Translate)

注意点として、Context-Aware AccessとEndpoint Verificationを利用すると、各GoogleサービスがGoogle Chrome のみ (派生ブラウザも不可) での利用になってしまいます。

f:id:k725a:20210401110349p:plain
Google Chrome派が圧倒的

BeyondCorp Enterprise の導入

Google Cloud Platformにも、Context-Aware Accessを導入することが出来ますが、別途BeyondCorp Enterprise の契約が必要になります。

契約自体はGoogleに連絡をし契約を行う形となっているため、少し手間がかかってしまいます。

https://cloud.google.com/beyondcorp-enterprise/pricing

現在、私達の部署ではこのBeyondCorp Enterpriseを導入をするために色々と動いています。

集中管理可能なエンドポイントセキュリティ製品の導入

これまで私達の部署では、エンドポイントセキュリティ製品として、McAfee Endpoint Security for Macを利用していましたが、メンバーにパッケージを配布してインストールして貰うという、スタンドアロンモードで運用しており、インストールにMcAfeeのステータス画面をエビデンスとして提出して貰うという非効率なことをしていました。

しかしMcAfeeにはMVISION ePolicy Orchestratorというオンラインから各デバイスの状況を把握するシステムがあるので、これを利用して各デバイスのインストール状況を把握することにしました。

f:id:k725a:20210401110417p:plain
マシン一覧

苦労した点としては、Windowsの場合は管理者権限でインストーラーを実行すればエージェントがインストールされ、必要なコンポーネント(脅威対策, ファイアウォールなど)が自動で入りますが、macOSの場合はカーネル拡張の許可やフルディスクアクセスの許可などをメンバーが手動で行わなければならず、操作に不慣れなメンバーなどは詰まってしまう自体が発生しました。

おわりに

今回はセキュリティキー・Context-Aware Access・エンドポイントセキュリティ製品などについて書きました。

次回はデバイスの管理を改善するお話しを書こうと思います。

マイポテ

馬場裕 Yutaka Baba

エンジニアリング統括部 第2開発部 第1グループ シニアエンジニア

2017年にパーソルキャリア株式会社に入社。前職では、主に受託開発や客先常駐でWebサービスやアプリ、業務システムの開発。dodaに関連するサービスの開発に従事し、キーワード検索やアンケート機能、新規サービス開発を効率的に行うためのAPI開発を行う。現在は、開発環境の整備や新規サービスの開発フォローをするグループを立ち上げ、「より早く、より自由に、より安全に」を目標に業務を行っている。

@_k725

@_k725さんのプロフィール

エンジニアリング統括部 第2開発部 第3グループ エンジニア

お寿司が好きです🍣

※2021年4月現在の情報です。

▶エンジニアリング統括部の求人ページはこちら