ZPA APPコネクタをAlibaba Cloud上に構築してRDP接続してみた

f:id:sbc_saito:20210927033901p:plain

(2021年9月27日掲載)
皆様こんにちは! プロダクト技術課の斎藤です。

ソフトバンクでは企業のネットワークへの安全かつ柔軟なリモートアクセス環境を実現する Zscaler™プライベートアクセス(以下ZPA)を提供しております。

www.softbank.jp

今回はソフトバンクの提供するZPAを利用して、Alibaba Cloud上にある仮想マシン(ECS)に"安全"にRDP接続してみます。

ZPAのアーキテクチャ

ZPAとはZscaler公式によると

ZPA(Zscaler Private Access)は、ユーザ/アプリケーション中心のアプローチをプライベートアプリケーションアクセスに採用しています。完全クラウド提供型のサービスであるZPAは、個々のデバイスとアプリの間にセキュアセグメントを作成することで、許可されたユーザだけが特定のプライベートアプリケーションにアクセスできるようにします。したがって、ユーザのネットワークアクセスや水平方向の移動が発生することはありません。ZPAは、物理/仮想アプライアンスに依存するのではなく、軽量のソフトウェアを使用してアプリやユーザをZscaler Security Cloudに接続し、ユーザに最も近い場所で、仲介されたマイクロトンネルが連結されます。
引用元 https://www.zscaler.jp/products/zscaler-private-access

とのこと。

つまりプライベートなリソースへのアクセスに従来のVPNを必要とせず、ユーザやデバイスを認証して許可が与えられた場合のみリソースへのアクセスが可能となります。 昨今話題のゼロトラストネットワークアクセスを実現するソリューションですね。

ZPAの重要なコンポーネントを紹介します。

ZPA Service Edgesとは

ZPA Service EdgesとはZPAのインターネットゲートウェイです。
世界中のZscalerデータセンターに導入されており、管理ポータルで設定したポリシーに基づいて通信を転送or破棄する役割を担っています。

Zscaler Client Connector(ZCC)とは

ZPAを利用するにあたってのクライアント側のクライアントソフトになります。 様々なOSやデバイスに対応し、ZPA Service Edgesとの暗号化トンネル接続やセキュリティコントロールを行います。

ZPA APPコネクタとは

ZPA APPコネクタはプライベートリソースとZPA Service Edgesの間に存在する安全なZPAの認証インターフェースであり
ZPA Service Edgesとの間で暗号化トンネル接続を行います。
ZPA APPコネクタはプライベートリソースと同じ場所でも、プライベートリソースにアクセスが可能な任意の場所のどちらでも構築することが可能ですが
レスポンスやセキュリティの観点から、通常プライベートリソースに近いDMZに設置することが望ましいです。

f:id:sbc_saito:20210927193446p:plain

構成図

今回の構成図です。
クライアント端末にはZCCをインストールして、ZPAのIdPとしてはOktaを採用します。
Oktaの認証が成功したRDPのトラフィックはZPA Service Edges→NAT Gateway→ZPA APPコネクタを経由してWindowsをインストールしたECSに到達します。
ちなみにNAT GatewayではDNATルールを記載する必要はありません。ZPA APPコネクタ側からのアウトバウンド通信(SNAT)が可能であれば
TLS暗号化トンネルを確立してトンネル内でRDP通信が出来ます。
また今回は事前にIdPとZCCの設定は完了しているものとします。

f:id:sbc_saito:20210924040531p:plain

ZPA管理ポータルの設定

本記事ではZPA管理ポータルの詳細な設定方法はご紹介いたしませんが
ZPAの全般的な設定を行う管理ポータルでの作業フローの概要は以下の通りです。
f:id:sbc_saito:20210927002552p:plain
後のステップで前のステップで作成したオブジェクトを指定するため、この通りに進める必要があります。

かなりステップが多いですが、まだ終わりではありません。
Alibaba Cloud上に必要なZPA APPコネクタのECSインスタンスを作成しなければなりません。
柔軟で強靭なゼロトラストネットワークを手に入れるためには必要ですので頑張っていきましょう。

ZPA APPコネクタのプロビジョニング

ZPA APPコネクタはAWSやAzure上では、各プラットフォーム上のMarketplaceでイメージ公開されていますが
Alibaba Cloudでは未対応ですので、手動で構築する必要があります。
とはいえステップは比較的簡単です。

ZPA APPコネクタの動作要件

OS:CentOS,RHEL CPU:ハイパースレッディングを備えた仮想マシン(VM)用の4つのCPUコア(Xeon E5クラス)
メモリ:4GB以上
Disk:8GB以上
ENI:1つ以上


となり、上記基準で構築したZPA APPコネクタは最大500Mbps(上り下り合計)のスループットがサポートされます。

ECSインスタンスの作成

新しい世代&メモリ8GBあるc6.xlargeを今回選択しました。

f:id:sbc_saito:20210927015809p:plain

