Alibaba Cloud IDaaSを使ってVPN Gatewayに2要素認証を導入してみた

f:id:sbc_saito:20210318184906p:plain

皆様こんにちは! プロダクト技術課の斎藤です。

先日、Alibaba Cloud国際サイトで「IDaaS」というプロダクトのPublic Preview(beta版)がリリースされました。
VPN Gatewayと組み合わせることで、SSL-VPN接続時にID+パスワード認証を追加することが出来るようなので早速試してみました。

IDaaSとは

IDaaS(Identity as a Service)とは、クラウド上の様々なサービスのID管理を一元的に行うクラウドサービスのこと。

クラウドサービス間でシングルサインオンが可能になったり
利用するユーザー側においてパスワード管理が減り、利便性向上にも貢献すると言われております。

代表サービス例:Okta、Onelogin、Azure Active Directoryなど

構成図

今回はこのような構成でVPN Gateway接続時に、従来の証明書認証に加えてADのユーザIDとパスワード情報も加えることで2要素認証を実現します。 f:id:sbc_saito:20210318185334p:plain

Alibaba Cloud東京リージョンにVPN Gateway(SSL-VPN)を構築して
Windows ADサーバは別VPCの東京リージョンに配置しています。
IDaaSはPublic Previewなのでシンガポールリージョンのみの対応となりますが
IDaaSと各インスタンス間は接続時の認証通信のみですので、リージョンの場所で大きく不利になることは無いと思います。

IDaaSインスタンスを購入

Alibaba Cloudにログインし、コンソールは英語表示に切り替えておきましょう。
プロダクト検索バーで「IDaaS」と入力すればHITするはずです。

プロダクトのコンソール画面へ遷移すると、このようなエラーが表示されるかもしれません。 f:id:sbc_saito:20210318153253p:plain

これはリージョン選択が「東京リージョン」になっており、IDaaSがリリースされていないリージョンのためです。

なので画面左上部よりシンガポールリージョンを選択して、Webブラウザのリロードをしましょう。 f:id:sbc_saito:20210318153532p:plain

ちゃんとIDaaSのコンソール画面が開きましたね。右側にある[Buy IDaaS]ボタンを押してインスタンス作成を進めます。 f:id:sbc_saito:20210318154348p:plain

Public Preview版なので選択可能な要素はなく、価格も$0です。
このインスタンスは1ヶ月間有効で、期限を越えると無効のインスタンスとなります。

規約同意いただけたら、右下の[Buy Now]ボタンをクリックします。

f:id:sbc_saito:20210318154827p:plain

その後決済画面になりますが、こちらも購入処理を進めます。(繰り返しですが$0です)

IDaaSのコンソール画面に戻ると、インスタンスが正常に作成されていますね。f:id:sbc_saito:20210318155516p:plain

インスタンスIDをクリックして、早速設定していきましょう。

認証ソース選択

IDaaSの認証ソースとしてADサーバを追加します。

  1. 左カラムから「Authentication Sources」を選択
  2. Add Authentication SourceからLDAPを選択

f:id:sbc_saito:20210318155646p:plain

続いてActive Directroyの情報を入力します。
ADは今回Alibaba Cloud上に作成していますが、オンプレや他社クラウド上でも問題ありません。
グローバルIPでアクセスできればOKです。

3.「Name」は任意
4.「LDAP URL」はldap://<ADのIP>
5.「LDAP Base」はDN形式でドメイン名を入力。
私のADドメインはMS界隈でお馴染みのcontoso.comとしています
6.「LDAP Account」はDomainAdmin権限のあるADユーザをDN形式で入力
7. 上記ユーザのパスワードを入力
8. ユーザ名の抽出フィルタを入力します
ADの場合はsAMAccountName = $ username $

f:id:sbc_saito:20210318160052p:plain

オプションの設定です。

9.「Verify with userPassword」 LDAPに登録されたパスワードとIDaaSが管理するパスワードの比較を行うには有効化
10.「Update IDaaS Password」 LDAPを経由してIDaaSにログインした後、IDaaSで管理するLDAPユーザのパスワードを更新するには有効化
11.「Display」認証ソースロゴをログイン画面に表示するには有効化
※今回のVPN Gateway構成では特に不要です

f:id:sbc_saito:20210318161850p:plain

設定が完了すると、Authentication Source Nameの一覧に「LDAP」が追加されます。
追加されたLDAPの「Status」トグルをオンにします。

f:id:sbc_saito:20210318162948p:plain

Alibaba CloudプロダクトとAD連携させるための設定を行います。

