5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS Client VPN が SAML 対応したので Okta で試してみた

Last updated at Posted at 2020-10-01

はじめに

_s__o_ です。

2020 年 5 月 19 日付けで AWS Client VPN が SAML 認証に対応しました。

[参考] AWS Client VPN で SAML 2.0 経由のフェデレーション認証のサポートを開始

Client VPN の ID 認証は、これまでは AWS Directory Service の利用が必須でした。ID 認証のためだけに AWS Directory Service を立て、さらには ID 管理のためだけに AWS EC2 で Windows を立て……など、あまり費用対効果が良いとは言いがたいものでした (ちなみに、MFA を有効にする場合は、AWS Directory Service に加えて Radius サーバも別途必要。。。)。

そのため、この機能追加は、非常に嬉しいものです。パスワード管理が IdP 依存になるので、IdP でポリシーや更新 UI を用意しておけば、システムとは完全に独立した形でパスワードを管理することができるようになります。また、IdP が MFA に対応していれば、よりセキュアな仕組みでシステムを構築することができます。

というわけで、2020/07/06 現在、AWS Client VPN が公式で対応している「Okta」を使って、AWS Client VPN の SAML 認証を試してみたいと思います。

なお、この記事は Okta や SAML 設定の部分に重きをおいており、Client VPN 設定に関しては最低限のことしか記載していません。Client VPN も含んだ設定に関しては、後述の「参考」に記載のサイトが詳しいので、そちらを参照してください。

Okta 作業

Okta 初期登録

30 日間は無料で試用できるので、下記サイトを参考にしながら登録しました。

[参考] Okta を試してみた

特につまづいた部分はありませんでしたが、下記は留意しておく必要があります。

  • Gmail (gmail.com) など、自組織を特定できないメールアドレスでは初期登録 (管理者登録) 不可。プロバイダから付与されたメールアドレスなどで初期登録する必要あり
  • 2020/07/06 時点、初期登録 (管理者登録) の際は MFA 必須。事前に Okta の MFA 用ツール をダウンロードしておくとよい
  • 管理者画面はすべて英語。エンドユーザ画面は日本語対応

Okta エンドユーザ登録

エンドユーザを登録します。「Directory」 > 「People」 > 「Add Person」でサクッと登録できます。なお、エンドユーザに関しては、Gmail などのメールアドレスでも登録可能です。

01_Okta_ユーザ登録.png

Okta アプリ登録

アプリとして「AWS Client VPN」を登録します。「Applications」を選択して、検索欄に「AWS」と入力すれば、候補に「AWS Client VPN」が出てきます。「AWS Client VPN」を選択したら、特に設定などはいじらず、そのまま「Done」を押して登録です。

02_Okta_Client_VPN_設定画面.png

Okta アプリアサイン

「AWS Client VPN」を、先ほど作成したエンドユーザにアサインします。「Applications」 > 「AWS Client VPN」 > 「Assignments」でアサイン可能です。

03_Okta_Client_VPN_アサイン画面.png

Okta SAML 設定

AWS Client VPN 用の SAML 設定を行います。「Applications」 > 「AWS Client VPN」 > 「SSO」を選択して、「Edit」ボタンを押下します。設定画面に移行するので、下記 2 点を設定します。

  • memberOf を「Matches .*」で設定する。Okta のグループ情報を Client VPN に連携するため
  • Port を「35001」に設定する。AWS Client VPN から SAML 認証する際に使用するポート

04_Okta_SAML設定.png

設定が完了したら、AWS の IdP 登録で使用するため、メタデータの XML をダウンロードしておきます。下図赤枠部分を右クリックして、「名前を付けてリンク先を保存」で保存できます。

05_Okta_メタデータダウンロード.png

AWS 作業

IdP 登録

IAM から登録します。「IAM」 > 「ID プロバイダー」 > 「プロバイダの作成」で作成します。メタデータドキュメントでは、先ほどダウンロードしたメタデータを指定します。

06_AWS_IdP登録.png

Client VPN Endpoint 作成

ポイントのみ解説します。認証オプションで「ユーザーベースの認証を使用」を選択します。おそらく、前までは「Active Directory 認証」のみだけだったと思いますが、ここに「統合認証」の選択が増えているはずです。こちらを選択し、下部の「SAML プロバイダー ARN」で、先ほど作成した IdP の ARN を指定します。

07_ClientVPN登録.png

エンドポイント作成後、「関連付け」や「認証」で、接続先サブネットや接続許可 CIDR を指定します。詳しい手順に関しては、後述の「参考」のサイトを参照してください。

接続試行

エンドポイントの ovpn ファイル (プロファイル) をダウンロードし、AWS 公式の「AWS VPN Client」にインポートします。

ちなみに、私が試した範囲では、VPN クライアントから認証がフェデレートする (Okta の認証画面が表示される) のは、AWS 公式の「AWS VPN Client」だけでした。残念ながら、OpenVPN クライアント (使用したのは OpenVPN Connect) では、VPN クライアントから認証がフェデレートせず、認証失敗として接続不可でした。

話を戻して、プロファイルを「AWS VPN Client」にインポートしたら、「接続」を押して接続開始します。「ID 連携中...」と画面に表示された後、ブラウザで Okta の画面が立ち上がります。

08_Okta_SSO.png

ここで Okta のエンドユーザ ID/Password を入力し、「サインイン」ボタンを押下します。ID/Password が正しければしばらく待ったのち、「接続完了」と表示され、はれて AWS Client VPN に接続できるようになります。

まとめ

以上、AWS Client VPN の SAML 認証を Okta で試してみた、でした。

2020/07/06 現在、公式でサポート (公式に手順が記載) [参考] されている IdP は「Okta」ぐらいのようですが、「AWS SSO」で試して成功したような記事もあるようです。

[参考] AWS Client VPNでSAML認証がサポートされたのでAWS SSOで認証してみた

まだ出始めの機能なので、公式対応の IdP もこれからドンドン増えていくと思います。期待大です。

あと、個人的には、何とかして OpenVPN クライアントからも SAML 認証を利用したいなあと思っています。というのも、AWS 公式の「AWS VPN Client」は、2020/07/06 現在、proxy 接続に非対応のため、proxy を挟むような企業 NW 環境では、OpenVPN クライアント一択となってしまうからです。。。

いずれにせよ、SAML 認証をサポートしたことで、ちょっと煩雑だった Client VPN の ID 認証まわりがスッキリし始めているのは確かです。サポート状況をウォッチしていきつつ、その他のいろんな IdP も試していきたいと思います。

参考

[参考] 多要素認証の実装が簡単になるぞ!AWS Client VPN で SAML ベースのフェデレーション認証がサポートされました

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?