今回は、Azure Active Directoryを使用してオンプレにあるZabbixに対して、パスワードベース認証を設定して、外部から安全にアクセスできるようにしてみたいと思います。
期待する目標
本手順で期待する目標は以下の通りです。
- Azure ADを使用してパスワードベース認証の設定ができる
- Azure AD アプリケーションプロキシを使用してオンプレアプリに外部からアクセスする
前提条件
本手順で使用する環境は以下の通りです。
- Microsoft Azureのアカウントを所有していること
- Azure Active Directoryを使用していること
- Azure Active Directory Premium P2のライセンスを所有していること
- Azure AD アプリケーションプロキシを構築済み
- オンプレのWebアプリケーションが稼働していること
Azure ADアプリケーションプロキシの構築については、以下の記事に手順を記載しています。
また、パスワードベース認証を行うオンプレのWebアプリとして、今回はZabbixを使用します。
Chrome拡張機能のインストール
Azure ADによるオンプレアプリを使用する場合は、ChromeにMy Apps Secure Sign-in Extensionという拡張機能をインストールしておきます。
My Apps Secure Sign-in Extension – Chrome ウェブストア (google.com)

当環境では、デフォルトのブラウザとしてChromeを使用していますが、Microsoft Edgeでも同様の拡張機能が存在するので、Microsoft Edgeを標準ブラウザとして使用している環境の場合は、Edgeに拡張機能を入れます。
Azure AD アプリケーションプロキシの確認
Chromeに拡張機能を入れたら、Azureにログインします。

[Azureポータル]より、[Azure Active Directory]を選択します。

[Azure Active Directory]より、[アプリケーションプロキシ]を選択します。
[アプリケーションプロキシ]より、コネクタの状態が[アクティブ]となっていることを確認します。
新しいアプリケーションの作成
Azure AD アプリケーションプロキシのコネクタが正常に動作していることを確認したら、パスワードベース認証を行うアプリケーションの設定を行っていきます。

[Azure Active Directory]より、[エンタープライズアプリケーション]を選択します。
[すべてのアプリケーション]より、[新しいアプリケーション]を押下します。

[Azure AD ギャラリーの参照]より、[オンプレミスのアプリケーションの追加]を押下します。

[独自のオンプレミスのアプリケーションの追加]より、以下の設定を行います。
- メンテナンスモード : □
- 名前 : 任意のアプリケーション名を入力
- 内部URL : オンプレアプリのURLを入力
- 外部URL : 外部からアクセスするためのURLを入力
- 事前認証 : Azure Active Directory
- コネクタグループ : 作成したコネクタグループを選択
内部URLについては、オンプレ側のWebアプリケーションを入力しますが、外部からアクセスされる用のURLに関しては[アプリケーション名]+[Azure ADのドメイン]の構成になっています。

アプリケーションの追加が完了したら、追加したアプリケーションを選択します。

[作成したアプリケーション]より、[管理]-[ユーザとグループ]を押下し、パスワードベース認証を利用可能なユーザを選択していきます。

[ユーザとグループ]より、[ユーザまたはグループ追加]を押下します。

[割り当ての追加]より、[ユーザとグループ]下にある[選択されていません]のリンクを押下します。

[ユーザとグループ]より、作成したアプリケーションを使用するユーザまたはグループを選択し、[選択]を押下します。

[資格情報の割り当て]を押下し、以下の設定を行います。
- ユーザの代わりに資格情報を割り当てますか : いいえ (任意)
ユーザの代わりに資格情報の割り当てを行う場合、この画面からユーザに使わせたい資格情報を入力することができます。
ここで、資格情報を割り当てない場合、アプリケーションへログインする際に、ユーザが任意のIDとパスワードを入力させることで資格の割り当てが完了します。

[ユーザとグループ]より、追加したユーザが存在することを確認します。

作成したアプリケーションの[管理]-[シングルサインオン]を選択し、以下の設定を行います。
- サインオンURL : WebアプリケーションにサインインするURLを入力
サインオンURLは、独自に展開するWebサービスのログインする際に使用しているURLを入力します。
設定が完了したら、[xxxxパスワードシングルサインオン設定の構成]を押下します。

