はじめに こんにちは、セキュリティを気にする年頃の ネクストモード株式会社 のtommyです...
【Netskope】ChromebookとNetskopeのマリアージュ
ChromebookにNetskopeを適用する場合のユースケースについて記載しています。
こんにちは! ネクストモード株式会社 のSaaS事業部hagiです。
会社ブログになってからビビって比較的まじめにやっています。
はじめに
お元気ですか?皆さん元気にサッシーしていますか?
私は毎日サッシーしています!
何をするにも介入しますからね。リモートワーカーの必須武器だと思います。(ポテチも)
本日は、Chromebookのお話をします。
Netskopeの対応プラットフォーム
Netskopeの対応プラットフォームは下記の通りです。
と言っても伝わらないのでラフに書き起こすとこのような感じです。
- WIndows
- macOS
- iOS
- Android
- Ubuntu
- Linux(Mint)
- ChromeOS
- VDI(Amazon WorkspacesやAzure Virtual Desktopなど)
この並びであれば、お客様からもしChromebook接続の要件を聞いた際に、まずこのリストを見て、安堵して、クライアント展開をお勧めするのが一般的かと思います。(申し遅れました、一般人です。)
ただ、これで終わるような話なら、私はガムを包んで毎日ポイポイしてしまっていますので、もし捨て紙に需要あればそれはそれでまた、今度書きます。
今回は、お客様から「なんかもっとこう、あるだろう?」と言われた(本人の理解)時のお話を書きたいと思います。
ちなみに今回はクライアントタイプのお話についてはほぼ書きません。(優劣が気になってるうちは半人前)
なんかもっとこう、あるだろう?
こちらのお客様(ほぼ妄想)は、Chromebookを全社利用中で、端末の管理はみんな大好きadmin.google.com(Google管理コンソール)で一元化しています。
いざクライアント展開のお話に進み、従業員向けの動線を考えるフェーズとなりました。(実際はIdPの話題もあって紆余曲折しています)
展開のための設定を済ませると、前後関係はあれど裏で以下のロジックが働いたのち、実際使えるようになります。
- 証明書配布
- アプリ配布
- POPへの接続処理
- 業務中こっそり見てた怪しいサイトアクセスが可視化される!(例)
ここで突然の余談ですが、モバイル向けトンネルアプリは、(おそらくメーカー問わず)OSの仕様上VPN接続の名目でクラウド側のエンドポイントとトンネル通信を行う事が多いです。
またこちらも余談ですが、ChromebookのアプリはAndroidのランタイムで動作しているため、実質Androidアプリです。
言い方が難しいのでCMを挟みましたが、伝わる人には伝わってほしいなと思います。
何が言いたいかというと、アプリ外の動作も含めてトータルでユーザー(従業員)エクスペリエンスを考えなければいけないということです。
現場は複数のAPがクラウドで統合管理されていて、SOHO向けにもGoできる大手メーカーのWi-Fiが敷設されており、会議室の移動でハンドオーバーなども頻繁に行われるそうです。
極端な話、レガシーなVPN装置相手みたく、ちょこちょこと接続が切れる度に「今再送走ってるかな?」「まだ繋がってるかな?」を気にするような使い勝手は古(いにしえ)に置いてゆきたいわけです。
放っておくと、「コイツは死ぬまで待つより手で殺してやった方が早く楽になれる」などの裏技が社内Tipsとして広まるかもしれません。※NWの話です。
話を戻すと、通信品質にあまり依存せず、柔軟に運用できて、かつ管理者側でガッチリコントロールできるアイディアはないかというオーダーこそが「なんかもっとこう、あるだろう?」の正体です。
Explicit Proxy
ちょっと休憩している時に限って、過去にやり残したタスクが脳内に直接喋りかけてくることってありますよね。
かく言う私も世界の諸先輩方を見習って日頃からKnowledge Portalを見回しているのですが、この日もちょうど意識が霞んで(悟ってる意味ではむしろ冴えて)いたためにそういうお時間がやってきました。
「……シィ」
「…プリィシィ…」
「チョッキプルリリィィィ…」
「エクスプリシットプロクシィ…」
Explicit Proxy を閃きました。(実話です)
https://docs.netskope.com/en/netskope-help/traffic-steering/explicit-proxy/
これは一言で表すとその名の通り、Proxy サーバーの宛先として Netskope エンドポイントを登録し、ユーザーの判別を IdP に委ねて使うタイプの使い勝手を指します。
まずは私の苦手なポンチ絵をご覧ください。
※分かりやすくするため若干キャラクターを脚色しています。
なんとなく理解できたでしょうか?
今回ずっと気にはなっていたけど使い所が見いだせていなかったExplicit Proxyを検証してみたいと思います。
こ こ か ら 本 題
これまでの長いクダリよりもExplicit Proxyの使い所に興味がある方は以下をご参考ください。個人のイメージも含まれます。
- 接続行為不要(語弊がありますが、使いたい時にいきなりリクエストできるという意味)
- クライアント不要(今後のアップデートで起こり得る急なイレギュラーに悩まされない)
- 今回ChromeOSが故にChromeブラウザ上でコントロールが完結する(実装がシンプルになる)
- 今回ChromeOSが故に別途のUEM製品などなくガッチリ組める(Google様々)
早速設定していきます。
まずはIdP連携のためのSAML Forward Proxy設定が必要です。
Oktaであればこの記事を参考にすればサクッと済ませられます。
https://info.nextmode.co.jp/blog/install-the-netskope-client-in-idp-mode-and-enroll-users
続いて、Netskopeの証明書をChromebookに配ります。
テナントにログインして、Settings
→Manage
→Certificates
→SIGNING CA
より、各証明書をダウンロードします。
次にGoogle Workspace管理コンソールへ移動し、デバイス
→ネットワーク
→証明書→
証明書を追加から証明書を追加しましょう。
ここからもしばらくGoogle設定になるためテンポ良くいきたいですが、デバイス→Chrome→設定→ユーザーとブラウザ→プロキシモードにて、ユーザーに設定を許可となっていることを確認します。
Chrome拡張を配るため、デバイス→Chrome→アプリと拡張機能→ユーザーとブラウザに移動して、適用先の組織を左側のツリーで選択してからNetskopeのChrome拡張を追加します。
↓
インストールポリシーは「インストールしてブラウザのツールバーに固定する」にします。
インストールポリシーと同じページの下の方に、拡張機能のポリシーを記載する欄があり、こちらでちょっとしたJSONオブジェクトを手書きします。
構文の例は下記の通り簡単です。
{"tenant": { "Value": "<full-tenant-name>" }, "block_disable": { "Value": true }, "enforce_os": { "Value": ["cros"] }, "bypass_list": { "Value": [ "<comma-seperated_url_lists>" ] } } |
- tenant…xxxx.goskope.comのような記載を入れればOK
- block_disable…ユーザーによるDisableを禁止するもの。基本的にこのままでOK
- enforce_os…Chromebookであればcros固定でOK
- bypass_list…除外するURL。Chromebookであれば初期に推奨する除外リストがあります。
"bypass_list":{ "Value":[ "*.1e100.net", "accounts.google.com", "accounts.google.co.uk", "accounts.gstatic.com", "accounts.youtube.com", "alt*.gstatic.com", "chromeos-ca.gstatic.com", "chromeosquirksserver-pa.googleapis.com", "clients1.google.com", "clients2.google.com", "clients3.google.com", "clients4.google.com", "clients2.googleusercontent.com", "cloudsearch.googleapis.com", "commondatastorage.googleapis.com", "cros-omahaproxy.appspot.com", "dl.google.com", "dl-ssl.google.com", "firebaseperusertopics-pa.googleapis.com", "*.googleusercontent.com", "*.gvt1.com", "gweb-gettingstartedguide.appspot.com", "m.google.com", "omahaproxy.appspot.com", "pack.google.com", "policies.google.com", "printerconfigurations.googleusercontent.com", "safebrowsing-cache.google.com", "safebrowsing.google.com", "ssl.gstatic.com", "storage.googleapis.com", "tools.google.com", "www.googleapis.com", "www.gstatic.com" ] } |
また、IdPで使うURLも除外する必要があります。
さて、適用が済めば、端末側で即座にデプロイされてくるはずです。
適用確認は、ブラウザ上でchrome://policyを入力しましょう。
最下部に、適用状況が表示されてきます。
残りのポリシーもサクサクいきます。ここからはOS制限系の設定になります。
デバイス→Chrome→設定→ユーザーとブラウザ→任意の組織から、シークレットモードを無効に設定します。
CA証明書の改ざんも抑止します。
デバイス→Chrome→アプリと拡張機能→任意の組織→追加の設定から、アプリインストール、プロキシ設定、VPNプロバイダ設定を抑止します。
ランタイムでブロックされているホストの入力も忘れずに。
使ってみよう
設定が終わったので早速Webアクセスしてみましょう。
↓↓↓
はい繋がらないですね!
と゛お゛し゛て゛た゛よ゛お゛お゛お゛!
※この後しばらくムシャクシャしました。
If using non-Google IdP ensure that you add relevant domains for SAML auth to bypass to this list.
IdPで使うURLも除外する必要があります。という点について、先ほど確認しました。
やってるもんね。今回はOktaを試しているので、バイパスドメインはokta.comでしょうが。違うのかい。
開発者モードで見てみましょ。。。
↓↓↓
oktacdn.comとは!
聞いたことない(もしくはアルコールと一緒に揮発してる)です。
念のためWhoisを引いてみる。
しっかりOkta所有のようです。
ちなみにNetskopeでもカテゴライズされていました!知らないのは私だけでした。すみませんでした。。
ということで、JSONのBypass_listに"*.oktacdn.com"を追加します。
※その他の推奨リストはコチラをご参考ください
しっかり通りました!
楽!
早!
サイコー!
細かいユースケース、制約など
【Disableしたい場合】
展開フェーズで一時的にトラブルシュートしたい場合の措置として、Netskope Clientの場合はタスクバーからDisableを許可する設定がありますが、Chrome拡張からもそういった選択肢を出すことは可能です。具体的には件のJSON定義でblock_disableをfalseにすれば、Chrome拡張のアイコンにDisableの選択肢が出現します。しかし、個人的にはそちらを許すよりも、もっと明確に切り分けられる手段として、シークレットブラウザに切り替える方法をオススメします。Explicit Proxyの機能は、あくまでChrome拡張から提供されるため、シークレットブラウザからの利用で簡単に機能がDisableできるものとなります。合わせて、今回手順としてはサクサク進めましたが、管理側からいくつかの強制設定をかけることで本番運用後はガッツリ制御も可能です。
【ログのトレース】
アクセス先のトレースという意味ではデベロッパーツールでHARファイルが取れれば実現できるかと思います。
ブラウザ外の挙動などで可視化に対応しきれない場合は、管理者のみNetskope Client版を忍ばせておいて再現確認に活用することをオススメします。
【除外】
本質的にはProxyなので、プロセス除外(App Instance)という概念は適用できないです。ドメインをBypass_listに記載して一律除外する必要があります。
【その他】
Disableしたい場合のクダリで書きましたが、シークレットブラウザの禁止などの機能制約がユーザーにもたらされる点を許容する必要があります。
まとめ
良い夏休みをお過ごしください。