ボクシルのプロダクトマネージャーをしている笹原です。
今年頭からエンジニアではなくプロダクトマネージャーに業務内容をシフトしています。
しかし、エンジニアブログは技術ネタを書こうかと思い、表題の件をサクッと試してみました。
- AWS Client VPNとは
- AWS Client VPNのクライアント認証とユーザー管理
- AWS SSOとは
- AWS SSOでのカスタムSAML2.0アプリケーションの追加
- SAML2.0認証を利用したAWS Client VPNエンドポイントの作成
- 実際に使ってみる
- まとめ
AWS Client VPNとは
AWS Client VPNとは、AWSが提供しているクライアントベースのマネージドVPNサービスです。
マネージドなVPNサービスということでリモートワークが増えた今年から利用も増えているのではないかと思います。
詳しく知りたい方は、以下の記事を御覧ください!
AWS Client VPNのクライアント認証とユーザー管理
このサービスでのクライアント認証は2パターン用意されていました。
- Active Directoryを用いた認証
- 個々のユーザーに証明書を発行しての相互認証
そんな中、第3の認証方式としてAWS Client VPNがSAML認証のサポートを開始したというリリースが出てきました!
SAML認証が可能ということであれば、ユーザー管理をSAMLベースのIDプロバイダー(IdP)側に持たせることが可能になり、何かしら特定のSSOサービスなどを使っている場合にユーザー管理を一元化できます。
実際に使ってみようと思ってドキュメントを見てみると、テストされたSAMLベースのIdP設定リソースは現在はOktaのみでした。
残念ながら会社ではOktaを利用していないので、他のIdPを使えないかと試してみたのがAWS SSOです。
AWS SSOとは
AWS SSOとは、『複数のAWS アカウントやビジネスアプリケーションへのSSOアクセスを簡単に集中管理できる』と謳われているSingle Sign-Onサービスです。
2017年にリリースされているサービスですが、東京リージョンにはまだ来てません。
上記の通り、AWSアカウント以外の一般的なクラウドアプリケーションへのSSOアクセスも可能で、SAML2.0認証を用いたカスタムアプリケーションの設定も可能です。
ということで、早速試していきましょう!
AWS SSOでのカスタムSAML2.0アプリケーションの追加
AWS SSOを開始するにあたっての設定はドキュメントに記載されている以上のことはしていないので割愛し、AWS SSOを利用している状態から始めていきます。
AWS Single Sign-On とは - AWS Single Sign-On
まず、AWS SSOのコンソールを開きます。
まず、 新規アプリケーションの追加
ボタンを押します。
アプリケーションカタログから接続するアプリケーションを選択する画面になりますが、
まだAWS SSOがAWS Client VPNのService Provider設定を登録していないようなのでカスタムSAML2.0アプリケーションの追加ボタンを押します。
この画面で入力する必要があるのはアプリケーションのメタデータです。
AWS Client VPNのドキュメントに記載されているサービスプロバイダー情報を入力します。
アプリケーション ACS URL: http://127.0.0.1:35001
アプリケーション SAML 対象者: urn:amazon:webservices:clientvpn
また、後ほどAWS Client VPNの設定をする際に利用するのでAWS SSO SAML メタデータファイルも落としておきます。
最後に以下の通りにサービスプロバイダーであるAWS Client VPNに連携されるSAMLアサーションの属性マッピングを行います。
アプリケーションのユーザー属性 | マッピング | 形式 |
---|---|---|
Subject | ${user:subject} | emailAddress |
NameID | ${user:email} | basic |
上記が実際に試した際に動作した最小構成ですが、AWS Client VPNのドキュメントを見ると以下も必須と記載されています。
- FirstName
- LastName
- memberOf
最後に割当ユーザータブからAWS Client VPNを利用できるユーザーを割り当てたら、AWS SSO側のカスタムSAML2.0アプリケーションの追加設定は完了です!
SAML2.0認証を利用したAWS Client VPNエンドポイントの作成
次にAWS Client VPNの設定をしていきます。
その前に下準備として、先程落としたAWS SSOのSAML メタデータファイルをIAMから登録しおきます。
プロバイダの作成
ボタンを押します。
プロバイダーのタイプはSAMLを選択し、プロバイダ名はわかりやすい自由な名前を入力し、メタデータドキュメントを選択して作成します。
以上ができたら、下準備は完了です。AWS Client VPNエンドポイントを作成していきましょう!
既存の通常の作成フローと異なるのは認証情報の設定欄のみです。
認証オプションをユーザーベースの認証を使用を選択し、そのうち統合認証を選択します。
SAML プロバイダーARNを選択することになりますが、これは、先程IAMから登録した際に作成されたリソースを選択しましょう。
他の部分は通常の手順通りで作成することができます!!
実際に使ってみる
実際に利用する際に必要なのは以下の3つです。
- AWS SSOからAWS Client VPNの利用を割り当てられたユーザー
- AWSが提供する専用クライアント
- こちらからダウンロード: AWS Client VPN Download | Amazon Web Services
- AWS Client VPNのクライアント設定
- AWS Client VPNのコンソールからダウンロード
それでは利用していきましょう。
まず、AWSが提供する専用クライアントを起動します。
メッセージの言われるがまま、[ファイル] > [プロファイルを管理]を押します。
プロファイル管理モーダルが開かれるのでプロファイルを追加していきます。
VPN設定ファイルはAWS Client VPNのコンソールからダウンロードしたクライアント設定ファイルを選択します。
最初のモーダルに戻ると接続準備完了となっているので接続すると、ブラウザが開いてログイン画面が表示されます。
AWS Client VPNの利用を割り当てられたAWWS SSOのユーザーでログインします。
ログインが成功すると上記のメッセージが表示されます。
AWSが提供する専用クライアントに戻ると接続済みとなり、これでVPNの接続が完了しました!
まとめ
今回はAWS SSOをIdPとしてAWS Client VPNをSAML認証で利用してみました。
VPNはリモートワークは進んだ中で利用が加速したサービスだと思うので、
そこに対して機能が追加されユーザーに選択肢が増えるのは嬉しいことですね。
現在はOktaのみがテストされたIdPとなっており、かつ、私が試した限りだと、
GSuiteはACS URLがhttpだとカスタムアプリケーションができなかったりとまだ制限もありそうですが、これからの開発に期待です!