SEくぼたの事件簿

インフラSEとしての活動を記録していきます

ApplicationProxyを利用して社外からVPNなしでガルーンサーバーへアクセスしてみる

こんにちは。

最近テレワークの会社が増えたからなのか社内のアプリケーションへのアクセスにVPNなしでやる方法があるならそれがいいといわれる機会がありました。

前々からAzureAD Application Proxyを試してみたかったのもあったので今回試して見ようと思います。

ってことで今回は!

「社外からVPNなしでガルーンサーバーへアクセスしてみる」をやってみたいと思います。

 

  • 概要

ApplicationProxy自体は検索するとどんなものなのか結構いっぱいでてきたので概要だけさらっと記載していきます。

まずApplicationProxyを利用するのに必要なライセンスですが

・Azure Active Directory Premium P1

が必要となります。

※アクセスする人数分必要です。

 

次にどんなアクセス経路になるかの概要図です。

ざっくりと下図のような感じでアクセスしていきます。

※今回はガルーンにアクセスさせるので右側がガルーンになっています。

ネクターサーバーとガルーンサーバー、ADサーバーはそれぞれサーバーOSをWindowsで準備しています。

f:id:KKubo19:20210624191036p:plain

通信の流れを簡単に!

①②AzureADで認証してトークンを取得(ユーザーはユーザーIDとパスワードを入力)多要素認証してたらそれも適用されます!

③デバイスからアプリケーションプロキシサービスにトークンを送信

 アプリケーションプロキシサービスがデバイスから受け取ったトークンでUPNとSPNを取得しアプリケーションプロキシコネクタに送信

④コネクタがADと認証を実施(今回はSSO設定するので)

⑤コネクタがガルーンにアクセス

⑥ガルーンの応答をアプリケーションプロキシサービス経由でデバイスに送信

って感じです。

詳しくはこちら

オンプレミスのアプリへのリモート アクセス - Azure AD アプリケーション プロキシ | Microsoft Docs

 

今回の構成ではAD認証を利用してガルーンにアクセスする必要があります。

アプリケーションプロキシでは対応可能な認証が以下です。

・パスワードベースのサインオン

・ヘッダーベースのサインオン

・統合Windows認証

SAMLによるシングルサインオン

アプリケーション プロキシを使用したオンプレミス アプリでのシングル サインオンについて | Microsoft Docs

 

ガルーンとADの連携ではLDAPを利用することも可能なのですが、

今回はAD-ガルーン間およびアプリケーションプロキシの両方とも統合Windows認証で設定をしています。

 

  • 前提

ガルーンサーバーが導入されており、AzureADもカスタムドメイン登録が終わっている状態にて作成

 

  • 設定

ガルーン側を統合Windows認証にするために以下の設定を追加

f:id:KKubo19:20210624200851p:plain

ガルーン側のIISの設定にてWindows認証が有効になっていることを確認

※英語でごめんなさい笑

f:id:KKubo19:20210624201032p:plain

Windows認証がない場合はサーバーの役割追加からIIS内のWindows認証を有効にします

これでAD-ガルーン間の統合Windows認証の設定は完了です。

 

次にアプリケーションプロキシ側を設定します。

AzureAD管理センターにログオンし、エンタープライズアプリケーション-アプリケーションプロキシを選択し、「コネクタサービスのダウンロード」から規約に同意してダウンロードをクリック

f:id:KKubo19:20210624201427p:plain

ダウウンロードできたモジュールをコネクターサーバー上で実行

Installをクリック

f:id:KKubo19:20210624201534p:plain

AzureADの管理アカウントでサインイン

f:id:KKubo19:20210624201647p:plain

インストールが完了したらCloseをクリック

f:id:KKubo19:20210624201706p:plain

AzureAD管理センターのエンタープライズアプリケーションよりすべてのアプリケーションを選択し、新しいアプリケーションをクリック

f:id:KKubo19:20210624201825p:plain

オンプレミスのアプリケーションの追加をクリック

f:id:KKubo19:20210624201936p:plain

名前にアプリケーションの管理名称を入力

内部URLに社内からアクセスしているガルーンサーバーのURLを記載

外部URLは適切に選択してください。

※内部URLと外部URLを同じURLにするには証明書が必要となるので今回は別で実施します。

事前認証をAzure Active Directory

として追加をクリック

f:id:KKubo19:20210624201947p:plain

作成が完了したら

AzureAD管理センターのエンタープライズアプリケーション内のすべてのアプリケーションから上記で作成した名称のアプリケーションをクリック

f:id:KKubo19:20210624202434p:plain

ユーザーとグループの割り当てをクリック

f:id:KKubo19:20210624202539p:plain

今回はこんな感じで追加してあります。

※追加する際はユーザーまたはグループの追加から追加してください

f:id:KKubo19:20210624202622p:plain

シングルサインオンからWindows統合認証をクリック

f:id:KKubo19:20210624202822p:plain

内部アプリケーションSPNには

http/サーバー名

今回はgaroonというホスト名のサーバーなので

http/garoon

http/

ってところが重要(http://じゃないよ)

委任されたログインIDは「ユーザープリンシパル名のユーザー名部分」としています。

これはAzureADのユーザー名がUserA@xxx.com

ADのユーザー名がxxx\UserAという完了で作成しており

UserAを一致させるために「ユーザープリンシパル名のユーザー名部分」を利用しています。

設定したら保存をクリック

f:id:KKubo19:20210624203044p:plain

ADサーバーにログオンし、ActiveDirectoryのユーザーとコンピューターをクリック

f:id:KKubo19:20210624203518p:plain

ネクターサーバーをダブルクリック

今回はConnecterVMとしています。(スぺスはミスったのでご了承を笑)

f:id:KKubo19:20210624203728p:plain

委任タブよりGaroonサーバーに対しhttpの通信を許可

※追加ボタンからサーバーを検索してプロトコルを選択できます。

f:id:KKubo19:20210624203848p:plain

 

これで設定は完了!!

 

  • いざアクセス

エンタープライズアプリケーション内の作成したアプリケーションのプロパティにユーザーのアクセスURLの記載があります。

f:id:KKubo19:20210624204342p:plain

アクセスするとAzureADのサインイン画面が表示される

f:id:KKubo19:20210624204527p:plain

多要素認証の設定をしていればその画面が表示

f:id:KKubo19:20210624204720p:plain

こんな感じで表示されるはずです!!
※文字やフォーム崩れが結構おきるようなのでご注意を

f:id:KKubo19:20210624211526p:plain

今回はガルーンの設定自体何にもしていないので何も表示されません。。。。笑

 

ちなみにアクセスの際はちゃんとADとAzureADが同期されたユーザーで実施してくださいね!!

ドメインに入っていない端末からのアクセスは試していないのですが余裕があればまたどこかで試してみたいと思います!

 

  • まとめ

前々から試してみたかったアプリケーションプロキシ!試してみたら最後のアクセスで何度か詰まりました!笑

皆さんも実施する際は余裕をもってやってみていただくと良いかもしれません!

今回は実施していませんが、条件付きアクセスもあわせて設定可能なのでよりセキュアに社内アプリケーションにアクセスさせられるのではないかと思います!

ぜひ一度使ってみては??

 

  • 最後に!

Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!