[サインオンの構成]より、ユーザ名とパスワードを入力するフィールドの検出を行います。
これは、Webサービスによって自動的に検出が可能な場合もありますが、自動的に検出が不可能なサービスもあります。
Zabbixの場合は、自動的に検出が不可能だったので、[サインインフィールドの手動検出]を選択し、[サインインフィールドの取り込み]を押下します。
[サインインフィールドの取り込み]を押下すると、サインインフィールドの検出するステータス画面とWebサービスの画面の2つのタブが自動的に開かれます。

パスワードベース認証を行うアプリケーション側のタブより、ユーザ名やパスワードを入力して実際にサインインします。

サインインフィールドの検出が成功すると、ポップアップで[Save captured login details?]と表示されるため、[OK]を押下します。

同時に開かれたタブを確認し、[メタデータはアプリケーション用に更新されました。]と表示されていることを確認します。

メタデータのキャプチャが完了したら、Azureポータル側に戻り、[正常にアプリにサインインできました]にチェックを入れ、[OK]を押下します。

シングルサインオンのタブより、エラーが出ていないことを確認します。
以上で、新しいアプリケーションの追加は完了です。
ユーザの資格情報の更新
ちょっと脇道にそれますが、前項でオンプレアプリにSSOができるユーザを選択しました。
通常であれば、構成後にユーザ自身が自分でIDとパスワードを入力することで、ログイン情報が記録されます。
しかし、ユーザが資格情報の入力を誤ったり、事前に資格情報だけ設定しておきたい場合があると思います。
今回は、そのようなことを想定し、Azureポータル上でユーザが使用する資格情報を更新していきたいと思います。

[ユーザとグループ]より、資格情報を更新したいユーザを選択し、[資格情報の更新]を押下します。

[資格情報の更新]より、以下の設定を行います。
- name : ログインするユーザ名
- パスワード : ログインする際に使用するパスワード
nameの部分ですが、アプリケーションによってキャプチャされるフィールドは異なるので、場合によってはemailとなっている場合もあります。
ユーザに対する資格情報を変更することでAzure側から資格情報を矯正することが可能です。
設定が完了したら、[保存]を押下します。
以上で資格情報の更新は完了です。
WebアプリケーションへSSO確認
アプリケーションの設定が完了したら、実際にSSOを行ってみます。
SSOを行う場合、Chromeの拡張機能を入れていれば、拡張機能からSSOを実行できますが、今回は王道でMicrosoftのマイアプリからアクセスしてみたいと思います。

以下のURLより、Microsoftのマイアプリへアクセスします。
URL : https://myapplications.microsoft.com/
アプリダッシュボードより、今回作成したアプリケーションのアイコンを選択します。

アプリケーションを実行するとMicrosoftアカウントのユーザ選択画面が表示されます。
ログインに使用するユーザを選択します。

パスワードベース認証とはいえ、SSOのためブラウザでAzure ADへのログインが完了していればパスワードを入力せずにZabbixへログインができました。

ここで使用されるURLは内部で使用するZabbixのアドレスではなく、Azure ADで作成したアプリケーションに設定されたURLになります。
これは、Azure AD アプリケーションプロキシのコネクタ経由でアクセスしているため、このようなURLに変更されます。
また、このURLは外部からもアクセスが可能で、Zabbix自体は外部公開していないため、外部からはアクセスできないのですが、Azure AD Proxyのおかげで内部だけに公開しているアプリケーションでも安全に外部からアクセスが可能になっています。
まとめ
前回構築したAzure AD アプリケーションプロキシを使用して独自のアプリケーションにパスワードベース認証を行ってみました。
パスワードベース認証とはいえ一度資格情報を登録してしまえば、SSOができるため非常に便利なサービスとなります。
また、補助的にAzure AD Proxy経由でオンプレにあるアプリケーションに外部からアクセスができるようになるため、リモートワークが進んだ今、かなり便利な機能なのではないでしょうか。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント