こんにちは、技術1課の小倉です。
2020/5/19にアップデートがあり、AWS Client VPNでSAMLによるフェデレーション認証ができるようになりました!
AWS Client VPN で SAML 2.0 経由のフェデレーション認証のサポートを開始
今までは、クライアント証明書による相互認証、Active Directory によるユーザー認証でしたが、さらにSAML2.0での認証ができるようになりました。SAMLとはシングルサインオンを実現するときに使われる仕組みで、認証情報を受け渡しするための決まり事です。フェデレーションは異なるサービス間で認証情報を連携することです。
今回の設定例ですと、Client VPNを接続するために、Oktaというフェデレーション認証を提供するサービスで認証することでVPN接続ができる設定にしています。ですから、今までよりも簡単にClient VPNの認証設定ができるようになりました。
AWS Client VPNとは
普段利用している端末からAWSに対してVPN接続して、AWSリソースに安全にアクセスできるようにする、クライアントベースのマネージドVPNサービスです。
AWS公式サイト : AWS Client VPN とは
料金は、AWS Client VPNのエンドポイント数と接続時間でお金がかかります。最新の料金はAWS公式サイトでご確認ください。
AWS VPN の料金
設定手順
こちらのAWSブログを参考に実施しました。
Authenticate AWS Client VPN users with SAML
事前準備が必要なもの
- AWSアカウント
- EC2インスタンスが起動しているAmazon VPC
- VPCのセットアップ
- EC2インスタンスの起動(VPN接続確認用)
- AWS Certificate Manager(ACM)にインポートされたプライベート証明書
- SAML IdPホスティングユーザーおよびグループ情報
- 今回はOktaを利用、他のIDプロバイダーは将来サポート予定とのこと
- 最新のAWSクライアントVPNソフトウェアを実行しているデスクトップ(WindowsまたはmacOS)
Oktaの設定
事前にOktaのアカウント作成をしますが、作成するのは30日間無料のTrialで問題ありません。
アカウント作成後、Oktaにログインします。
上のメニューの[Applications]をクリックして、[Add Application]をクリックします。
Add Application画面で、ClientVPNを検索し、結果にでてきた[AWS ClientVPN]をクリックします。
AWS ClientVPN画面で[Add]をクリックします。
Add AWS ClientVPN画面で、[Done]をクリックします。
Oktaで、AWS ClientVPNの設定をしていきます。
[Sign On] - [Edit]をクリックします。
下にスクロールし、以下を入力してから、[Save]をクリックします。
- memberOfのプルダウンからMatches regexを選択し、値に .* と入力
- Portに35001と入力
- Identity Provider metadataのリンクを右クリックし、名前をつけて保存をします(あとで使います)。
IAMのIDプロバイダーの設定
Oktaでダウンロードしたメタデータ情報を使って、IDプロバイダーの設定をします。
マネジメントコンソールでIAMを開きます。
ナビゲーションペインの[IDプロバイダー]をクリックし、[プロバイダの作成]をクリックします。
以下の項目を入力し、右下の[次のステップ]をクリックします。
- プロバイダーのタイプ : SAMLを選択
- プロバイダ名 : 任意の文字列(今回はtest)
- メタデータドキュメント : Oktaからダウンロードしたファイルを選択
内容確認して、右下の[作成]をクリックします。
Client VPN エンドポイントの作成
クライアントからVPN接続をするためのエンドポイントを作成します。
マネジメントコンソールでVPCを開きます。
ナビゲーションペインの[クライアントVPNエンドポイント]をクリックし、[クライアントVPNエンドポイントの作成]をクリックします。
クライアントVPNエンドポイントの作成画面で、以下を入力し、右下の[クライアントVPNエンドポイントの作成]をクリックします。
- 名前タグ : 任意の文字列 (今回はClientVPNtestにしています)
- クライアントIPv4 CIDR : VPN接続時にクライアントにアサインするIPv4アドレス
- サーバー証明書ARN : ACMにインポートした証明書を指定
- 認証オプション : ユーザーベースの認証を使用を選択し、統合認証を選択
- SAMLプロバイダーARN : 先ほど作成したIAM IDプロバイダーを選択
- クライアント接続の詳細を記録しますか? : 今回はいいえを選択(はいにするとCloudWatchにログを保存できます)
VPN接続後にアクセスできるVPCを設定します。
作成したクライアントVPNエンドポイントを選択し、下の[関連付け]タブをクリックし、[関連付け]をクリックします。
接続するVPCとサブネットを選択し、[関連付け]をクリックします。
認証設定をすることで接続元を制限することができますが、今回はOktaに登録しているユーザすべてアクセスできる設定にします。
作成したクライアントVPNエンドポイントを選択し、下の[認証]タブをクリックし、[受信の承認]をクリックします。
認証ルールの画面で、アクセスを有効にする送信先ネットで、接続先のVPCのCIDRを入力、アクセスを付与する対象はすべてのユーザーにアクセスを許可するを選択し、[認証ルールの追加]をクリックします。
これで、一通り設定が終わりました。
クライアントVPNエンドポイントを選択し、画面上の[クライアント設定のダウンロード]をクリックし、クライアント設定のダウンロード画面で[ダウンロード]をクリックします。
クライアントからVPN接続
AWS VPN Clientを起動します。
[ファイル] - [プロファイルの管理]をクリックします。
プロファイルを管理画面で、[プロファイルを追加]をクリックします。
プロファイルを追加画面で、表示名とVPN設定ファイルを指定(先ほどクライアントVPNエンドポイントからダウンロードしたファイル)し、プロファイルを追加をクリックします。
プロファイルを管理画面に作成したプロファイルが表示されるので、[完了]をクリックします。
これで、準備ができました。
[接続]をクリックして、VPN接続をしてみましょう。
ちょっと待つとブラウザでOktaの認証画面が表示されるので、ログインするとVPN接続が完了します。
クライアントからAWSにあるEC2にpingを実行するとpingが通ります。
接続を切りたいときは、[切断]をクリックします。
まとめ
AWS Client VPNでSAMLによるフェデレーション認証ができるようになりました。今までよりも設定や管理が楽になりますので、ぜひお使いいただければと思います。
また、VPN接続時のトラブルシュートはAWS公式サイトにもいくつかよくあることがのっていますので、もしつながらないときなどは参考にしてみてください。ちなみに私は手順を確認していたときにVPN接続ができずに原因調査をしていたのですが、AWSのトラブルシュートのページに対応方法がのっていて、対応通りに実施したところ無事に接続できるようになりました。
また、本ブログの内容は2020/5/27(水) 12:00よりYouTube Liveで配信される「30分でわかる AWS UPDATE!」でも取り上げる予定ですので、ぜひご覧ください!
もしリアルタイムで見逃しても、アーカイブ動画から内容を確認できます。
https://youtu.be/5T80jQwSHwI
小倉 大(記事一覧)
アプリケーションサービス部ラーニングエクスペリエンス課 札幌在住
AWSトレーニングの講師をしています。
最近は5歳の息子と遊ぶのが楽しいです!
Twitter: @MasaruOgura