12. 左カラムの「Security Settings」→中央タブ「Cloud Product AD Authentication」へ遷移する
13.「AD Authentication Source」から先ほど設定したLDAP設定を選択
14. Enableトグルをオンにして、Saveする。

f:id:sbc_saito:20210318163316p:plain

LDAPユーザの同期

Alibaba Cloud IDaaSはActive Directoryと同じくディレクトリ機能も有しています。
IDaaSで認証するためには、ADのディレクトリ情報をIDaaSのディレクトリと事前に同期させる必要があります。

  1. 左カラムの「Organizations and Groups」→「Configure LDAP」を選択 f:id:sbc_saito:20210318165212p:plain

  2. [Create]ボタンをクリック

f:id:sbc_saito:20210318165220p:plain

AD情報を再び入力していきます。

3.「AD/LDAP Name」は任意の名前
4.「Server Address」はADのIPアドレス
5.「PortNumber」はADなら389が標準ポート
6.「Base DN」は参照の認証を利用した際にユーザを検索するルートとなるエントリ地点を入力。
今回はdc=contoso,dc=com
7.「Administrator DN」はAdministrator権限ユーザをDNで指定する
今回はcn=administrator,cn=Users,dc=contoso,dc=com
8.「Password」は上記ユーザのパスワード
9.「Type」はWindowsAD
10.「From LDAP to IDaaS」はEnable
11.「Provision from IDaaS to LDAP」はEnable f:id:sbc_saito:20210318165421p:plain

続いて同期するにあたっての照合条件を設定します。

1. タブを「Field Matching Rules」に切り替える
2.「Username]はcn
3.「External ID」はuid
4.「Password Attribute」はunicordPwd
5.「User Unique Identifier」はDistinguishedName
6.「Email」はmail
7.「Phone Number」はtelephoneNumber
8.「Default Password」は任意のパスワード
最後にSaveします f:id:sbc_saito:20210318165443p:plain

同期するための準備が完了しました。

IDaaSとADの同期

早速IDaaSとADのディレクトリを同期してみましょう。

  1. Import→LDAP-Accountを選択

f:id:sbc_saito:20210318175745p:plain

2.先ほど追加した同期先ADサーバ名の右にある「Import」を押下し、表示された画面で「OK」をクリック

f:id:sbc_saito:20210318171117p:plain

3.ユーザの追加が成功すれば、各ユーザのVerification Result列に「Success」と表示される。画面右上の「Confirm Import」ボタンをクリックしてインポートを完了させる

f:id:sbc_saito:20210318171124p:plain

※1ユーザでもエラーがあると下記画像の様にインポートが失敗する。
エラーの原因を見直し再度試すか、インポートするユーザから除外(Remove)し
「Confirm Import」ボタンを押下する
(メールと電話番号フィールドは入力必須)

f:id:sbc_saito:20210318180132p:plain

これでIDaaS側の設定は完了です!

VPN Gateway側の設定

VPN GatewayとSSL Serverのインスタンスは既に作成済みです。
ユーザ認証を導入するためにSSL Serverに下記の編集を行います。

1.「Advanced Configuration」のトグルをオン
2.「Two-factor Authentication」のトグルをオン
3.「IDaaS Instance Region」からシンガポール リージョンであるap-northeast-1を選択

f:id:sbc_saito:20210319093653p:plain

4.初回IDaaS選択時は権限が無い為「You hace no permissions…」のリンクをクリックする f:id:sbc_saito:20210318180411p:plain

5.VPN GatewayにIDaaSへのアクセス許可を与える f:id:sbc_saito:20210318180417p:plain

6.「IDaaS Instance」から先ほど作成したIDaaSインスタンスを選択してOKをクリックして設定を完了する。 f:id:sbc_saito:20210318180405p:plain

さっそく接続

クライアント端末にクライアント証明書をインポートし
OpenVPNクライアントソフトでVPN Gateway宛に通信を試行すると
ユーザとPWを求められる画面が表示されました!
(本検証ではTunnelblick 3.8.4aを使用) f:id:sbc_saito:20210318180426p:plain

IDaaSにインポートしたADユーザのユーザ名とPWを正しく入力し
OKボタンをクリックすると接続が成功しました f:id:sbc_saito:20210318180430p:plain

まとめ

IDaaSとVPN Gatewayを連携させて、ADユーザ情報を用いてSSL-VPNの2要素認証を行えました。

IDaaSは2021年3月現在、まだPublic Preview版の製品なのでご利用期間1か月限定です。
まだご提案することは難しいですが、先行して使い勝手を試してみました。
今後正式版になれば、もっといろんなことができるかも!?
注目のプロダクトですね!