OSは作成当時最新のCentOS8.3、Diskは初期標準のESSD 40GBを選択して作成します。
NAT GatewayにてSNATを行うので、Public IPないしEIPは今回不要です。プライベートIPのみでOK。

f:id:sbc_saito:20210927015813p:plain

ZPA APPコネクタ構築

ECSインスタンスが正常に作成されたら、SSH or VNC等でマシンにログインします。
sudoコマンドあるいはrootユーザにて下記を実行していきます。

1.ZPA APPコネクタのリポジトリ登録

[root@ecs-daas-zpa ~]# sudo vi /etc/yum.repos.d/zscaler.repo

[zscaler]
name=Zscaler Private Access Repository
baseurl=https://yum.private.zscaler.com/yum/el7
enabled=1
gpgcheck=1
gpgkey=https://yum.private.zscaler.com/gpg



2.ZPA APPコネクタのインストール

[root@ecs-daas-zpa ~]# sudo yum -y install zpa-connector

1.5MBくらいのrpmファイルがDL/インストールされ、ZPA APPコネクタが導入されました。



3.ZPA APPコネクタの停止

ここで一旦ZPA APPコネクタを停止します。
(既に停止している場合は問題ありません)

[root@ecs-daas-zpa ~]sudo systemctl stop zpa-connector



4.Provisioning Keyファイルの作成

[root@ecs-daas-zpa ~]# sudo touch /opt/zscaler/var/provision_key



5.Provisioning KeyファイルのPermission変更

[root@ecs-daas-zpa ~]# sudo chmod 644 /opt/zscaler/var/provision_key



6.Provisioning Keyの確認(ZPA管理ポータル)

ここでZPA管理ポータルにログインします。
Administration>APP CONNECTOR MANAGEMENT>App Connector Provisioning Keys
から対象のProvisioning Keyをコピーして控えます。

f:id:sbc_saito:20210927022819p:plain



7.Provisioning Keyの登録

[root@ecs-daas-zpa ~]# sudo vi /opt/zscaler/var/provision_key

Provisioning Keyを貼り付けて保存



8.Provisioning Keyの登録確認

[root@ecs-daas-zpa ~]# sudo cat /opt/zscaler/var/provision_key

Provisioning Keyが表示されます



9.ZPA APPコネクタのサービス自動起動化

[root@ecs-daas-zpa ~]# sudo systemctl enable zpa-connector



10.ZPA APPコネクタのサービス起動

[root@ecs-daas-zpa ~]# sudo systemctl start zpa-connector



11.ZPA APPコネクタの起動確認(ZPA管理ポータル)

再びZPA管理ポータルです。 正しくZPA APPコネクタがプロビジョニングされていれば Administration>APP CONNECTOR MANAGEMENT>App Connectors
に自動的にApp Connecorオブジェクトが新規作成されているはずです。 また、Connection Statusが[Connected]となっていることも確認してください。 これでZPA APPコネクタの構築は完了です。

f:id:sbc_saito:20210927023947p:plain



12.Access Policyの定義(ZPA管理ポータル)

ZPA管理ポータルから
Administration>POLICY MANAGEMENT>Access Policy
へ遷移し、新規Access Policyを作成します。
ポリシーの対象条件としてすべてのApp Connectors、Windows ECSのApplication Segmentsを複数台選択し、Allowとしました。

f:id:sbc_saito:20210927025645p:plain

参考 App Connector Deployment Guide for Centos, Oracle, and Redhat | Zscaler

動作確認

クライアント端末にてZCCを起動するとIDとパスワードが求められるので入力。
f:id:sbc_saito:20210927030808p:plain
すると連携済みのIdPにリダイレクトされ、再度IDとパスワードを入力します。

f:id:sbc_saito:20210927030811p:plain

ログインが完了したらService StatusとAuthentication Statusを確認します。

f:id:sbc_saito:20210927030815p:plain

この状態でZCCとZPA Service Edges間で接続が行われているので
いつでもサーバへのゼロトラストアクセスがReadyな状態です。

RDPクライアントを起動します。
宛先はWindowsインストール済みECSのプライベートIPです。
それでは接続!

f:id:sbc_saito:20210927031247p:plain

接続完了!RDPステータスも良好ですね。
通常のRDPと操作感も何ら変わりません。ファイルのコピー等RDPで可能なことは問題なく行えます。

f:id:sbc_saito:20210927031251p:plain

あとがき

以上でAlibaba Cloud上でZPA APPコネクタの動作確認やZPAとの接続の正常動作が確認できました。

安全なネットワーク上でRDPするだけであれば、SSL-VPNやSAG-APPでも事足りるかもしれませんが
複雑な認証が可能、ユーザ単位でのログ可視化などZPAは導入メリットが多いです。

セキュリティやコストの要件/規模に合わせて最適なリモートアクセスの仕組みを導入しましょう!

関連サービス

Alibaba Cloud