SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

Zero Trustの大本命 SDPについて

セキュリティ
2019.09.20

SDP (Software Defined Perimeter)とは


Perimeterとは"境界"を指します。この境界とは、ネットワーク的な境界のことで、インターネットであれば、WANとLANというような境界です。

ネットワーク・セキュリティにおいて、最初に実装されるセキュリティといえば、ゲートウェイとして設置されるファイアウオールがありますがこれがこちらが境界でしょう。

SDPとはCSAで策定されたオープンスタンダードです。ゼロトラストを実現するための、新しいVPNソリューションとも言えますが、従来のVPNソリューションとは大きく概念が異なります。 詳細な内容はこちらで定義されています。
クラウド時代に求められる最新の認証方式 ソフトウエア・デファインド・ペリメタ(Software Defined Perimeter:SDP) の活用

働く場所、時間がどんどん変化する時代にゼロトラスト思考のネットワークソリューションが必要となります。ゼロトラスト型のSDPってどんなものなのか実際に試してみました。

ゼロトラストの大本命とはSDP。Cyxtera AppGate SDP


Cyxtera AppGate SDPとは、オンプレミス型のSDPソリューションです。インターネットで検索すると、「ゼロトラストモデルに基づいた」というキーワードも見られるので、どういうところがゼロトラストなのか見てみましょう。

検証やってみました

AppGate SDPは仮想アプライアンス型の製品となるため、検証の際はVMWare ESXiなどの仮想環境を事前に用意してください。 AppGate SDPにはコントローラー、ゲートウェイ、ログサーバー、IoTゲートウェイのコンポーネントがありますが、今回はコントローラー、ゲートウェイ、ログサーバーの3つのコンポーネントを1つの仮想マシン上で展開します。 更に、インターネット上からユーザー/デバイスを認証するために、コントローラーを宛先NAT(DNAT)で外部公開しておく必要があります。(HTTPS)

検証構成図.png

コントローラーとゲートウェイが重要

SDPが従来のVPNより安全なのがこのコンポーネントのおかげだと思います。

sdp-component.png


従来のVPNの場合、インターネット上に公開されたVPNゲートウェイにユーザー自身がアクセスします。ゲートウェイの先には保護するネットワークが接続されているはずです。 VPNゲートウェイはユーザーがどこからでもアクセスできるように常にインターネット上に公開されており、外部からの攻撃にさらされています。

一方SDPの場合はユーザーからの最初の受付はコントローラーになります。インターネット上に公開されているのはコントローラーのみです。コントローラーで認証を行うと、適切な権限を付与した情報が、トークンという形で、ゲートウェイへ引き渡されます。 VPN接続するためにはコントローラーでのみ、トークンの生成が必要で、ゲートウェイへのアクセスはトークンがない限り行うことができません。

AppGate SDPの管理画面

ダッシュボードは非常にシンプルで、メニューもそれほど多くありません。

sdp1.png 大項目のメニューも多くなく、リモートから安全に接続するための機能のみを提供する設定項目になっています。

AppGate SDPのオペレーションの設定では、ポリシー、コンディション、エンタイトルメントとリングフェンスと呼ばれる4つの機能を実装します。 このオペレーションの設定をうまく組み合わせることによって、クライアント単位に適切なアクセス権や状態の監視を行っていくわけです。

sdp2.png

オペレーション


AppGate SDPを設定するためには、ポリシーの設定の概要を簡単に理解しておけば大丈夫です。 ただしこのポリシーがゼロトラストを実現するために非常に重要です。エンタイトルメントの状態をアサインメントコンディションの2つの機能でチェックします。

ポリシーイメージ図.png

ポリシーとコンディションのダブルチェック

ゼロトラストを実現するためには、正しいことを検証に基づいて証明する必要があります。

AppGate SDPはそれを実現するために、ポリシー(認証前のチェック)とコンディション(資格の検証)を異なるコンポーネントが行うことで、無責任な信頼をしない仕組みを構成しています。 上の図で見ると、ちょうど"Entitlement"をポリシーとコンディションでチェックするという形です。

例え話ですが

すごい技術資格を持っているエンジニアがいました。その人が資格相当のスキルがあるかどうかは仕事をしてみないとわかりません。彼は技術資格を取るためにスクールに通いましたが現場での経験はありませんでした。

よくある話だと思いますが、人間であれば入社後の経験が資格と結びつくことで将来の期待ができますが、やはり資格(信頼)がスキル(証明)というのは全く次元の違うものだということはしっかり認識しておく必要があり、ITシステムでは資格は証明できないと意味がありません。 AppGate SDPはこの問題をポリシーコンディションという機能をつかって実現します。

AppGate SDPの3つの設定要素


ポリシー、エンタイトルメント、コンディション

ポリシー

クライアントに割り当てるアクセス権を設定します。

sdp3.png

  • アサインメント
    ルールを割り当てる前の、資格条件です。ユーザー情報、デバイス情報、システム情報という3つの要素を検証することができます。

    sdp4.png ※図にはデバイスとシステムの要素だけが表示されていますが、ユーザーの要素もあります。

検証方法は更に条件は細かくて制御できます。


  1. 条件にすべて一致する
    • AとBの条件があったら、どっちも一致した場合
  2. いずれかの条件に一致する
    • AとBの条件があったら、どっちか一致した場合
  3. カスタムロジック(複合的な条件)の一致
    • AとBとCとDの条件があったら、AとBの一致でCまたはDの条件が一致した場合

という方法で条件を設定することができます。つまり組み合わせ次第で、柔軟なポリシー設定ができるわけですが、他にもスクリプト(Oracle JavaScript形式)で記入も可能です。

エンタイトルメント

エンタイトルメントは、ユーザーに割り当てるネットワーク範囲の指定です。IPアドレス(サブネット指定)、TCP/UDP、ICMP、GRE、AH/ESPとVPN接続したデバイスに割り当てるアクセスルールを定義できます。

sdp6.png

サービス名などは登録されていないので、HTTPSやSSHなどといったサービス名では指定できず、すべてポート番号で指定する必要があります。

これらの設定によってポリシーのアサインメントに合致した際、関連付けられたエンタイトルメントがユーザーに適用される仕組みです。

コンディション

コンディションはエンタイトルメントを維持するための、状態を検証する機能です。ポリシーのアサインメントと同じ条件を設定することができます。 ポリシーでは、認証時の状態を検証する行為に対して、コンディションは認証後のポリシーの維持を検証するために役に立ちます。

例えばアサインメントでは、認証サーバー、接続IP、OS名などの条件を定義しておき、コンディションではユーザー可変の値ファイアウォールの稼働、OSアドミン権限の変化を監視するということができます。

sdp7.png

検証シナリオ:


リモートアクセスVPNは、社内で管理されたデバイスからの接続のみ許可され、認証サーバーにて認証される必要があります。
もしWindowsファイアウォールがOFFにされた場合はVPNから自動的に切り離します。
このとき、ファイアウォールを再度ONにして再接続すると、元のVPN接続がきますが、OFFの状態で再接続すると、VPNに接続ができないようにしたい。

一見すると、普通のVPNソリューションでできそうな要件ですが、実は難しい要件が隠れています。

もしWindowsファイアウォールがOFFにされた場合はVPNから自動的に切り離します。

この条件を解決するためには、VPN接続中の資格状態を検証する必要があります。

実装

1. コンディションを作る

ファイアウォールの設定の状態を監視するための機能を有効にします。

sdp8.png

2. エンタイトルメントを作る

認証を通過したクライアントに割り当てるネットワーク範囲を指定します。

sdp9.png

3. ポリシーを作る

アサインメントでは、IDP(Windows Active Directoryの認証情報を参照)することを前提に、いくつかVPNの接続条件を定義したものを作成し、エンタイトルメントを関連付けます。

sdp10.png

基本的なネットワーク設定ができていれば上記の設定で終了です。

さて用意が整ったので、早速VPN接続を行いましょう。

デバイスを接続

AppGate SDP クライアントソフトをPCにインストールして接続します。

VPN接続するデバイスにAppGate SDPのクライアントソフトウェアをインストールし、コントローラーへ接続します。

  • IDPを選択
  • ユーザー名、パスワードを入力

    sdp12.png
    sdp13.png

VPNが繋がるとアクセスしている状態が見えます。 また、管理画面にアクセスすると、オンボーディング(デバイス認証されたデバイス)の状態が見えます。結構細かい情報が表示されていることがわかります。

sdp11.png ※ここに表示されている項目はポリシーやコンディションでチェック可能な項目です。

状態の変化

VPNが接続している状態で、WindowsファイアウォールをOFFにしてみます。5分に1回のコンディションチェックを設定したので、しばらくするとVPN接続に変化が起こります。

sdp14.png

AppGate SDPが状態変化を検出

sdp15.png

※設定は英語ですが、日本語のメッセージも可能なようです。
この後はWindowsファイアウォールを正しくセットして、VPNを再接続すれば、元通りの接続が可能となるわけです。

まとめ


自然災害(台風・地震)やインフルエンザなどで急遽出勤ができなくなるときもあります。そんなときこそVPNが必要です。 リモートアクセスこそ安全なアクセス方法を確保すべきですが、難しい認証システムとの連携となると、導入やユーザーのフォローは本当に大変です。

今リモートアクセスのVPNに対して、こんなお困りごとがあれば

  • 認証はユーザー情報(ユーザー名/パスワード)だけでなく、デバイス認証も実施したい。
  • ゲートウェイへの直接アクセスをなるべく回避したい。
  • 認可された後の制御、アクセスルールをしっかり管理したい。
  • 認証、アクセス管理、VPN通信を1つのソリューションにまとめたい。

ゼロトラスト型のSDPソリューションを選択肢にしれてみてはいかがでしょうか?

著者紹介

SB C&S株式会社
技術統括部 第3技術部 2課
宮本 世華

釣りが好きです。