Alibaba Cloud活用で日中間のゼロトラストネットワークを実現
はじめに
本記事では、Alibaba CloudとCloudflareとOktaを組み合わせて中国のクライアントから日本のWebサーバへゼロトラストネットワークによるアクセスを行う方法をご紹介します。
構成図
各コンポーネントを簡単に紹介します
- Alibaba Cloud
- VPN Gateway:フルトンネル接続で中国クライアントのすべてのトラフィックを受けます
- CEN:上海VPCと東京VPC間をセキュア&安定性に優れた専用線で接続します
- ECS(NAT Server):Linux NATサーバです。これで中国から日本のインターネットを利用できます
- Active Directory:オンプレミスのADDSサーバです
- Okta:IDaaSです。ADユーザ情報を基にした認証を導入するため、AccessのIdPとして利用します
- Cloudflare Access:Webサーバへのアクセスに認証システムを導入し、ゼロトラストセキュリティを実現します
Objective
やりたいことのタスクを整理します。
- 中国クライアントはAlibaba Cloud上海リージョンのVPN GatewayにSSL-VPNでフルトンネル接続
- CENを通じて東京リージョンのNATサーバへアクセス。デフォルトルートはこのNATサーバに向けておく
- ADDSサーバを構築しておき、更にOktaにインポートしておく
- OktaとCloudflare AccessをOpenID Connectする
- Cloudflare AccessでWebサイトの認証およびDNS設定をする
Alibaba Cloud編
ここでは上海VPCのVPN Gateway(SSL-VPN)へフルトンネルで接続する方法をご紹介します。
SSLクライアントのページを開いて、証明書とOpenVPNプロファイルのセットをダウンロードします。
「cert.zip」という名前のファイルが取得できるので、zip解凍しましょう。
config.ovpnファイルをテキストエディタで編集して以下の2行を追加します。
redirect-gateway autolocal
dhcp-option DNS 8.8.8.8
※明示的にDNSサーバも指定する場合
設定の全容はこのような形です。
あとは保存して、OpenVPNクライアントにインポートしましょう。
これでVPN Gatewayに接続するとフルトンネルでアクセスできます。
あとは東京VPC側でNATサーバも構築完了して、VPCの設定でデフォルトルートを向けてあげれば…
中国クライアントからすべてのトラフィックを東京VPCにあるNATサーバへ流すので
結果として日本のインターネットへブレイクアウトします。
Googleへもアクセス可能です。
画面左下のロケーションが「日本」となっていることからも、Google側も日本からのアクセスと判定していますね。
Okta編
今回AccessのIdPとしてAD連携したOktaを採用しています。
その理由として、AccessでActive Directoryの情報で認証を行うにはオンプレADDSと連携したAzure ADやADFSのMS系プロダクトをIdPとすることも当然可能ですが、設定ステップが少なく一番導入が容易なOktaにしました。
開発・検証用途は無償です。詳細は以下より
https://www.okta.com/jp/press-room/press-releases/okta-developer-starter/
オンプレミスのADDSサーバには自身の情報のユーザを1つ追加しただけの
いたってシンプルなADです。
オンプレミスのADDSサーバにOktaのADエージェントをインストールし
OktaにADユーザ情報を同期させています。
Accessと連携させるための認証設定を行います。
左サイドバーより[Applications]を選択
[Create App Integration]ボタンを選択します。
Sign-on methodは[OIDC - OpenID Connect]を選択
Application typeは[Web Application]を選択してNext
続いてこのアプリケーション設定を行います。
App Integration Nameは任意
Sign-in redirect URIsはCloudflare TeamsチームドメインのCallBack URIを入力します。
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback
そして一旦Saveします。
[Applications]の画面より、先ほど作成したAccessの連携アプリケーション設定を開きます
そしてClient IDとClient secretを控えておきます。
後ほどCloudflare側で使用します。
[Sign On]タブへ遷移して
OpenID Connect ID TokenのGroups claim filterを以下に設定します。
groups
:Matches regex
:.*
続いて[Assignments]タブへ遷移して
アサインするユーザ/グループを選択します。
今回はADDSサーバよりインポートした自身のユーザのみ選択しました。
自分専用のOkta リッチ
以上でOktaの設定は完了です。
Cloudflare編
Teamsにログインして左サイドバー[Configuration]→[Authentication]より
[+Add]をクリック
一覧よりOktaを選択
Name:任意
App IDは先ほどのOktaの画面で控えていたClient IDを入力
Client secretは同様にOktaのClient secretを入力
そしてSaveします。 これでOkta連携設定は完了です。
続いてOktaの認証を用いてアクセスするためのサイト(アプリケーション)を設定します。
サイドバーより[Access]→[Applications]を選択
[Add an application]ボタンをクリック
ZoomやGoogleWorkplaceなどへ認証を導入したい場合は[SaaS]を選択しますが
今回は自作Webページへアクセスさせたいので[Self-hosted]を選択。
Application nameは任意
Application domainには所有ドメイン上からサイトドメインを設定します。
ルートドメインでも構いませんしサブドメインにしてもOKです。
私の場合はsaito.mydomain.com
としました。
Identity providersにはOktaのみを今回選択します。
そしてアクセスルールも作成しておきましょう。
今回はOktaのDomain Usersグループに所属するユーザのみ認証可とします。
ADDSサーバでは標準でDomain Usersグループが作成されますが
Oktaへのインポート時に自動でグループも取り込まれます。
もちろん私個人のユーザ情報もこのグループに格納されておりますので問題なし。
その他Countryで国の接続元制限をかけたり等、幅広くポリシーを書くことが出来ます。
最後に、DNS設定をします。
Teamsではなく通常のCloudflareダッシュボードに遷移して
DNSよりオリジンサーバのレコードを登録してあげます。
この際、例えばAレコードならば名前
に先ほどApplication domainに設定した値を入力してください。
今回の場合はsaito
ですね。
そしてオリジンサーバのIPアドレスも入力 してあげたら[保存]ボタンをクリックして完了。
※Argo Tunnelでオリジンサーバを登録する際は、DNSレコード登録も自動です。
では早速アクセス
上海にWindowsクライアントを用意しました。(実際はAlibaba Cloud上海リージョンにあるDaaS環境です)
Cloudflareに登録したURLにアクセスします。
するとオリジンサーバにそのままではアクセスさせてくれず
認証画面が表示されます。ではOktaを選択しましょう。
Oktaのサインイン画面へリダイレクトされました。
Oktaのディレクトリに登録してあるユーザ名とパスワードを入力してサインインします。
Oktaで認証成功するとアクセストークンが発行→Webブラウザに送信され
Webサイトへアクセスが出来るようになります。
無事アクセスできましたね
実運用ではどう使う
Accessはポータル機能を標準で用意しています。
つまり先ほどの実演のように、1つ1つのサイトやSaaSに対して個別に認証しなくとも、ポータルに1度サインインしてしまえば、有効期限内はシングルサインオン(SSO)が可能になります。
このようなイメージです↓
社内のポータルサイトやSalesforce、会議用のZoomや日本にあるDaaS環境へのRDP接続などに対して、Accessを挟むことでゼロトラストセキュリティが簡単に実現できるようになります。
そしてその環境に中国からでも、Alibaba Cloudを利用することで
低コスト&高品質&高機密な接続ができます
最後に
本記事では、libaba Cloud活用で日中間のゼロトラストネットワークを実現する方法をご紹介しました。
今回のようにVPN Gateway+CEN+NATサーバの構成を活用すれば日本で展開している様々なSaaSを中国から利用可能になります。
ご興味ございましたら、ぜひ実際にハンズオンしてみてください。