継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

AWS Clinet VPN のユーザー認証を SAML 認証で行う

タダです.

前回の AWS Client VPN のユーザー認証を Active Directory で行いました.今回はもう1つのユーザー認証の方式の SAML 認証を検証した内容をまとめます.別記事でも触れてますが,AWS SSO を業務上投入してて,AWS SSO で認証できるのかを確認したかったので今回検証したみた次第です.

sadayoshi-tada.hatenablog.com

検証シナリオ

シナリオとしては,前回 Simple AD を使って認証したのを AWS SSO 認証に変える以外,それ以外の設定は変わりません.認証のフローは公式ドキュメントにて解説されておりました.

  1. AWS Client VPN と連携するには、選択した IdP で SAML ベースのアプリを作成するか、既存のアプリを使用します。

  2. AWS との信頼関係を確立するために IdP を設定します。リソースについては、「SAML ベースの IdP 設定リソース」を参照してください。

  3. IdP で、組織を IdP として定義するフェデレーションメタデータドキュメントを生成し、ダウンロードします。この署名付き XML ドキュメントは、AWS と IdP の間の信頼関係を確立するために使用されます。

  4. クライアント VPN エンドポイントと同じ AWS アカウントに IAM SAML ID プロバイダーを作成します。IAM SAML ID プロバイダーは、IdP によって生成されたメタデータドキュメントを使用して、組織の IdP と AWS の信頼関係を定義します。詳細については、IAM ユーザーガイドの「SAML ID プロバイダーの作成」を参照してください。後で IdP のアプリ設定を更新する場合は、新しいメタデータドキュメントを生成し、IAM SAML ID プロバイダーを更新します。

  5. クライアント VPN エンドポイントを作成します。認証タイプとしてフェデレーション認証を指定し、作成した IAM SAML ID プロバイダーを指定します。詳細については、「クライアント VPN エンドポイントを作成する」を参照してください。

  6. クライアント設定ファイルをエクスポートし、ユーザーに配布します。AWS が提供するクライアントの最新バージョンをダウンロードし、これを使用して設定ファイルをロードして、クライアント VPN エンドポイントに接続するようにユーザーに指示します。または、クライアント VPN エンドポイントのセルフサービスポータルを有効にした場合は、セルフサービスポータルにアクセスして設定ファイルと AWS が提供するクライアントを取得するようにユーザーに指示します。詳細については、「セルフサービスポータルにアクセスする」を参照してください。

f:id:sadayoshi_tada:20201230190102p:plain 引用元:AWS クライアント VPN 認証ワークフロー図より引用

設定内容

SAML 認証設定としてやるのは①AWS SSO のカスタム SAML アプリケーションの登録,属性値の登録,ユーザーの追加,②IAM にカスタム SAML メタデータの登録,③SAML 認証でエンドポイントの再作成および Client VPN 各種再設定です.

AWS SSO のカスタム SAML アプリケーションの登録,属性値の登録,ユーザーの追加

SSO のアプリケーションのページに移動し,新規アプリケーションの追加 > カスタム SAML 2.0 アプリケーションの追加 を押します.表示名や説明は任意の値を入力し,AWS SSO メタデータ セクションのメタデータファイルをダウンロードしておきます.

f:id:sadayoshi_tada:20201230192350p:plain

アプリケーションメタデータセクションで手動でメタデータ値を入力します.ドキュメントに記載の下記2つの設定値を転記し,保存します.

Assertion Consumer Service (ACS) URL: http://127.0.0.1:35001

Audience URI: urn:amazon:webservices:clientvpn

f:id:sadayoshi_tada:20201230192313p:plain

次に,属性値の登録で Subject と NameID を登録してます.他にも,FirstName,LastName,memberOf という属性も追加できますが,今回は最小の検証を目的にしているので使っていません.

f:id:sadayoshi_tada:20201230192716p:plain

属性:説明

NameID:ユーザーの E メールアドレス。

FirstName:ユーザーの名。

LastName:ユーザーの姓。

memberOf:ユーザーが属するグループ (複数も可)。

最後に,VPN の認証に割り当てたいユーザーを追加して AWS SSO の設定は完了です.

f:id:sadayoshi_tada:20201230193040p:plain

②IAM にカスタム SAML メタデータの登録

前項でダウンロードしたメタデータのファイルを IAM に登録します.IAM のサービス画面からID プロバイダ > プロバイダを追加 を押します.プロバイダ名を任意のものにして,ダウンロードしたメタデータファイルをアップロードしてプロバイダを追加ボタンを押します.

f:id:sadayoshi_tada:20201230200032p:plain

SAML 認証でエンドポイントの再作成および Client VPN 各種再設定

Client VPN のエンドポイントを再作成します.これまでと変わるのは認証情報のセクションで,ユーザー ベースの認証を使用 > 統合認証 を選択し,前項で登録した IAM の ID プロバイダー名を指定すること以外は他の設定は特に変更しないこととします.また,エンドポイント作成後の受信の認証ルールやルートテーブルもこれまでの記事と同一の設定にしています.

f:id:sadayoshi_tada:20201230200300p:plain

動作確認

エンドポイントの設定が完了後クライアント設定ファイルをダウンロードして VPN クライアントアプリのプロファイルを追加しました.接続を試みると AWS SSO の認証画面が表示されます.ユーザー認証情報を入力し,認証が成功すると画面遷移して http://127.0.0.1:35001 と認証が終わったので画面閉じてもいいと表示されます.

f:id:sadayoshi_tada:20201230200721p:plain f:id:sadayoshi_tada:20201230200809p:plain

VPN 接続確立を確認したところ,接続がうまく行っていることを確認できました.

f:id:sadayoshi_tada:20201230201504p:plain

まとめ

Client VPN のユーザー認証方式として SAML の認証パターンを試したので検証内容をまとめました.ACS のURLに指定するのが http://127.0.0.1:35001で画面遷移の結果をみていてなんとももどかしい感想を持ちました...公式では Okta と Microsoft Azure Active Directory など別の IdP と連携したパターンを紹介もあり,ちょっと違ったパターンも試したいなと思ったのでその結果もまたブログにしてみたいなと思います.

docs.aws.amazon.com

関連記事

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com